> 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-79d6299cedb01571869ecc66b54f174460beac63%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 → Home**, select the **Cashback** tab and click **Manage configurations**. 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 00:00 on this day, in your store's time zone. The editor shows the time zone under the date, for example "(Europe/Lisbon time)".
4. **Set an end date** (optional): tick it and pick an **End date** for seasonal boosts. The program pays through the whole end date, up to 23:59:59 in the same time zone, then stops on its own; you don't need to remember to switch it off. Leave it unticked to run indefinitely. An order placed while the program ran keeps its cashback after the end date: credit still in a [holding period](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued.md) is released as normal (unless its fixed expiry date has passed; see [Credit expires](#credit-expires) below), and later refunds and edits use the programs saved on that order.

{% hint style="info" %}
**Back-to-back programs don't overlap.** A program that ends on Nov 15 and another that starts on Nov 16 hand over at midnight, store time, with no gap and no overlap.

**Dates are checked when your trigger fires.** With **Order Created** (the default), that's the moment the order is placed. With **Order Paid** or **Order Fulfilled**, it's the moment the order is paid or fulfilled. So with Order Paid, an order placed late on the end date and paid the next day (for example by bank transfer or cash on delivery) misses the program. See [When credit is issued](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued.md).
{% endhint %}

<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-2dc15fe6cdf5d2e1eebd493005818d85c483a4ab%2Fdb-p2-es-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 store-credit programs ignore them.</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 order-based program at once, use the global tag exclusion in Settings (it doesn't cover signup, birthday, social, review, custom or referral rewards); 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 for store-credit programs only. A program that rewards a **discount code** still checks the tags it had saved before tiers were turned on, even though you can't edit them. Tiers then decide who earns from which program: a customer earns only from the programs linked to their tier, and a customer with no tier earns no purchase cashback. Tiers replace store-wide earning; they are not an extra layer on top of it. Link the program to every tier that should earn from it; 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** decides how long the customer has to spend the credit this program issues. Pick one of three options:

| Option                     | When the credit expires                                                            | Good for                                                 |
| -------------------------- | ---------------------------------------------------------------------------------- | -------------------------------------------------------- |
| **Never**                  | It doesn't                                                                         | Everyday programs, if you'd rather not set a deadline    |
| **After a number of days** | That many days after each credit is issued, so every customer gets the same window | Always-on programs: "spend it within 90 days"            |
| **On a date**              | At one exact date and time, for every credit the program issues                    | Seasonal campaigns: "Black Friday credit expires Feb 28" |

<figure><img src="https://2844543096-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcVBfwy7Yj4tU8TsxkHEr%2Fuploads%2Fgit-blob-0a748b23b194bb058681ec95e34e1d7a7e3f9cc6%2Fdb-purchase-reward-expiry-annotated.png?alt=media" alt="Reward section with Reward kind Store credit, Reward type Percentage, Percentage 5 %, and Credit expires set to On a date with an expiry date and a time field that shows the store&#x27;s time zone." 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>

#### After a number of days

* **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 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.
* Days are counted in whole 24-hour periods from the moment of issue.

#### On a date

Choose **On a date**, then pick the date and the time. The time defaults to 23:59, and it's in your store's time zone: the zone is shown in the time field (hover it for the full name). Customers see the same moment in their emails and on the storefront.

* **Every credit expires at the same moment**, whether the customer earned it on day one of the campaign or the day before the deadline.
* **The date must be in the future.** The editor won't save a date that has passed, and it warns you if the date is less than an hour away.
* **The program stops paying once the date passes.** An order placed after the expiry moment earns nothing from this program, because the credit would already be expired. Set an end date as well if you want the program to stop earlier.
* **Watch your holding period.** With a holding period, credit is issued days after the order. If that lands after the expiry date, the customer gets no credit for that order. The editor shows a warning when your holding period and expiry date overlap ("Orders after … get no credit"), and so does Settings. Leave enough room: for a campaign that ends on Dec 1 with credit expiring on Feb 28, a holding period of up to 88 days is safe.

#### For every option

* **Each program has its own expiry.** You can give a seasonal boost a fixed date while your everyday program uses 365 days. If one order earns from two programs with different expiry settings, the customer receives separate credits, each with its own expiry.
* **Changes apply to new credit only.** Changing the expiry later doesn't move the expiry 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 up to $15, never $5 + $15. It can be less: if another program pays more on some of the order's lines, those lines go to that program and the goal pays only its share for the lines it kept (or nothing if it keeps none). See [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated.md#step-4-which-program-claims-each-line). 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" |

{% 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.

### Switch it on and save

A new program starts **Disabled**. Click the toggle next to the status badge at the top of the program card, then **Save**. The badge changes to **Enabled** (or **Scheduled** if the start date is still ahead).

## Program status and banners

Each program card in the list shows a status badge next to its on/off toggle:

| Badge         | Meaning                                                                                                                                                                                         |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Enabled**   | The toggle is on and today is inside the program's dates. The program pays on eligible orders.                                                                                                  |
| **Scheduled** | The toggle is on, but the **Start date** is still ahead. Hover the badge to see when it starts, in your store's time zone.                                                                      |
| **Disabled**  | The toggle is off. The program pays nothing until you switch it on and save.                                                                                                                    |
| **Expired**   | The **End date** has passed, or the fixed credit expiry date (**Credit expires → On a date**) has passed. The program pays nothing, and the toggle is locked: change the date to bring it back. |

**Expired** wins over the toggle: an expired program shows **Expired** even when its toggle is on. A program that is switched off before its start date shows **Disabled**, not **Scheduled**.

If you use [loyalty tiers](/dollarback-store-credit/loyalty-tiers/loyalty-tiers-overview.md), the card can also show a banner:

* **Used by tiers: Gold, Silver** (blue): the program is linked to these tiers, and their members earn from it.
* **This config is not assigned to any tier. It won't be used when tiers are active.** (yellow): tiers are switched on and no tier links this program, so nobody earns from it. Link it to a tier on the **Tiers** page, or delete it.

<figure><img src="https://2844543096-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcVBfwy7Yj4tU8TsxkHEr%2Fuploads%2Fgit-blob-c9fd0ef7ed125ff488aa4314e42ecfabeabc3375%2Fdb-f1-program-status-banners-annotated.png?alt=media" alt="Two purchase program cards. The first, Cleanse &#x26; Prep, has a green Enabled badge, its toggle on, and a blue banner Used by tiers: Gold, Silver, Bronze. The second, Untitled purchase reward, has a yellow Disabled badge, its toggle off, and a yellow banner This config is not assigned to any tier. It won&#x27;t be used when tiers are active."><figcaption><p>A new program starts Disabled. With tiers on, a program that no tier links shows a yellow warning.</p></figcaption></figure>

## What customers see

<figure><img src="https://2844543096-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcVBfwy7Yj4tU8TsxkHEr%2Fuploads%2Fgit-blob-2f0979e79640da3b7e21882a98d7892e12879fd9%2Fdb-cx-product-page-message.png?alt=media" alt="Product page with the message You will get $1.20 cashback due to Cleanse &#x26; Prep to select items., an info icon, and the Add to cart button below it." width="470"><figcaption><p>On a product that the program targets, your customers see the cashback it earns and the program's title.</p></figcaption></figure>

<figure><img src="https://2844543096-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcVBfwy7Yj4tU8TsxkHEr%2Fuploads%2Fgit-blob-217fdb114d4ccb9415ec58021107e96edfa94acb%2Fdb-cx-cart-message.png?alt=media" alt="Cart summary with the message You will get $2.50 cashback due to Cleanse &#x26; Prep to select items., the estimated total and a Check out button." width="410"><figcaption><p>In the cart, your customers see the cashback that the eligible items in the cart earn.</p></figcaption></figure>

<figure><img src="https://2844543096-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcVBfwy7Yj4tU8TsxkHEr%2Fuploads%2Fgit-blob-f46e33f547e2836e65ffbd6573643c782f4237b2%2Fdb-cx-thank-you-cashback.png?alt=media" alt="Thank-you page order summary with the banner Congratulations! You earned $2.33 and You earned $2.33 credit for your next order, above four items and totals that include Store credit −$20.00." width="430"><figcaption><p>On the thank-you page, your customers see the credit they earned: $2.33 here, less than the $2.50 estimate, because this store gives no cashback on the part paid with store credit.</p></figcaption></figure>

<figure><img src="https://2844543096-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcVBfwy7Yj4tU8TsxkHEr%2Fuploads%2Fgit-blob-9748a7fe0b883f8ac17d4d9fea1ec434f195dbf5%2Fdb-cx-email-credited.png?alt=media" alt="Email with the subject Maya, You Just Earned $2.33 for Shopping with Us!, the heading Congratulations, Maya!, the line You&#x27;ve received $2.33 in store credit, the new balance $12.33 and a Visit store button." width="560"><figcaption><p>When the credit lands, your customers get an email with the amount and their new balance. This demo store uses a custom subject line.</p></figcaption></figure>

## 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, then **Store credit → Expirable amounts**, and check the credit's **Expiration date**. With **After a number of days**, it's the moment the credit was issued plus that many days. With **On a date**, it's exactly the date and time you picked.

## 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 on store-credit programs).
* 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)
