Public catalog and proposal venue for Sidekick app intent types — the MIME-typed schemas that Shopify apps register to declare "I can create, edit, or import a thing of this shape."
If you're building a Shopify app and the type you need to register an intent for doesn't exist yet, this is the place to ask for it.
Sidekick is Shopify's AI-powered merchant assistant. When a merchant asks Sidekick to do something ("draft a back-in-stock email", "create a return"), Sidekick looks for an installed app that has registered an intent matching the action. Intent types are the contract that lets Sidekick discover and route to the right app. See Build an app action for the full developer guide.
types/— every intent type Shopify currently supports, one file per type, with the JSON Schema URL, supported actions, and example use cases.- Discussions — open conversations about intent design, early-stage proposals, and questions. Use this before a formal PR.
- Pull requests — formal proposals for new types, additions to existing types, and refinements. See How to propose a new type below.
This list mirrors the supported types documented in Build an app action.
Use application/* intents when your app owns the data shape. Each type supports both create and edit actions.
| Type | Description | Actions | Schema |
|---|---|---|---|
application/ad |
Ad campaigns | create, edit |
schema |
application/campaign |
Marketing campaigns | create, edit |
schema |
application/email |
Email campaigns | create, edit |
schema |
application/faq |
FAQ management | create, edit |
schema |
application/loyalty-program |
Loyalty programs | create, edit |
schema |
application/return |
Returns management | create, edit |
schema |
application/review |
Product reviews | create, edit |
schema |
application/shipment |
Shipment tracking | create, edit |
schema |
application/ticket |
Support tickets | create, edit |
schema |
Use shopify/* intents when your app operates on a Shopify resource identified by a GID. Each type supports both import and import+bulk actions.
| Type | Description | Actions | GID schema |
|---|---|---|---|
shopify/customer |
Shopify customers | import, import+bulk |
schema |
shopify/order |
Shopify orders | import, import+bulk |
schema |
shopify/product |
Shopify products | import, import+bulk |
schema |
There are two paths, depending on how settled your idea is.
If you're not sure the type makes sense, what shape it should be, or whether something close to it already exists, open an RFC discussion first. We'd rather sketch with you in a thread than have you spend hours on a PR that needs to start over.
A good RFC discussion answers:
- What type are you proposing? (e.g.
application/invoice) - What do merchants ask Sidekick to do that needs it? Real-world examples beat hypotheticals.
- What apps would register intents for it? Yours, plus any others you can think of.
- What fields does it need? A sketch of the schema is enough — full JSON Schema can come later.
- Anything close in the existing list? If
application/ticketcovers most of whatapplication/invoicewould, say so.
Once the shape is settled (either through discussion or because the type is obvious), open a PR adding a file under types/. Use types/application-email.md as the template.
A type proposal PR should include:
- A new file under
types/describing the type, actions, schema, and example use cases. Useapplication-{name}.mdfor app-owned shapes andshopify-{resource}.mdfor Shopify resource intents. - A draft JSON Schema (inline in the PR or linked from a Gist) that conforms to the Sidekick schema requirements. Critically,
inputSchemamust not declarerequiredfields — Sidekick fills missing fields via UI before invoking your extension. - A short rationale: who's asking for this, what problem it unblocks, and any prior art.
We'll review and either merge, request changes, or move it back to a discussion if more shaping is needed.
Good candidates:
- Types with a clear, recurring merchant intent ("send a customer a $thing") that multiple apps would plausibly handle.
- Things distinct enough from existing types that overloading one of those would be confusing.
- Schemas that describe the user-facing artifact, not your app's internal representation.
Less good candidates:
- Types that only one app would ever register for — ask yourself whether this is really an intent type or just an API for your app.
- Types that fragment an existing one. If
application/emailcould carry your "transactional email" use case with an optional field, that's usually better than a new type. - App-internal workflow steps. Intents are merchant-facing actions, not internal pipeline stages.
- Bug reports about Sidekick or your extension's behavior — file those through the Partner Dashboard or the Shopify Community forum.
- Help debugging your
shopify.extension.toml— open a Help discussion. - Sidekick product feedback ("Sidekick should do X") — those go to the same channels as bug reports above.
- A Shopify maintainer responds to discussions and PRs within 5 business days.
- For PRs, expect at least one round of schema review before merge.
- Merging this repo doesn't automatically ship the type — Shopify still has to publish the schema to
extensions.shopifycdn.comand roll it out to Sidekick. We'll comment on the PR with the rollout timeline.
This project follows the Contributor Covenant. By participating, you agree to uphold it.
The content in this repository is licensed under CC BY 4.0 (Creative Commons Attribution 4.0 International).