Developer Changelog / Discounts × Sidekick

Discount apps now support App Intents
Go straight from Sidekick to the app's own create and edit screens

Apps that build custom discount types with Shopify Functions shopify/Discount can now register intents. Sidekick launches the app's create and edit flows, and the app is shown first in the candidate picker.

On this page
  1. What's changing (30-second overview)
  2. How it works: from Sidekick to the app's flow
  3. 3 ways to register (targets)
  4. What an intent registration contains
  5. Scope of impact and mobile limitations
  6. What to do (3 options)
  7. 5 key points for developers
  8. 3 business use cases
  9. One-line summary for proposals

1What's changing

When a merchant asks Sidekick to "create or edit this discount,"
instead of Shopify's standard discount UI,they land in the dedicated flow of the app that created that discount type.

Before: often routed to the standard UI

Even for app-specific discount types, merchants were sometimes sent to Shopify's default discount UI.

Now: straight to the app's flow

shopify/Discount With the intent's create / edit actions, Sidekick launches the app's create and edit flows. The app is also shown first in the picker.

2How it works: from Sidekick to the app's flow

Merchant Requests create/edit Sidekick shopify/Discount Resolves the intent Identified Not identified matchValue(functionId) For the matching Function implementation, launch the flow directly Candidate picker From the registered flows, the merchant chooses App's flow intent.link Navigate to an existing React Router page intent.render Render an Admin UI extension inline Discounts UI extension Automatically prioritized
Disambiguation picker : When the request doesn't make clear which discount type or Function implementation is meant, this screen lets the merchant choose from a list of available flows. Flows from apps that have registered intents appear here.

3Three registration methods (targets)

link

admin.app.intent.link

In your React Router app,navigate to an existing page. This lets you reuse your current admin pages.

render

admin.app.intent.render

Purpose-built Admin UI extension rendered inline.Requires API 2026-04 or later

Automatic

Discounts UI extension

admin.discount-details.function-settings.render -based extensions areautomatically prioritized without registration.

4What an intent registration contains

ElementDetails
Actionscreate edit — both types are supported
metaschemashopify-intent.json is used for registration
Baseline schemashopify/discount.json : see reference
matchValuefunctionId is set here to tie the intent to a specific Shopify Function implementation. Apps with multiple implementations can register a flow for each implementation.
value schemaIn the edit flow, it carriesthe discount GID .
LimitEach registered intent counts toward theper-app intent limit(the exact limit isn't specified)
Existing extension.ui.pathscontinue to work. However, declaring App Intents is recommended for deep Sidekick integration across both create and edit.
One app Multiple Function implementations Intent for functionId = A Intent for functionId = B Intent for functionId = C Dedicated create/edit flow for A Dedicated create/edit flow for B Dedicated create/edit flow for C Each intent counts as one toward the limit

5Scope and mobile limitations

Applies to: apps that build discount types with Functions

Existing appskeep working as-is, with no migration required. Apps that don't create Function-based discount types are unaffected.

Mobile: link flows work only in the web admin

admin.app.intent.link discounts appear in the Shopify mobile app's list, buttapping them doesn't open the app's edit flow.

. Until mobile support arrives, merchants should be told toview and edit these discounts in the web version of Shopify admin. No timeline for mobile support has been given.

6What to do (3 options)

Existing appsrequire no changes. If you want your flows prioritized in Sidekick and the candidate picker, choose one of the following.

A

Build a Discounts UI extension

That alone gives it priority placement automatically.

B

intent.link registration

For reusing your existing React Router–based discount UI.

C

intent.render registration

For providing a focused inline UI extension (API 2026-04 or later).

See "Build app actions with Sidekick" for configuration examples and the "Intents API reference" for the full spec (this article doesn't include the configuration code itself).

75 key points for developers

ID

1. functionId is the linking key

matchValue set to functionId , mapping each intent 1:1 to its Function implementation. Apps with multiple implementations register one per implementation.

GID

2. edit receives the discount GID

The intent's value schema contains the discount's GID. Design the edit screen to use it to identify the target discount.

2026-04

3. render has an API version requirement

admin.app.intent.render requires API 2026-04 or later. link can reuse existing React Router pages, making it easier to adopt.

4. Intents count against the app limit

Each registration counts toward the per-app intent limit. Apps with many Function implementations need to choose which ones to surface in Sidekick (the limit value isn't specified).

5. Backward compatibility: ui.paths keeps working, but intents are recommended

extension.ui.paths remains valid and no migration is needed. However, declaring App Intents is recommended if you want deep integration with both Sidekick create and edit.Note: with link flows, the edit screen doesn't open on mobile, so prepare guidance copy for merchants who mostly work on mobile.

8Three use cases you can put to work

USE CASE 1

Make Sidekick an entry point to your own discount app

Challenge
You offer custom discount types built with Functions, but when merchants ask Sidekick, they're sent to Shopify's standard UI and your app's settings screen goes unused.
Approach
On your existing React Router settings page, register admin.app.intent.link and declare both create and edit intents.
Impact
Merchants coming from Sidekick consistently land in your app's dedicated flow, so they no longer confuse it with the standard UI.
Technical notes
You can reuse existing pages, so implementation is minimal. On the edit side, take the GID from value and load the target discount.
A B C
USE CASE 2

Route each discount type to its own flow in apps with multiple discount types

Challenge
A single app provides several Function implementations, such as bulk-purchase, tiered, and BOGO discounts, and it isn't clear which settings screen to send merchants to.
Approach
For each Function implementation, register an intent with matchValue(functionId) set. For ambiguous requests, let merchants choose from a picker of candidates.
Impact
Merchants go straight to the best input screen for each type, which should mean fewer setup mistakes and support requests.
Technical notes
Each intent counts toward the app's limit, so you'll need to prioritize which implementations to expose to Sidekick.
USE CASE 3

Design new builds and replacements around inline UI extensions

Challenge
Sending merchants to your app's own screens to configure discounts takes them out of the admin and breaks up their workflow.
Approach
Build it as a Discounts UI extension (admin.discount-details.function-settings.render), or use admin.app.intent.render to register a purpose-scoped inline UI.
Impact
Discounts UI extensions get priority display automatically, with no registration needed. Merchants can create and edit discounts without leaving the admin.
Technical notes
intent.render requires API version 2026-04 or later. Update your target API version before you start.

9One-line summary for proposals

"Functions-based discount apps that register shopify/Discount intents can
handle create and edit requests from Sidekick in their own dedicated flow. No migration needed: existing apps keep working as-is.
UI extensions work automatically, existing pages use link, and inline UIs use render (2026-04+)."