> For the complete documentation index, see [llms.txt](https://help.dollarlabs.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.dollarlabs.io/dollarback-store-credit/earning-cashback-programs/set-up-purchase-cashback.md).

# Set up purchase cashback

{% embed url="<https://dollarlabs.neetorecord.com/watch/681701e0ab40e1691dbe>" %}

*This article's section starts at 1:04 in the video.*

By the end of this page you'll have a live purchase cashback program: a percentage or fixed amount back on orders, optionally limited to certain products or customers, scheduled between dates, and paid as credit that expires when you choose.

The program editor has four sections, and this page follows them in order: **Basic details**, **Eligibility**, **Reward**, and **Advanced**.

<figure><img src="https://2844543096-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcVBfwy7Yj4tU8TsxkHEr%2Fuploads%2Fgit-blob-fc67ac9a26657817b6dd98fcc25bd41a455b7bd1%2Fdb-purchase-editor-map-annotated.png?alt=media" alt="An expanded purchase reward named Cleanse &#x26; Prep, showing the sections Basic details, Eligibility, Reward and Advanced from top to bottom." width="560"><figcaption><p>The editor has four sections. Credit expires is in Reward, and customer tags are in Eligibility, not in Advanced.</p></figcaption></figure>

## Prerequisites

* Widgets activated in your theme so customers can see what they earn; see [Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme.md)
* Global settings reviewed (calculation base, trigger, holding period); see [Settings](/dollarback-store-credit/settings.md)

## Step 1: Basic details

1. Open **DollarBack admin → Cashback** and choose the **Purchase reward** type.
2. **Title**: a name customers will recognize. It appears in widgets and emails.
3. **Start date**: the program starts paying at the beginning of this day, in your store's time zone.
4. **Set an end date** (optional): tick it and pick an **End date** for seasonal boosts. The program pays through the whole end date, then stops on its own; you don't need to remember to switch it off. Leave it unticked to run indefinitely.

<figure><img src="https://2844543096-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcVBfwy7Yj4tU8TsxkHEr%2Fuploads%2Fgit-blob-7ca20844b2876337676f0421190425054df22a41%2Fdb-home-manage-configurations-annotated.png?alt=media" alt="DollarBack home page programs card with the Cashback tab selected, a table of four programs, and a Manage configurations button."><figcaption><p>To open the program editor, select the Cashback tab on the home page and click Manage configurations.</p></figcaption></figure>

## Step 2: Choose which products earn

Under **Eligibility**, the **Applies to** field decides which order lines earn:

| Option                   | Earns cashback on                                     |
| ------------------------ | ----------------------------------------------------- |
| **All products**         | Every line in the order                               |
| **Specific collections** | Lines whose product is in the selected collections    |
| **Specific products**    | Lines for the selected products                       |
| **Specific variants**    | Only the selected variants (e.g. just the 30 ml size) |

For **Order goal** programs this same selection also decides what counts toward the goal threshold; see [Scoped goals](#scoped-goals-count-only-certain-products-toward-the-target) below.

{% hint style="warning" %}
**Programs compete; they never stack.** When more than one program matches the same order line, exactly one wins for that line. Programs targeting specific collections, products, or variants claim their lines before the all-products program runs, even when the all-products rate is higher: a 10% collection program beats a 15% store-wide program on that collection. Between targeted programs there is no variant-over-product-over-collection ranking; the one paying the most for the line wins. Full detail and a scenario table in [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated.md).
{% endhint %}

## Step 3: Choose which customers earn (customer tags)

Also under **Eligibility**, two tag fields decide **who** can earn from this program. Both use your Shopify customer tags, the same ones you see on the customer in Shopify admin.

<figure><img src="https://2844543096-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcVBfwy7Yj4tU8TsxkHEr%2Fuploads%2Fgit-blob-60b184cbffcc12ee21bed805ef73fecf107c7b9e%2Fdb-purchase-eligibility-tags-annotated.png?alt=media" alt="Eligibility section with Applies to set to Specific collections, 1 selected, and greyed Include customer tags and Exclude customer tags fields." width="560"><figcaption><p>Customer tags are in Eligibility, next to Applies to. When tiers are on, the tag fields are greyed out and ignored.</p></figcaption></figure>

* **Include customer tags**: only customers carrying **at least one** of these tags earn from this program. Leave it empty and every customer can earn.
* **Exclude customer tags**: customers carrying **any** of these tags never earn from this program, even if they also carry an include tag.

What you can build with them:

| Goal                                                         | Include      | Exclude            |
| ------------------------------------------------------------ | ------------ | ------------------ |
| A higher rate for your VIPs only                             | `VIP`        |                    |
| A store-wide program that skips staff and wholesale accounts |              | `staff, wholesale` |
| An offer for one customer group, minus a sub-group           | `newsletter` | `wholesale`        |

Pair a tag-gated program with a normal one to run "everyone gets 5%, VIPs get 10%": create a 5% program for everyone with `VIP` excluded, and a 10% program with `VIP` included.

A few details that keep expectations straight:

* Tags must match exactly, including spelling and capital letters. Check them against the customer in Shopify admin.
* DollarBack reads the customer's tags when it processes the order. A tag added after that doesn't change an order that has already been processed.
* These tags only affect **this** program. To stop a customer earning from every program at once, use the global tag exclusion in Settings; see [Exclude customers from earning](/dollarback-store-credit/earning-cashback-programs/exclude-customers-from-earning.md).
* Tags are easy to apply automatically: Shopify Flow, customer segments, or at import time.

{% hint style="info" %}
**Using loyalty tiers?** When tiers are enabled, the tag fields are greyed out and ignored. Tiers then decide who earns from which program: link the program to a tier instead; see [Link cashback programs to tiers](/dollarback-store-credit/loyalty-tiers/link-cashback-programs-to-tiers.md).
{% endhint %}

## Step 4: Set the reward

### Reward kind

The **Reward** section starts with **Reward kind**:

* **Store credit** (the default): the customer earns credit into their Shopify store credit balance. The rest of this step covers this option.
* **Discount code**: the order earns a code from your Reward marketplace instead of credit; see [Reward discount codes instead of store credit](/dollarback-store-credit/earning-cashback-programs/reward-discount-codes-instead-of-store-credit.md).

### Reward type and value

Pick the value style with the **Percentage / Fixed / Order goal** selector:

* **Percentage**: e.g. 10% of the eligible amount back.
* **Fixed**: a set amount per item. Fixed values multiply by quantity, and per-line cashback never exceeds what the customer actually paid for that line.
* **Order goal**: tiered rewards by spend, on the whole order or just targeted products (see [Order goals](#order-goals-optional) below).

### Credit expires

**Credit expires** sets how many days the customer has to spend the credit this program issues. Enter `0` for credit that never expires.

<figure><img src="https://2844543096-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcVBfwy7Yj4tU8TsxkHEr%2Fuploads%2Fgit-blob-fb3c2a1e47f77fabd19d19b7badb89b9e0140e96%2Fdb-purchase-reward-expiry-annotated.png?alt=media" alt="Reward section with Reward kind Store credit, Reward type Percentage selected, Percentage 5 %, and Credit expires 0 days with the helper 0 = never expires." width="560"><figcaption><p>Credit expires is in the Reward section, next to the cashback value. Each program has its own expiry.</p></figcaption></figure>

* **The clock starts when the credit is issued, not when the order is placed.** If your global settings hold credit until fulfilment or for a holding period, the expiry window begins once the credit actually lands in the customer's balance. With a 14-day holding period and 30-day expiry, the customer has the full 30 days from the moment they receive the credit.
* **Each program has its own window.** You can give a seasonal boost a short 30-day window to drive a quick return visit, while your everyday program uses 365 days. If one order earns from two programs with different windows, the customer receives separate credits, each with its own expiry date.
* **Changes apply to new credit only.** Changing the window later doesn't move the expiry date of credit already issued.
* **When credit expires**, Shopify removes whatever is left of it from the customer's balance. Spent credit is unaffected.
* **Remind customers before it lapses.** Reminder emails (and the matching Klaviyo, Omnisend and Flow events) go out on the schedule you set in Notifications; see [Credit expiry & reminders](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders.md).

### Order goals (optional)

With **Order goal** selected, you build a ladder of spend thresholds instead of a single rate. **Credit expires** still applies to whatever the goal pays.

1. Pick the **Goal type**, which controls how every rung of the ladder pays out:
   * **Percentage of order goal**: the reward is a percentage of the eligible spend.
   * **Fixed cashback**: the reward is a set credit amount.
2. Each goal has two fields: **When order value equals or exceeds** (the threshold, in your store currency) and **Customer will earn store credits** (the percentage or amount). Use **Add order goal** to add more rungs; a program keeps at least one.

For example: $5 back at $75, $15 back at $150.

<figure><img src="https://2844543096-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcVBfwy7Yj4tU8TsxkHEr%2Fuploads%2Fgit-blob-a17ac67cb5b788f39c0c1def91e69b582a599eac%2Fdb-purchase-order-goals-annotated.png?alt=media" alt="Reward section of a new purchase reward with Order goal selected, the choices Percentage of order goal and Fixed cashback, two goal rows, and an Add order goal button." width="560"><figcaption><p>With Order goal selected, you build a ladder of thresholds. The highest one that the order meets pays.</p></figcaption></figure>

{% hint style="info" %}
Goals are **highest-met wins, not cumulative**. An order of $160 with the ladder above earns $15, not $5 + $15. Widgets show customers their progress toward the next threshold.
{% endhint %}

#### Scoped goals: count only certain products toward the target

Order goals respect the program's product targeting from [Step 2](#step-2-choose-which-products-earn). With **All products** selected the threshold is measured against the whole order, but if you target **Specific collections**, **Specific products**, or **Specific variants**, both sides of the goal narrow to the matching lines:

* **The threshold counts only spend on matching items.** A $150 goal on your Serums collection needs $150 of serums in the cart; other products don't move the needle.
* **The payout is based on the same spend.** A percentage goal pays its percentage of the matched spend, not the full order, and the credit is attributed proportionally across the matching lines (which keeps later refund clawbacks accurate per line).

This is how you build offers like "spend $100 on skincare, get $10 back" without the rest of the cart qualifying the goal.

A few details that keep expectations straight:

* Spend is measured **after discounts** on the matching lines, and store credit spent on the order reduces the matched spend proportionally before the threshold check.
* Thresholds are set in your **store currency**; for customers shopping in another currency, DollarBack converts at the order's rate automatically.
* Gift-card lines don't count toward goals unless your global settings give cashback on gift cards.

## Step 5: Advanced options

The **Advanced** section controls who sees the offer and which orders it pays on.

<figure><img src="https://2844543096-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcVBfwy7Yj4tU8TsxkHEr%2Fuploads%2Fgit-blob-9be6eda9b7f45b83e7c61c10af33705c64c41f1a%2Fdb-purchase-advanced-annotated.png?alt=media" alt="Advanced section with Who can see this offer set to Everyone, Give cashback when discount codes are used ticked, and unticked sales channel boxes Online Store, Shop, Point of Sale and Draft orders." width="560"><figcaption><p>Advanced holds only visibility, the discount-code rule and sales channels. Credit expires is in Reward, and customer tags are in Eligibility.</p></figcaption></figure>

### Who can see this offer

This decides which shoppers see the program in your storefront widgets:

| Option                  | Shown to                                                                                                           |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------ |
| **Everyone**            | All shoppers                                                                                                       |
| **Logged-in customers** | Only shoppers signed in to a customer account                                                                      |
| **Guests only**         | Only shoppers who aren't signed in, e.g. to show "create an account and earn 10% back"                             |
| **Members only**        | Only customers with an active paid membership. This option appears only if paid memberships are part of your plan. |

{% hint style="warning" %}
Visibility controls **what shoppers see**, not **who earns**. A program set to **Logged-in customers** still pays on an eligible order from a customer who never saw it. To limit who earns, use customer tags ([Step 3](#step-3-choose-which-customers-earn-customer-tags)) or tiers.
{% endhint %}

### Give cashback when discount codes are used

Ticked by default. Untick it and any order where the customer entered a **discount code** earns nothing from this program: the whole order, not just the discounted lines.

* Only codes count. Automatic discounts don't switch this off, though cashback is still calculated on the discounted price.
* The setting is per program. If another program that matches the order still allows codes, that program can pay instead.
* Typical use: stop customers stacking an influencer or sale code on top of a generous cashback rate, while keeping a smaller everyday program that pays on every order.

### Restrict to sales channels

Limit earning to specific channels: your installed channels (Online Store, Point of Sale, and so on) are listed, plus **Draft orders** as its own checkbox. Leave all of them unchecked to allow every channel.

Use this to keep POS orders, marketplace channels, or admin-created draft orders out of one program without affecting the others.

### Save

Save the program and confirm it shows as enabled in the program list.

## Verify it works

1. On the storefront, open a targeted product. The product-page message should show the cashback for it.
2. Place a test order that qualifies (and crosses a goal threshold if you set one). If you used customer tags, place it as a customer who carries the right tags.
3. In **DollarBack admin → Analytics → Activity**, find the order and check the credited amount and program name match what you expect. Remember the trigger event and holding period from your global settings control *when* the credit appears; see [When credit is issued](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued.md).
4. If you set an expiry, open the customer in Shopify admin and check the credit's expiry date: it should be the day the credit was issued plus your **Credit expires** days.

## Common issues

* Order earned less than expected: usually a discount on the order or a competing program winning the line; see [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated.md).
* No credit at all: check trigger timing, dates, customer tags, the discount-code setting, sales channels, and exclusions: [A customer didn't receive cashback](/dollarback-store-credit/troubleshooting-and-faq/customer-didnt-receive-cashback.md).
* A tagged customer didn't earn: check the tag's exact spelling against the customer in Shopify admin, and whether loyalty tiers are enabled (tiers override the tag fields).
* Nothing shows on the product page: check **Who can see this offer**, then see [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing.md).

## Related articles

* [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated.md)
* [When credit is issued](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued.md)
* [Credit expiry & reminders](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders.md)
* [Exclude customers from earning](/dollarback-store-credit/earning-cashback-programs/exclude-customers-from-earning.md)
* [Link cashback programs to tiers](/dollarback-store-credit/loyalty-tiers/link-cashback-programs-to-tiers.md)
* [Reward discount codes instead of store credit](/dollarback-store-credit/earning-cashback-programs/reward-discount-codes-instead-of-store-credit.md)
* [Settings](/dollarback-store-credit/settings.md)
