See all services → Shopify Plus Partner
Platform Developer

Register App Intents to Launch Your Discount App Flows

Apps that build discount types with Shopify Functions can now register shopify/Discount app intents, letting Sidekick open the app's own create and edit flows instead of routing merchants to Shopify's default discount UI.

Executive summary

What changed

App intents are how Sidekick and the admin learn what an app can actually do, so a merchant request routes to the right place. That contract now covers discounts.

A Function-backed discount app can register a shopify/Discount intent for create and edit actions using one of two targets. The link target navigates to an existing page in a React Router app, which suits teams that already have a discount configuration screen. The render target draws a focused Admin UI extension inline and requires API version 2026-04 or later.

Registration uses the intent meta-schema and references the baseline discount schema. The detail that matters for apps with more than one Function is the match value on functionId: it maps each intent to a specific implementation, so an app offering three distinct mechanics can register a flow for each. For edit actions, the intent's value schema carries the discount GID. When a request does not identify a specific discount type or implementation, the merchant picks from the available flows in a disambiguation picker.

Discounts UI extensions already using the discount details function settings target are promoted automatically. The existing extension UI paths property still works, though declaring intents gives deeper coverage across create and edit.

One limitation is worth planning around. Link-target discount flows work in the web admin only. App-linked discounts appear in the mobile app's discount list, but tapping one does not open the app's edit flow, so use the web admin until mobile support ships.

Why it matters

For Plus merchants running custom discount logic, the benefit is a shorter path between intent and action. Promotions on complex catalogs rarely fit native discount types, so the logic ends up in a Function with an app-provided configuration screen. The friction was the handoff: a merchant setting up a tiered volume discount could land in Shopify's default UI, which does not know the custom mechanic exists, then have to find the app manually.

Registered intents close that gap. Merchants reach the correct surface the first time, including when editing an existing discount, and custom mechanics stop needing a training document explaining where to click. If you are weighing Functions against older approaches, our breakdown of Shopify checkout scripts for complex discount logic at enterprise scale covers the tradeoffs.

Role-specific impact

Use-case example

Real-world scenario

A building supplies distributor runs three Function-backed discount mechanics: contract pricing, pallet-break volume tiers and a seasonal clearance rule. Before intents, a merchandiser creating a volume tier typically started in the native discount UI, realized it was the wrong surface, then navigated to the app: two or three minutes per promotion. Across roughly 40 promotions a quarter that is about two hours recovered, and more usefully, fewer misconfigured discounts caught at review.

Implementation checklist

  1. Confirm your app creates discount types using Shopify Functions, since the intent applies only to those.
  2. Decide per flow whether the link target or the inline render target fits, and confirm you are on API version 2026-04 or later if you choose render.
  3. Declare the intent using the intent meta-schema, referencing the baseline discount schema.
  4. Add a functionId match value for each Function implementation so every mechanic gets its own flow.
  5. Handle the discount GID passed in the intent value schema for edit actions.
  6. Check your per-app intent limit before registering, since each intent counts toward it.
  7. Test the disambiguation picker with an ambiguous request and confirm the flow labels read clearly to a merchant.

FAQ

Q: Do existing discount apps need to migrate?

A: No. Existing apps work unchanged and the extension UI paths property still functions. Registering intents is an enhancement you adopt when ready.

Q: What happens when a merchant request does not name a specific discount type?

A: Shopify shows a disambiguation picker listing the available flows, so write intent labels for a merchant audience, not an internal one.

Resources

Build app actions with Sidekick

Need guidance? Talk to Makro.