Admin GraphQL API / 2026-04

Add Tags to
Discounts

Starting with API version 2026-04, a tags field is available on all discount types. The Admin API lets you add, update, and remove tags so you can label, group, and organize discounts.

On this page
  1. What's actually changing (30-second overview)
  2. How it works: tags attached to discounts
  3. What you can do / what the article doesn't say
  4. Before vs. after
  5. Requirements
  6. 5 key points for developers
  7. 3 practical use cases
  8. One-line summary for proposals

1What's actually changing

Until now, Discounts had no concept of "tags," so the only way to organize them was through code names or naming conventions.
Starting with API version 2026-04, you can apply tags to discounts just like you do for products and orders, so labeling, grouping, and organizing can now be done via the API.

Before: no tags

There was no way to categorize discounts, so they were managed manually with code names like "SUMMER_2025_VIP" or custom naming conventions. Cross-cutting grouping was difficult.

After: tags field

All discount types now expose a tags field, and you can add, update, and remove tags via the Admin API. Discounts can be bundled and handled by tag.

2How it works: tags attached to discounts

Admin API add / update / remove tags 2026-04~ Discounts (all types) Automatic discounts Discount codes Free shipping, etc. Holds a tags field Discounts organized by tags summer-sale vip 2026-q2 free-shipping campaign-x Label, group, organize
What the article explicitly states "A tags field has been added to all discount types""Can be added, updated, and removed via the Admin API" — these two points. The specific tag strings shown in the diagram (summer-sale etc.) are examples to aid understanding and are not listed in the article.

3What you can do / what the article doesn't say

What the article explicitly states

Possible

Tags on all discount types

tags A tags field has been added to all discount types, allowing uniform labeling regardless of type.

Supported

Add, update, and remove via API

Tags can be added, updated, and removed through the Admin API.

Supported

Labeling, grouping, and organizing

Provided as a way to efficiently label, group, and organize discounts.

Not covered in the article (needs confirmation)

Not documented

Admin UI support

Whether tags can be viewed or edited on the Shopify admin discount screen is not documented. This article is an Admin API announcement.

Not documented

Searching and filtering by tag

Whether queries or filtering by tag are supported, and the syntax, are not documented. The article only states that discounts can be organized.

Not documented

Limits, naming rules, and mutation names

The maximum number of tags, allowed characters, specific mutation names, and field types are not documented. Check the Admin API documentation.

4Before vs. after comparison

AspectBefore (prior to 2026-04)After (API 2026-04 and later)
Discount classification Naming-dependent Managed manually with code names and ad hoc conventions tags Classified with structured labels
Grouping Difficult to group across types By tagcan be bundled together
API operations No tags field available add / update / remove Supported
Scope All discount types
UI and search support Not documented Check the documentation

5Requirements

API version 2026-04 or later

The tags field is available from 2026-04. Older API versions don't have the field at all, so you must first bump the API version you're calling.

Applies to all discount types

tags is available for any discount type — automatic discounts, discount codes, free shipping, etc. There's no note about specific types being unsupported.

The article doesn't mention plan or regional restrictions, or whether this is exposed in the admin UI. Check the Admin API docs and your own API version before adopting it.

65 points engineers should know

2026-04

1. The entry point is the API version

Whether tags is visible depends on the API version you call. Bump your app/integration to 2026-04 or later before checking the schema.

2. A field shared across all types

tags was added across all discount types. You don't need to branch by type — the same tags-handling logic can be reused horizontally.

3. Three operations: add / update / remove

Add, update, and remove are all available. You can design tag management as CRUD and easily wire it into sync flows from external systems.

query?

4. Search and filtering: not confirmed

The release says you can "organize" discounts, but there's no mention of query filtering by tag. If you plan to design around tag-driven listing, verify support in the docs first.

5. Naming conventions are up to you

Tags are free-text labels. Shopify doesn't assign meaning to them, sodefine a cross-team tag naming convention up front — campaign ID / season / owner / status, etc.Otherwise things go sideways fast. The docs don't list limits or allowed characters either, so confirm those and bake them into your convention.

73 use cases you can apply to your operations

USE CASE 1

Take inventory of large numbers of discount codes by campaign and season

Problem
A long-running store has accumulated hundreds of discount codes, no one knows which belongs to which campaign, and cleaning up expired ones is guesswork.
Approach
Bulk-tag existing discounts via the Admin API with values like campaign:◯◯ season:2026-q2 and from then on, always attach a tag at issuance time.
Outcome
You can group and survey discounts by campaign, shortening lead time for inventory checks and retirement decisions. Management that used to depend on individuals becomes standardized.
Technical note
Because add / update / remove are all available, it's easy to run a two-step plan: backfill every existing record with a migration script, then bake tagging into the issuance flow going forward.
External Discounts
USE CASE 2

Use tags as a join key against an external campaign management tool

Problem
Campaigns are managed in a separate SaaS or in-house DB, and there was no standard field for linking which row corresponds to which Shopify discount.
Approach
Write the external management ID into the discount as a tag like ext-id:◯◯ and reconcile/update both sides via API sync.
Outcome
You can mechanically match Shopify discounts against the external system as the source of truth, preventing double management and mis-linking. Name resolution in reports also stabilizes.
Technical note
Since the join key rides on the tag, use a prefix to avoid naming collisions (ext-id: etc. are now standardized. Tag-based search support isn't documented, so verify in the docs upfront if you need filter queries.
USE CASE 3

Lifecycle management (auto-sorting items that need review or are nearing expiration)

Problem
Discounts nearing expiration or due for review get overlooked, leaving stale offers in place — or worse, necessary discounts get deleted by mistake.
Solution
Use a scheduled batch job to apply status:to-review expiring-soon tags to discounts matching given conditions (and remove them when no longer applicable), making operational status visible at a glance via tags.
Outcome
Discounts that need attention right now become visible at a glance via tags. Review flows can be put on a regular cadence, reducing the risk of neglect or accidental deletion.
Technical notes
A state-machine-style operation that swaps tags via update / remove as states transition fits well. The actual filtering mechanism (API or admin UI) isn't documented, so confirm before relying on it.

8One-line summary for pitches

"As of API 2026-04,all discount types support tags, manageable via the Admin API for add / update / delete..
By structuring campaigns, seasons, external IDs, and operational status as tags,
cleanup, auditing, and external integrations for an overgrown discount catalog can be standardized on an API basis."