--- title: Sidekick app extensions description: Use app extensions to integrate your app with Sidekick source_url: html: 'https://shopify.dev/docs/apps/build/sidekick' md: 'https://shopify.dev/docs/apps/build/sidekick.md' --- # Sidekick app extensions **Developer preview:** We're selecting developer partners to get limited early access and provide feedback on Sidekick app extensions. [Submit your interest](https://docs.google.com/forms/d/e/1FAIpQLScxM8VQao5GGlIF-8TeiYQp-ucQiTFwSai35oDBzDuIpN5O7g/viewform?usp=dialog) and we'll reach out if you're selected. Sidekick is the AI assistant built into Shopify. It helps merchants get things done without leaving their flow. Your app can connect its data and workflows using app extensions. Sidekick can search your app’s data, answer questions with your app’s context, and take merchants straight to the right page in your app. You can also let Sidekick assist directly inside your app. Define safe, scoped actions—like editing an email template, creating a product review, or updating a support issue—and Sidekick will suggest changes and bring up the right UI, but merchants stay in control of what gets updated. This guide shows you how to expose data sources and actions, handle authentication and permissions, and test your integration in development. ![Tools extension flow chart](https://shopify.dev/assets/assets/admin/sidekick/flow-chart-sidekick-Ce1ZsKu6.png) *** ## How Shopify's platform powers tools & app extensions When a merchant invokes an app extension, Shopify's platform powers the interaction. The app extension is executed in the Shopify sandbox, and has access to the same APIs as your app. The app extension returns the result to Sidekick, and Sidekick displays the result to the merchant. ![Tools extension sequence diagram](https://shopify.dev/assets/assets/admin/sidekick/sequence-diagram-sidekick-C-KM2zge.png) *** ## Example: Search in an email app In this example, a merchant can ask Sidekick to find the best performing subject lines in their email campaigns. Sidekick searches using the [app extension](https://shopify.dev/docs/apps/build/sidekick/build-app-data) in the [Shopify Messaging](https://apps.shopify.com/shopify-email) app, then returns the best results. Clicking on an option invokes the app, navigated right to the correct result. ![Sidekick email search interface](https://shopify.dev/assets/assets/admin/sidekick/email-performance-flow-C00FiYFF.png) *** ## Expose data to Sidekick Use an extension to expose data in your app. By providing your app's data in an extension, Sidekick can search your app's data to get tailored results. Merchants can get value from your app just by working with Sidekick, while also staying in their flow. [Use extensions to surface app data\ \ ](https://shopify.dev/docs/apps/build/sidekick/build-app-data) [Learn how to build an extension to expose your app's data to Sidekick.](https://shopify.dev/docs/apps/build/sidekick/build-app-data) *** ## Expose actions to Sidekick Use an extension to expose actions in your app. By providing your app's actions in an extension, Sidekick can take the merchant to the right page in your app to perform the action. [Use extensions to surface app actions\ \ ](https://shopify.dev/docs/apps/build/sidekick/build-app-actions) [Learn how to build an extension to expose your app's actions to Sidekick.](https://shopify.dev/docs/apps/build/sidekick/build-app-actions) *** ## Add an extensions summary to your app When your app has one or more Sidekick-eligible extensions, you must provide an `extensions_summary` in your `shopify.app.toml`. This is a developer-written, consolidated summary of what your app's Sidekick extensions can do. Sidekick uses this summary to route merchant questions to the correct app. The `extensions_summary` is separate from the `description` field in individual `shopify.extension.toml` files. While each extension's `description` explains what that specific extension does, the `extensions_summary` provides a high-level overview of all your app's Sidekick capabilities in one place. ### Configure your extensions summary Add the `extensions_summary` field under the `[sidekick]` section in your `shopify.app.toml`: ## shopify.app.toml ```toml [sidekick] extensions_summary = "Search, Create, and Edit Email and SMS campaigns" ``` **Required:** The `extensions_summary` field is required if your app has any Sidekick-eligible extensions. Omitting this field produces a validation error when you deploy. **Limits:** The `extensions_summary` field has a 256-token limit. ### What makes a good extensions summary A good `extensions_summary`: * Describes the actions your Sidekick extensions support (for example, Search, Create, Edit) * Includes the domain or entity types they cover (for example, Email campaigns, SMS campaigns) * Is specific enough for Sidekick to match merchant questions to your app A poor `extensions_summary`: * Is generic or vague (for example, "My sidekick summary" or "Tools for your app") * Doesn't mention the specific operations or data types your extensions handle ### Examples **Do:** Be specific about what operations your extensions support and what domain they cover. ```toml [sidekick] extensions_summary = "Search, Create, and Edit Email and SMS campaigns" ``` ```toml [sidekick] extensions_summary = "Search and analyze product reviews, create review request campaigns, and manage review display settings" ``` **Don't:** Use generic descriptions that don't help Sidekick understand your app's capabilities. ```toml [sidekick] extensions_summary = "My sidekick summary" ``` ```toml [sidekick] extensions_summary = "Tools for your app" ``` *** ## Writing effective extension descriptions The `description` field in your `shopify.extension.toml` is how Sidekick decides whether your extension is relevant to a merchant's question. A vague or generic description means Sidekick won't know when to use your extension, and merchants will have to explicitly name your app to invoke it. Write your description as if you're telling Sidekick exactly what your extension can do. Be specific about the domain, the type of data or actions it covers, and the kinds of merchant questions it can answer. ### What makes a good description A good description: * Names the specific domain your extension covers (for example, "email campaigns", "product reviews", "shipping rates") * Describes the concrete tasks or queries it supports A poor description: * Is generic or could apply to any app (for example, "Search extension for your app") * Doesn't mention the specific data or actions the extension provides * Uses internal or technical jargon that doesn't match how merchants talk ### Examples The following examples show the difference between descriptions that work well and descriptions that don't. **Do:** Be specific about what your extension does and what data it covers. ```toml description = "Tools for working with email, searching email campaigns, and getting email campaign stats" ``` ```toml description = "Search and analyze product reviews, ratings, and customer feedback across your store" ``` ```toml description = "Look up shipping rates, delivery estimates, and carrier options for orders" ``` **Don't:** Use generic descriptions that could apply to any app. ```toml description = "Search extension for your app" ``` ```toml description = "Tools for your store" ``` ```toml description = "Extension that helps with data" ``` The same guidance applies to individual tool descriptions in your `tools.json` file. Each tool's `description` field should clearly state what the tool does and what kind of input it expects, so Sidekick can choose the right tool for the merchant's request. *** ## Limits The following limits are enforced when you deploy your app extension or when Sidekick invokes it at runtime: | Resource | Limit | | - | - | | Array items | 50 items | | Email body | 10,000 characters | | Email recipient | 254 characters | | Email subject | 200 characters | | Extension description | 256 tokens | | Extensions summary (`shopify.app.toml`) | 256 tokens | | Instructions | 2,048 tokens | | Intents per app | 5 | | Query string | 500 characters | | Response size | 4,000 tokens | | Response time | 1 second | | Result count | Minimum 1, maximum 50, default 20 | | Tool description | 512 characters | | Tool name | 64 characters | | Tools per app | 20, across all extensions | *** ## Benefits ### More ways for merchants to use your app Merchants can interact with your app in new ways, and get even more unique value. App extensions you register for your app can be invoked inline during other scenarios, helping merchants keep their place and never lose what they’re working on. ### Awareness across Shopify Sidekick and the Shopify admin can suggest your app when its registered intents can help a merchant get things done. Your app can be in front of new audiences, just in time when the merchant can get the most out of it. ### Sidekick & apps gain new powers As merchants interact with Sidekick and other apps that utilize your app's intents, your app becomes more useful and even more powerful. Merchants can get value from your app just by working with Sidekick, while also staying in their flow. ***