Introducing the Content Publisher Intent (BETA) — A New Era for Publishing in Canva

We’re thrilled to announce a brand new way to publish designs in Canva — the Content Publisher Intent :sparkles:

This is the next evolution of publishing, built on top of our Intents platform, unlocking a powerful, flexible, and scalable way for developers to bring their publishing experiences to Canva users across any surface.

Until now, publishing in Canva relied on legacy extensions that were limited to the Editor, or building an app in the SDK using export APIs. With the Content Publisher Intent, you can now create seamless, native-feeling publish experiences that work across Canva’s ecosystem — starting today with the Share menu in the Editor and the Apps tab (if it’s your only intent). In the future, this will expand automatically to more surfaces like Folders, the Content Planner, and more — no additional work required on your end, boosting your app’s visibility.

This new approach represents a major investment in how Canva enables publishing of designs and assets. It allows us to surface your app’s capabilities anywhere users are ready to share, giving your integration greater visibility and smarter contextual discovery. Users will find your publishing option exactly when it’s relevant, configure and preview settings in your custom UI, and publish with a single click.

What’s New

  • A simpler developer experience to build a single, scalable integration.
  • Accurate previews and platform-specific configuration (captions, tags, etc).
  • Support for all design formats, including video and multipage designs.
  • Seamless integration that feels native to Canva, accessible from multiple entry points.

Why It Matters

With over 260 million+ monthly active users, Canva offers unmatched reach for your publishing experience. Content Publisher Intent gives you access to these users in a way that’s smarter, more flexible, and more aligned with how people design and share today.

Beta Period

We’re opening a one-month beta period for all developers to explore, experiment, and share feedback ahead of our GA launch in early December.

This is your opportunity to help shape the next generation of publishing in Canva, as during this Beta we’ll be able to consider any breaking changes to support your use case. Let us know what you need by posting in the community forum with the tag publish-intent.

Get Started

Install the Beta release of intents that includes our new Content Publisher using npm install @canva/intents@2.0.1-beta.1

Explore our key resources to begin your journey:

If you already have an existing publish or export integration in the SDK, migrating to Content Publisher Intent will be simple.

We’re incredibly excited about this new direction for publishing in Canva — one that makes it easier than ever to bring your platform to millions of designers around the world. Start building today and help us shape the future of publishing.

Cheers,
The Canva Developers Team :purple_heart:

4 Likes

Love this! Giving it a shortly. Will be back with feedback :slight_smile:

Edit: This API doc feels incomplete. Is there an example project / code sample we can see on what’s the right way to implement this?

3 Likes

Hi Canva Team (@Ofir_Zeevi , we’re exploring the new Content Publisher Intent and have a few clarification questions to ensure we implement it correctly:

1. Dual-Mode App Support

Can a single Canva App support both:

  • a normal Apps SDK experience (sidebar app UI), and

  • the new Content Publisher Intent
    using the same app ID and codebase?

2. Access to designId and Metadata

When the publish handler is invoked, what data is provided in the context?
Specifically, will the designId be included?
Our integration requires the canonical Canva design ID to maintain a 1-to-1 sync between the Canva design and our platform.

3. Export Mechanics

Does the Content Publisher Intent:
A) perform the export automatically and provide the exported file(s)/asset(s) to the app,
or
B) require the app to trigger export manually using the Apps SDK Export API?

Thanks

Tom

2 Likes

Hi @sssaini1995, yes - an example is coming soon!
Keep an eye out over the next week :eyes:

1 Like

Hi @Tom, great to see you getting started! :grinning_face:

  1. Yes, thats correct :raising_hands:
  2. At the moment, we do not provide metadata support. We’re actively working on delivering this in the Beta period so do keep a watch out in our changelog over the coming weeks
  3. Option A is closest to the truth - your app provides a list of ‘formats’ and export configurations for each of them. When the user selects one from the dropdown in the Canva UI, this will be exported to your app.
1 Like

@Ofir_Zeevi good to know. Thanks for your response.

Thoughts: In order for this publish intent to be best aligned with the older publish extension api, and what can be acheived in an SDK app with export and designId, it would be important for the following to be included

  • design Id
  • user Id
  • enable the number of pages exported to be limited by the app and selected by the user

Hi @Tom , with the upcoming changes design id and limiting the number of pages exported should be possible.

We will add the user Id to our roadmap for consideration - did you have any additional details on the use case you’d have for this on your platform? You should be able to identify users from your end if they are authenticated.

Hi, we actually dont use the userId but to be equivalent to publish extension and to permit Frictionless authentication the canvaUserToken may be useful. In our SDK apps flow we use frictionless auth. We export and provide a temporary link to the user which expires shortly and their exported assets are also deleted/expire if the user does not capture it into their account on our platform at the temporary link. This enables very smooth experience within Canva and only a need to signup/login once they hit the temporary link on our site.

You can see other export centric SDK apps like ISSUU use this same mechanic for a good user experience. But overall the achieve this, it is best to have designID and perhaps CanvaUserToken. -TOm

@Ofir_Zeevi I just tried the intent and a couple of notes on the docs:

  • You have to install the packages as `npm i @canva/design@beta @canva/intents@beta`
  • I think the styles are not working - at least for the FormField (image below)

Hi @sssaini1995 , looks like your app is missing the app-ui-kit css styles. Did you try following this doc ?

1 Like

hey Canva app team,

Can you confirm that this is the only way to handle image/asset exports to other platforms from here on out? We recently noticed this updated language on export-only apps:

We see that there are still numerous apps that allow for both export and import functionality, but it’s possible these may have been “grand-fathered in” using legacy SDKs.

Note that we were in development of an export application, so adjusting to the Content Publisher approach will take some additional Dev work. As such, we wanted to be sure that this was the only potential option for getting our forthcoming app approved.

And if so, we assume the toggle below is the way to turn this on.

BTW, if you need to see our app as it exists today, the app id is AAGxRyDHHbc if this is needed or helpful for responding.

thanks in advance for any help you can offer.

-Marc

1 Like

Hi!
I wanted to ask if PDF export might become available in the future. It’s the only format our app supports, so having it would help us a lot.

We’re also very interested in the designId feature.

Thanks!

Hi @ottetz, I’m pleased to share that we have launched this during our Beta period and that its now available. You can find more details in our changelog here :raising_hands:

1 Like

Hi @whitperson, we are currently reviewing this policy. Watch this space for an update!

Thank you for the quick response and for making the changes — we really appreciate it!

Until recently, we could retrieve the design title via getDesignMetadata(), but that no longer seems to be possible. Are you planning to include the design name in contentMetadata?

Also, for regular apps we can export pdf_standard without specifying a size, but that doesn’t work with the Content Publisher intent. Is there a recommended workaround for this?

Hey @ottetz, happy to jump in and clarify a few things.

On the design name, we’re actively discussing this internally since getDesignMetadata no longer provides it. We’ll share an update once there’s a clear direction on whether it will be included in contentMetadata.

For the need to specify a size when exporting with the Content Publisher intent, this is part of creating a more predictable experience for developers. By explicitly defining the output size, you avoid any guesswork around dimensions and ensure the export is optimized for your platform. The goal is to make publishing more consistent and seamless.

Let me know if you have any other questions.

Cheers!

On the subject of the output size, it makes all the sense, but the problem is that it is not an optional parameter and only accepts a single value. Therefore, if our app supports all sizes and aspect ratios, we have to choose between fixing a single size on our side or adding complexity for the user by having them choose a value that we could already know from the design / PDF itself. Am I missing something?

On the other hand, with the design editor intent, the user can choose to flatten or even compress the PDF, which is really helpful in some specific cases. Is there a way for us to obtain the flattened PDF via the content publisher intent?

Thank you!