Skip to content
Docs
Available on the Shopify App Store

Storefront data

DiscountKit Live makes your discount data instantly accessible through metafields using an app-specific namespace.

Discount data is available through metafields on products, collections, and the shop object using the namespace app--9549316097--discount_kit and key discounts.

Access all discounts that apply to a specific product, including discounts inherited from collections the product belongs to:

{% assign discounts = product.metafields.app--9549316097--discount_kit.discounts.value %}
{% if discounts.size > 0 %}
{% for discount in discounts %}
<div class="discount">
<h3>{{ discount.discount_title }}</h3>
<span>{{ discount.maximum_reward_value }}% OFF</span>
</div>
{% endfor %}
{% endif %}

Access discounts that target a collection directly. Note that these discounts are also fanned out to every product in the collection, so you typically only need collection metafields for collection page banners:

{% assign discounts = collection.metafields.app--9549316097--discount_kit.discounts.value %}
{% if discounts.size > 0 %}
<div class="collection-promo">
<p>{{ discounts.first.discount_title }}</p>
</div>
{% endif %}

Access all active discounts across your store:

{% assign all_discounts = shop.metafields.app--9549316097--discount_kit.discounts.value %}
{% if all_discounts.size > 0 %}
<div class="site-wide-promos">
{% for discount in all_discounts %}
<div>{{ discount.discount_title }}</div>
{% endfor %}
</div>
{% endif %}

Each discount in the array is a DiscountSummary metaobject with fields like:

  • discount_title — Display name
  • discount_type — Type (PRODUCT_VOLUME, ORDER_GOAL, GWP, etc.)
  • method'automatic' or 'code'
  • code — The discount code (empty for automatic discounts)
  • tags — Tags applied to the discount in Shopify (includes dk:live plus any merchant tags)
  • reward_type — PERCENTAGE, FIXED_AMOUNT, or FIXED_PRICE
  • maximum_reward_value — Top tier discount value
  • included_markets — Market handles where applicable
  • included_customer_tags — Required customer tags
  • cart_attribute_key — Cart attribute key required to apply

For simple use cases where you just need to display the best discount value, DiscountKit provides scalar metafields that are easier to work with than parsing the full discount array.

Metafield Type Description
max_reward_percent number_decimal Best percentage discount (e.g., 20 for 20% off)
max_reward_cents number_integer Best fixed-value reward in cents (discount amount or final price, e.g., 500 for $5 off or 1500 for a $15 final price)
max_reward_discount metaobject_reference Reference to the full DiscountSummary for additional details
{% assign percent_off = product.metafields.app--9549316097--discount_kit.max_reward_percent.value %}
{% assign cents_off = product.metafields.app--9549316097--discount_kit.max_reward_cents.value %}
{% if percent_off %}
<span class="badge">{{ percent_off | round }}% OFF</span>
{% elsif cents_off %}
<span class="badge">{{ cents_off | divided_by: 100.0 | money }} OFF</span>
{% endif %}
{% assign percent_off = collection.metafields.app--9549316097--discount_kit.max_reward_percent.value %}
{% if percent_off %}
<div class="collection-badge">
Save up to {{ percent_off | round }}%
</div>
{% endif %}

Use max_reward_discount to get additional info like the discount title or message:

{% assign best_discount = product.metafields.app--9549316097--discount_kit.max_reward_discount.value %}
{% if best_discount %}
<div class="promo">
<strong>{{ best_discount.discount_title }}</strong>
<span>{{ best_discount.maximum_reward_value | round }}% OFF</span>
</div>
{% endif %}

Metafield access is instant with zero overhead:

  • No API calls — data is already on the page
  • Server-rendered — available during initial render
  • Always up-to-date — synced automatically

Filtering, the complete DiscountSummary reference and copy-paste examples are being migrated to these docs; see Introduction for how Live syncs in the meantime.