> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nudj.cx/llms.txt
> Use this file to discover all available pages before exploring further.

# Shopify Rewards

> Shopify-backed reward types: discount codes, checkout links, product sync, and the free-product discount function.

Nudj supports four rewards patterns backed by a linked Shopify store. All four are configurable from the Nudj admin panel and the Shopify embedded admin.

## Shopify reward type

PR #1447 introduced the **Shopify reward type** in the admin panel's reward picker. A Shopify reward is backed by a specific product, discount, or redemption link in the merchant's Shopify store — not a Nudj-internal asset. PR #1378 added Shopify to the platform third-party config table that gates which reward types are available per community.

PR #1461 fixed config checks that ran during reward upsert so partially-configured Shopify rewards can't be saved.

## Reward backends

<CardGroup cols={2}>
  <Card title="Discount codes" icon="percent">
    Backed by a Shopify discount code created server-side when the reward is earned. Redeemable at checkout.
  </Card>

  <Card title="Checkout links" icon="link">
    **PR #1492** — Nudj generates a Shopify checkout link (`/cart/...`) with the discount pre-applied. The user taps the link from their reward, lands in Shopify checkout already discounted.
  </Card>

  <Card title="Free product via discount function" icon="gift">
    **PR #2160** — a Shopify discount function the merchant installs (`apps/shopify/extensions/nudj-free-product`). When the user reaches checkout with the reward claimed, the function grants the configured SKU for free.
  </Card>

  <Card title="Synced Shopify products" icon="shopify">
    **PR #1459** — Nudj syncs the merchant's product catalog. Admins pick products from the synced catalog to back a reward without leaving the Nudj admin. PR #1493 simplified the sync modal UX.
  </Card>
</CardGroup>

## Backend creation flow

PR #1467 formalised the server-side reward creation flow. When a merchant saves a Shopify reward, Nudj:

1. Validates the linked Shopify config (discount id, product id, or redemption path).
2. Calls Shopify to create or reserve the backing object.
3. Persists the reward against the community.

## Unlinking rewards

PR #1992 added an individual unlink option for discount-backed rewards — merchants can detach the Shopify object from a single reward without removing the entire Shopify integration.

## Reward authoring UX

Two UX PRs shape how rewards are edited from the Shopify embedded admin:

* PR #1974 — consolidated rewards into a single unified card (replacing the previous split UI).
* PR #1981 — inline reward form modal for giveaway and exclusive rewards, so merchants stay in context instead of opening a new screen.

## Configuration precedence

A reward can reference a product, a discount, or a checkout link. When multiple are configured, the runtime resolves in this order: checkout link → discount function (free product) → discount code → synced product metadata. Picking a single backing is the recommended path; multi-backing is an advanced pattern surfaced only when your merchandising team explicitly requires it.

## Next steps

<CardGroup cols={2}>
  <Card title="Promotions & multipliers" icon="fire" href="/enterprise/shopify/promotions-and-multipliers">
    Points multipliers, streak rewards, and achievement templates.
  </Card>

  <Card title="Reward integration overview" icon="wallet" href="/enterprise/reward-integration">
    Higher-level integration patterns including webhook-driven delivery.
  </Card>
</CardGroup>

> Last reviewed: 2026-04 · Related PRs: #1378, #1447, #1459, #1461, #1467, #1492, #1493, #1974, #1981, #1992, #2160
