--- title: Use extensions to surface app actions description: Use extensions to surface app actions source_url: html: 'https://shopify.dev/docs/apps/build/sidekick/build-app-actions' md: 'https://shopify.dev/docs/apps/build/sidekick/build-app-actions.md' --- ExpandOn this page * [Example: Edit email content](https://shopify.dev/docs/apps/build/sidekick/build-app-actions.md#example-edit-email-content) * [Expose actions to Sidekick](https://shopify.dev/docs/apps/build/sidekick/build-app-actions.md#expose-actions-to-sidekick) * [Requirements](https://shopify.dev/docs/apps/build/sidekick/build-app-actions.md#requirements) * [Example: Allow Sidekick to edit email content](https://shopify.dev/docs/apps/build/sidekick/build-app-actions.md#example-allow-sidekick-to-edit-email-content) * [Putting it all together](https://shopify.dev/docs/apps/build/sidekick/build-app-actions.md#putting-it-all-together) # Use extensions to surface app actions 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. By declaring and defining your app's actions in an app extension, Sidekick can take the merchant to the right page in your app to perform a rich action. *** ## Example: Edit email content In this example, a merchant can ask Sidekick to edit the content of an email campaign. Sidekick takes the merchant to the [Shopify Messaging](https://apps.shopify.com/shopify-email) app, navigated to the correct email campaign. ![Sidekick with email app](https://shopify.dev/assets/assets/admin/sidekick/sidekick-messaging-BmyWcPHr.png) *** ## Expose actions to Sidekick Use app extensions to expose actions in your app. By providing your app's actions in an app extension, Sidekick can take the merchant to the right page in your app to perform a rich action. Multiple app extension types are supported. Choose the right app extension type for your app. | Extension type | Embedded app support | Non-embedded app support | | - | - | - | | Admin link | ✅ | ❌ | | UI extension | ✅ | ✅ | *** ## Requirements * [Create an app](https://shopify.dev/docs/apps/build/scaffold-app). * For app home, use the latest version of [App Bridge](https://shopify.dev/docs/api/app-home). *** ## Example: Allow Sidekick to edit email content Use an **app extension** to allow Sidekick to edit content in your app. The example below shows how to create an app extension using an [admin link](https://shopify.dev/docs/apps/build/admin/admin-links). ### Create an app extension Use `shopify-cli` to create an [admin link](https://shopify.dev/docs/apps/build/admin/admin-links) extension. ## Terminal ```terminal shopify app generate extension --template admin_intent_link --name open-email ``` The command creates a new extension template in your app's `extensions` directory with the following structure: ## Edit extension folder structure ```toml extensions/open-email ├── README.md └── shopify.extension.toml // The config file for the extension ``` Modify `shopify.extension.toml` to include the `name`, `handle`, and `type` of your app extension. ## extensions/open-email/shopify.extension.toml ```toml [[extensions]] name = "Open email" description = "Edit an email campaign" handle = "open-email" type = "admin_link" [[extensions.targeting]] target = "admin.intent.render" url = "/edit/{id}" ``` Note `admin.intent.render` is a special target that is not tied to a Shopify resource that can be invoked from anywhere in the Shopify Admin. ### Register your extension as an intent Add an `intents` configuration to your `shopify.extension.toml` with an `action`, `type` and `schema`. `application/email` is used as an example `type` for this guide. App extensions support several app types for various popular use cases. ## extensions/open-email/shopify.extension.toml ```toml [[extension.targeting.intents]] type = "application/email" action = "open" schema = "./email-schema.json" ``` Coming soon A full list of supported types for app intents will be available soon. ### Declare the extension schema Declare your schema in the `JSON` file referenced in `shopify.extension.toml`. Note `inputSchema` is required and must reference a schema matching the `type` defined in `shopify.extension.toml`. For example, `application/email` should reference ## ./email-schema.json ```json { "$schema": "https://extensions.shopifycdn.com/shopifycloud/schemas/v1/intent.json", "inputSchema": { "$ref": "https://extensions.shopifycdn.com/shopifycloud/schemas/v1/application/email.json", "type": "object", "properties": { "recipient": { "type": "string", "description": "Primary recipient email address (e.g., email@example.com)", "format": "email" }, "cc": { "type": "array", "description": "CC recipient email addresses", "items": {"type": "string", "format": "email"} }, "subject": { "type": "string", "description": "Email subject line (1-200 characters)", "minLength": 1, "maxLength": 200 }, "body": { "type": "string", "description": "Email message body (supports rich text formatting)" }, "template_id": { "type": "string", "description": "Email template to use", "enum": ["blank", "welcome", "promotion"] }, "send_at": { "type": "string", "description": "Schedule email for future delivery (ISO 8601 date-time format)", "format": "date-time" }, "priority": { "type": "string", "description": "Email priority level", "enum": ["low", "normal", "high"], "default": "normal" }, "track_opens": { "type": "boolean", "description": "Enable email open tracking", "default": true } }, "required": ["recipient", "subject", "body"] } } ``` *** ## Putting it all together After following this tutorial, your `extensions` folder structure should look like this: ## Folder structure ```toml extensions/open-email ├── email-schema.json // The input and output schema for your email open extension ├── README.md └── shopify.extension.toml // The config file for the extension ``` *** * [Example: Edit email content](https://shopify.dev/docs/apps/build/sidekick/build-app-actions.md#example-edit-email-content) * [Expose actions to Sidekick](https://shopify.dev/docs/apps/build/sidekick/build-app-actions.md#expose-actions-to-sidekick) * [Requirements](https://shopify.dev/docs/apps/build/sidekick/build-app-actions.md#requirements) * [Example: Allow Sidekick to edit email content](https://shopify.dev/docs/apps/build/sidekick/build-app-actions.md#example-allow-sidekick-to-edit-email-content) * [Putting it all together](https://shopify.dev/docs/apps/build/sidekick/build-app-actions.md#putting-it-all-together)