Skip to content
Docs

Introduction

Discount Kit Live keeps your live discounts in your Shopify storefront, making them available through metafields for instant access — no API calls, no performance overhead.

Discount Kit Live decides what the storefront sees with one rule:

  • Your automatic discounts are in by default. Every automatic discount created in Discount Kit syncs as soon as it is active. To keep one off the storefront, tag it dk:hidden in Shopify’s discount editor.
  • Everything else opts in with dk:live. Discount codes, Shopify’s own automatic discounts, and discounts from other apps sync only when you tag them dk:live — the same Tags field you use for anything else.

Tags take effect within seconds of saving the discount.

One exception to the first rule: a Discount Kit discount restricted to your retail locations doesn’t sync, because it can’t apply to an online order. A discount set to apply everywhere except certain locations still does.

Only active discounts are synced. A scheduled discount appears the moment its window opens and disappears the moment it closes; an expired or deactivated discount is removed the same way. If a discount is present in the data, it is active right now.

Discount data is available through metafields at three levels — products, collections, and shop-wide — all using the namespace app--9549316097--discount_kit and key discounts.

Each sync reads up to 30 automatic discounts and up to 30 discounts tagged dk:live. Most stores never come near either number.

If a store does pass one, Discount Kit Live keeps the discount data it already has rather than syncing part of it — a partial sync would quietly drop discounts from pages that were showing them, which is worse than data that’s briefly behind. Contact support if you think you’re close.

Every synced discount is data on every page that reads it, so tag the codes you actually surface rather than all of them.

Discounts targeting collections are automatically fanned out to every product in those collections. This means a product’s metafields include all applicable discounts — both those targeting the product directly and those inherited from its collections.

For example, if you create a “Summer Sale” discount on the “T-Shirts” collection, every product in that collection will have the discount in its discounts metafield. You don’t need to check the collection metafield separately — product badges just work.

The same applies to max_reward_percent, max_reward_cents, and max_reward_discount — these scalar metafields reflect the best discount across both direct and collection-inherited discounts.

  • Merchant-controlled — your automatic discounts by default, dk:hidden to hide one, dk:live to include a code or a third-party discount
  • Automatic + code discounts — surface both auto-applied and code-redeemed discounts
  • No API calls — data is already on the page via metafields
  • Real-time updates — changes sync within seconds of saving a discount or a tag, and windows open and close on time
  • Zero latency — instant access, even on collection pages with 100+ products
  • Server-rendered — available during initial page render
  • Active discounts only — expired or paused discounts are excluded
  • Quick access values — scalar metafields for the best discount (max_reward_percent, max_reward_cents)

While Discount Kit Live provides powerful storefront access to discount data, there are some known limitations:

Scalar metafields only reflect universal discounts:

The max_reward_percent, max_reward_cents, and max_reward_discount scalar metafields only reflect discounts that apply to all visitors without conditions. The following discount types are excluded from scalar computation:

  • Test mode discounts
  • GWP (Gift With Purchase) discounts
  • Customer-tagged discounts (targeting specific customer tags)
  • Market-specific discounts (targeting specific markets)
  • Code-based discounts (require the shopper to enter a code; advertising them in a “Save up to X%” badge would over-promise to shoppers who don’t know the code)

Apart from GWP, these discounts still appear in product and collection discounts arrays, where you can filter them in Liquid. Use the scalar metafields for simple, drop-in badges that work for all visitors.

Gift with purchase discounts are listed on the shop only:

A GWP discount reads as 100% off — true of the gift, in a qualifying cart, but not of the product a shopper is looking at. So GWP discounts appear in the shop’s discounts list only, never in a product’s or a collection’s. To tell shoppers which products earn a gift, see Free gift with a product.

Collection fan-out product limit:

When discounts target collections, Discount Kit Live resolves every product in those collections and writes metafields to each one. This fan-out is currently limited to a maximum of 8,000 unique products across all collection-based discounts. Products beyond this limit will still receive the correct discount at checkout, but may not display badges or strike-through pricing on the storefront. This limit will be increased in a future update.

Customer segments:

Shopify’s native automatic discounts support targeting by customer segments (dynamically updated customer groups based on behavior, purchase history, etc.). Unfortunately, Shopify does not currently expose customer segment information in Liquid templates.

This means:

  • Discounts using customer segments will work correctly at checkout
  • However, Discount Kit Live cannot filter these discounts in the storefront based on segment membership
  • Workaround: use customer tags instead, which are supported in Liquid and work with Discount Kit Live

If you need to show segment-specific discounts in your storefront, consider using customer tags as an alternative targeting method.

Read Storefront data to learn how to access discount data in your theme, then dig into Settings, the full data reference, and the guides on filtering discounts and worked examples.