Canva's users love to share their content with the world. This page contains guidelines for creating publish extensions that seamlessly bridge the gap between Canva and third-party platforms.
The layout of a publish extension has a big impact on the behavior and appearance of the extension. Choosing the most appropriate layout ensures the best user experience. To learn about the available layouts (and when to use them), refer to Layouts.
When a user publishes their design, Canva provides the extension with URLs of the published assets. An extension must upload these assets to the destination platform and not simply link to the assets. This is because the asset's URLs expire after a short period of time.
You can configure a publish extension via the Developer Portal. It's important that this configuration lines up with the behavior of the destination platform. In particular, ensure that:
The destination platform accepts the published designs in the configured formats.
If a user publishes multiple pages, each page of the design is uploaded to the destination platform.
If a publish extension uses the Flat list or Nested list layout, add a search field to the extension to let users search for containers. This is more efficient than requiring users to navigate a list of options.
When a user publishes a design, the extension must provide a URL that allows the user to view the design in the context of the destination platform. For example, if a user publishes a design to Twitter, they should see a link to their tweet.
If the destination platform expects further action, the URL provided by the extension should take the user to where they can complete that action. For example, a website creation tool that lets users choose where to insert their published design should take the user to a page where the user can make that choice.
If the extension requires users to provide a message, the destination platform should use that message in a meaningful way. In other words, don't require users to provide a message for no particular reason.