Agentic commerce
Sidekick can now find your app without a tools file
A September 28 change made intent-only extensions eligible for Sidekick. What app intents are, how they differ from the admin intents with the same name, and the two config fields that decide whether Sidekick ever surfaces you.
Bas Lefeber
Founder, learnshopify.dev · September 29, 2026 · 5 min read
On September 28, 2026, Shopify shipped a change with a title only an app developer could love: Sidekick can now invoke app intents without tools. Underneath it is something larger than a config tweak. A merchant asking Sidekick a question is now a place your app can be discovered, and the text that decides whether you show up is two fields long.
It applies to every store immediately. No API version to target, no developer preview to join, nothing to wait for.
The short version
Before, an extension had to declare tools to be eligible for Sidekick at all, so intent-only extensions were invisible no matter how useful. Now Sidekick surfaces apps from registered intents alone. To be eligible you need an [[extensions.targeting.intents]] block on the extension and an extensions_summary under [sidekick] in shopify.app.toml. Then deploy and actually ask Sidekick something.
First, the naming collision
Shopify's docs use the word intents for two different mechanisms that point in opposite directions. Nearly everyone reading about one ends up in the docs for the other, so it is worth thirty seconds to separate them.
| Admin intents | App intents | |
|---|---|---|
| Direction | Your app calls Shopify | Shopify calls your app |
| What it does | Launches Shopify's native resource editors so you do not build a product form | Lets Sidekick hand a task to your app |
| How you use it | shopify.intents.invoke('create:shopify/Product') | [[extensions.targeting.intents]] in shopify.extension.toml |
| This post is about | No | Yes |
What changed on September 28
An app intent is declared on an extension target, along with the route Shopify should open and, optionally, a tools file and an instructions file. Here is the shape, quoted from Shopify's own example:
[[extensions]]name = "Open email"description = "Edit an email campaign"handle = "open-email"type = "admin_link" [[extensions.targeting]]target = "admin.app.intent.link"url = "/edit/{id}"tools = "./tools.json"instructions = "./instructions.md" [[extensions.targeting.intents]]type = "application/email"action = "edit"schema = "./email-schema.json"Until this change, the tools line was load-bearing in a way nothing said out loud: no tools, or an empty tools.json, and the intent was never registered with Sidekick. An extension could declare exactly what it handled and still be passed over. That is now gone. The intent block alone makes you eligible.
Tools did not become useless, they became optional and they changed job. They still execute while the intent's destination page is open, so they are how Sidekick does something once it has arrived in your app rather than how it decides to come at all.
Docs pages lag changelog entries
Some Sidekick documentation still reads "Sidekick only supports invoking intents that have tools". That sentence described the world until September 28. When a changelog entry and a docs page disagree about a dated behaviour change, the changelog is the one with a date on it. Check both, believe the newer one, and re-test rather than reasoning from either.
The two fields that decide whether you get matched
Eligibility is not visibility. Once you are eligible, whether Sidekick actually surfaces you for a given merchant question comes down to text you wrote, and there is not much of it.
[sidekick]extensions_summary = "Search and analyze product reviews, create review request campaigns"That summary is capped at 256 tokens, and an app can register at most five intents. Both limits push the same way: this is not a place to describe your product, it is a place to name the concrete jobs a merchant might ask about. "Marketing automation platform" matches nothing a person actually types. "Create and schedule email campaigns, check campaign open rates" matches a question.
The same applies one level down. Each extension's description should name the domain it covers and the tasks it supports, not restate your app's tagline. And the optional instructions.md is where you tell Sidekick how to behave once it is inside your extension, which is the closest thing the platform currently offers to a system prompt you control.
256
tokens
cap on extensions_summary
5
intents
maximum registered per app
0
API versions to target
live on all stores now
Why this is a distribution change, not a feature
For a decade, being found inside the admin meant one thing: your App Store listing. A merchant went looking, searched a category, read a listing, installed. Everything about how apps are named and described was shaped by that one funnel.
A merchant asking Sidekick "how do I follow up with people who left a review" is a different funnel with different mechanics. There is no browsing, no comparison, no listing page. There is a question, and a matcher deciding which of the installed apps claims that job. Your extensions_summary is the thing being matched against, and it is about twenty words long.
There is a real limit worth being honest about: this surfaces apps a merchant has already installed. It is not a new acquisition channel, it is a retention and engagement one. The app that gets used is the app that does not get uninstalled at the next subscription review, and "Sidekick keeps sending me here" is a strong position to hold.
Learn this properly · free lesson
Make your products readable to AI agents
Structure a store's data so an AI agent can actually use it, and see why the shape of what you expose decides what an agent can do with it. Free to work through from here.
Try this lesson — freeWhat to actually do this week
- Check whether you have intents at all. Grep your extensions for
extensions.targeting.intents. No matches means you are not in this conversation yet, and adding one intent is a small change. - Check for the
[sidekick]block. Intents withoutextensions_summaryis the most likely reason a correctly configured app never appears. - Rewrite the summary as tasks, not positioning. Read it back and ask whether a merchant would ever type those words into a chat box.
- Deploy, then actually ask Sidekick. Configuration that is not exercised is configuration you are guessing about. Ask the three questions a real merchant would ask.
- If you had tools only to be eligible, reconsider them. They are now for doing work on the destination page, which is a different design question from discovery.
Small change, and a good tell about direction. Shopify is steadily making the admin a place where a merchant describes an outcome instead of navigating to a screen. Apps that can be addressed by name in that world are in a different position from apps that can only be clicked.
Frequently asked questions
Do Shopify app intents still require a tools file for Sidekick?
No. As of September 28, 2026, Sidekick surfaces and invokes apps based on registered intents alone. Before that change an extension had to declare tools to be eligible, and intent-only extensions were passed over entirely. Tools are still useful, but they now run while the intent's destination page is open rather than gating eligibility.
What is the difference between admin intents and app intents?
They point in opposite directions despite the shared name. Admin intents are your app calling Shopify, using shopify.intents.invoke to launch Shopify's native resource editors so you do not build your own product or discount form. App intents are Shopify calling your app, declared with an [[extensions.targeting.intents]] block on a target like admin.app.intent.link, which is what lets Sidekick hand a task to you.
What is extensions_summary in shopify.app.toml?
A short description under the [sidekick] section that Sidekick matches merchant questions against. It is capped at 256 tokens. It should name concrete tasks and queries your app supports rather than describing your product category, because it is matched against what a merchant actually types.
How many app intents can one Shopify app register?
Five. Combined with the 256-token summary cap, the platform is pushing you to pick the handful of jobs you genuinely own rather than claiming everything.
Which targets support app intents?
admin.app.intent.link navigates the merchant to a URL in your app, and since August 2026 it opens as a full-page navigation rather than rendering inside the Sidekick panel. admin.app.intent.render renders an admin UI extension inline and requires API version 2026-04 or later.
Does Sidekick integration help me get new installs?
Not directly. Sidekick surfaces apps a merchant already has installed, so this is engagement and retention rather than acquisition. The practical value is that an app Sidekick routinely routes work to is an app that survives the next subscription review.
Start free
Ready to become a Shopify developer?
You just read how it works. Now write it yourself: real tickets from a live store, in an editor where the storefront updates as you type. Module 1 is free, no card.
Free · No credit card · Your first win in minutes
About the author
Bas Lefeber, Founder, learnshopify.dev
Bas builds learnshopify.dev, where developers learn production-grade Shopify theme development against a live storefront. He writes about Liquid, theme architecture, and the parts of the job that still matter now that AI writes the code.
Keep going in the curriculum


