For the complete documentation index, see llms.txt. This page is also available as Markdown.

Reward discount codes instead of store credit

Any cashback program can pay out a discount code instead of store credit. This is useful when you'd rather fund a next-purchase incentive than a spendable balance. This page covers switching a program over, how the reward itself is defined, how codes are delivered, and the stacking caveat you must know before going live.

Prerequisites

  • A cashback program of any type (Set up purchase cashback or any other)

  • A reward built on the Reward marketplace page with Cashback triggers enabled under its Available in setting; see Set up the reward marketplace

  • The "Discount code earned" email enabled in DollarBack admin β†’ Notifications, so customers actually receive their codes

Step 1: Switch the reward kind

  1. Open the program in DollarBack admin β†’ Cashback.

  2. Change Reward kind from Store credit to Discount code.

  3. Under Reward to give, pick the reward this program should issue. The list shows your marketplace rewards; builds and edits live on the Reward marketplace page. If the list is empty, create a reward there first.

  4. Optionally set Limit issues per customer to cap how many times this program auto-issues the code to one customer. Leave blank for unlimited.

  5. Save. From now on, when this program triggers, the customer gets a unique code instead of credit.

What the code grants (product, order, and/or shipping discounts, caps, cart-group targeting, redemption rules) all comes from the reward's definition, so several programs can hand out the same reward, and editing the reward updates them all. See Cart groups, redemption rules & rejection messages for the gating options.

How the codes work

  • One unique code per event, formatted {prefix}-{random}-{discriminator}. The discriminator ties every code back to the program that issued it; that's how per-program analytics (issued / used / value) are tracked.

  • Expiry comes from the reward (its Expires after (days) setting bakes an expiry into each minted code); frequency comes from the program (its own earn limits plus Limit issues per customer). The reward's Max redemptions / customer field only caps marketplace redemptions, not earned codes.

  • Earned codes are issued free: the customer's credit balance is not touched, whatever the reward's marketplace credit cost is.

  • All codes hang off one shared Shopify discount whose parent code is RDM-(DO NOT DELETE).

Stacking with other discounts

Combination rules (whether reward codes can be used together with order / product / shipping discounts) are set store-wide on the shared discount. Individual programs cannot have independent stacking rules, and changing the rules affects all outstanding codes immediately, including ones customers are already holding. Configure and test this deliberately: Discount combination rules.

How the customer gets the code

When a code is issued:

  • The "Discount code earned" email fires automatically (default subject: "{firstName}, Your Discount Code is Ready!"), carrying the code and a summary of what it grants.

  • The Discount Code Credited event syncs to connected integrations: Klaviyo and Omnisend receive the code, reward summary, and program name for your own flows. See Klaviyo integration.

  • The code also surfaces in the widgets' reward messages on the storefront.

Analytics

Every issuance is logged with the program name and code under DollarBack admin β†’ Analytics β†’ Activity (the Discount codes view), and the Campaigns tab tracks the aggregates per program thanks to the discriminator: codes issued, codes used, conversion, and discount value given.

Verify it works

  1. Trigger the program with a test customer (e.g. place a qualifying order).

  2. Check the inbox. The code email should arrive with the code.

  3. Apply the code on a new checkout and confirm it grants the configured discount.

  4. Confirm the Earned and Used rows in Analytics β†’ Activity, under the Discount codes view.

Common issues

Last updated