# Dollarback: Store Credit

DollarBack adds cashback, referrals, and loyalty tiers to your Shopify store using native store credit. No points, no coupon chaos, one-click redemption at checkout.

DollarBack is a loyalty engine built on **Shopify-native store credit**. Customers earn real dollar balances on every order, watch them grow across your storefront, and spend them with one click at checkout. No point math, no copy-pasted coupon codes.

{% embed url="<https://dollarlabs.neetorecord.com/watch/56c75d6d3b1a7b47b7aa>" %}
What spending store credit looks like for your customers
{% endembed %}

## Why store credit instead of points?

* **It's legible.** "You earned $5" beats "you earned 500 points (worth… something)". Customers instantly know what their balance is worth, so they come back to spend it.
* Spending takes one click. Store credit appears as a payment option at checkout, with no redemption flows and no code to copy.
* The balance stays in sight everywhere: product pages, cart, checkout, thank-you page, customer accounts, and a floating widget add up to [15 storefront touchpoints](/dollarback-store-credit/widgets-and-storefront/widget-map-what-shows-where).

## Start here

1. [How DollarBack works](/dollarback-store-credit/getting-started/how-dollarback-works): the credit lifecycle in five minutes
2. [Quick start: launch your first cashback program](/dollarback-store-credit/getting-started/quick-start-launch-your-first-cashback-program): live in under 30 minutes
3. [Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme): the setup step everyone misses

## What you can build

* **Earning**: [six program types](/dollarback-store-credit/earning-cashback-programs/cashback-program-types-at-a-glance), purchase cashback (with product/collection targeting and order goals), signup, newsletter, birthday, social follows, and [API-triggered custom rewards](/dollarback-store-credit/earning-cashback-programs/custom-rewards-via-api). The [calculation engine](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated) is fully documented, down to rounding.
* **Spending**: a [reward marketplace](/dollarback-store-credit/spending-store-credit-and-rewards/set-up-the-reward-marketplace) where credit buys order discounts, product discounts, or free shipping, plus direct credit payment at checkout with [visibility rules](/dollarback-store-credit/spending-store-credit-and-rewards/hide-store-credit-at-checkout) and [expiry management](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders).
* **Referrals**: ["give $10, get 10%"-style programs](/dollarback-store-credit/referral-program/set-up-your-referral-program) with code-based attribution, multi-config priorities, and [share surfaces](/dollarback-store-credit/referral-program/how-customers-share-referral-links) across the storefront.
* **Loyalty tiers**: [multiplier ladders](/dollarback-store-credit/loyalty-tiers/loyalty-tiers-overview) (e.g. Bronze ×1 → Silver ×1.5 → Gold ×2) with flexible evaluation windows and multi-currency thresholds.
* **Notifications & integrations**: [five branded notification emails](/dollarback-store-credit/notifications/email-notifications-overview) with a [custom sending domain](/dollarback-store-credit/notifications/sender-identity-and-custom-domain), plus [Klaviyo](/dollarback-store-credit/integrations/klaviyo-integration), [Omnisend](/dollarback-store-credit/integrations/omnisend-integration), [Shopify Flow](/dollarback-store-credit/integrations/shopify-flow-triggers-and-actions), [cart drawers](/dollarback-store-credit/integrations/cart-drawer-integrations), [Google Wallet passes](/dollarback-store-credit/integrations/google-wallet-passes), and [store credit for product reviews](/dollarback-store-credit/integrations/store-credit-for-submitting-review).
* **Analytics & operations**: [program analytics with ROI](/dollarback-store-credit/analytics-data-and-account/understand-your-analytics), [referral analytics](/dollarback-store-credit/analytics-data-and-account/referral-analytics), [bulk CSV imports](/dollarback-store-credit/analytics-data-and-account/bulk-import-credit-csv), [B2B company-location credit](/dollarback-store-credit/analytics-data-and-account/b2b-store-credit), and developer access via the [Merchant API](/dollarback-store-credit/developer-tools/merchant-api-keys-and-endpoints) and [storefront window API](/dollarback-store-credit/developer-tools/storefront-window-api).

## Plans

Every feature above is documented with its plan requirements. See [Plans, usage & overage billing](/dollarback-store-credit/analytics-data-and-account/plans-usage-and-overage-billing), or [start a trial](/dollarback-store-credit/getting-started/choose-a-plan-and-start-your-trial) from the app.

## Something not working?

Head to [Troubleshooting & FAQ](/dollarback-store-credit/troubleshooting-and-faq) for symptom-first fixes for widgets, missing cashback, checkout, referrals, emails, and imports. Still stuck? Reach out through the in-app chat with your store URL.


# Getting Started

Install DollarBack, launch your first cashback program, and get every widget live.

* [How DollarBack works](/dollarback-store-credit/getting-started/how-dollarback-works)
* [Quick start: launch your first cashback program](/dollarback-store-credit/getting-started/quick-start-launch-your-first-cashback-program)
* [Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme)
* [Understanding the dashboard](/dollarback-store-credit/getting-started/understanding-the-dashboard)
* [Choose a plan & start your trial](/dollarback-store-credit/getting-started/choose-a-plan-and-start-your-trial)
* [Migrating from another loyalty app](/dollarback-store-credit/getting-started/migrating-from-another-loyalty-app)


# How DollarBack works

DollarBack rewards your customers with store credit for shopping, signing up, referring friends, and more. Customers spend that credit directly at checkout. This page explains the credit lifecycle and the terms you'll see everywhere else in these docs.

## The credit lifecycle: earn → hold → spend → expire

Every dollar of store credit moves through the same four stages.

### 1. Earn

Customers earn credit through **cashback configs**, the rules you create under **DollarBack admin → Cashback**. A config can reward purchases (say, 5% back on everything), account signups, newsletter subscriptions, birthdays, social follows, or custom events you trigger through the API. Referrals are a separate engine with its own rewards, and loyalty tiers can multiply what a customer earns.

The amount is calculated per order from the order's real paid value: discounts reduce the cashback base, and portions paid with existing store credit or gift cards are handled according to your global settings.

### 2. Hold

Credit is issued when the order hits the trigger you choose: created, paid, or fulfilled. If you set a **holding period**, the credit sits in a *pending* state for that many days (0–365) before it becomes spendable. Holding is your refund buffer: if the order is refunded before the hold ends, the pending credit is clawed back before it ever reaches the customer's balance.

### 3. Spend

Once released, credit lands on the customer's Shopify-native store credit balance. Customers spend it two ways:

* **Directly at checkout**: store credit appears as a payment option, and the customer applies as much of their balance as they like.
* **In the reward marketplace**: customers exchange credit for rewards you define, whether that's an order discount, a product discount, or free shipping. Redeeming a reward mints a unique discount code and debits the credit cost immediately.

### 4. Expire

If you set an expiry window, unspent credit expires after that many days. Reminder emails go out at the thresholds you configure (for example 14 days and 3 days before expiry), so customers get a nudge to come back and spend. Expired credit is removed from the balance automatically.

## Store credit vs discount codes

DollarBack can pay rewards in two different currencies, and it matters which one you pick:

|                  | Store credit                                                    | Discount code                                      |
| ---------------- | --------------------------------------------------------------- | -------------------------------------------------- |
| What it is       | Shopify-native store credit on the customer's account           | A unique, single-use Shopify discount code         |
| Where it's spent | At checkout, as a payment option, combinable with any promotion | In the discount code field at checkout             |
| Partial use      | Yes, unused balance stays on the account                        | No, value beyond the cart total is lost            |
| Expiry           | Follows your credit expiry settings                             | Set on the config that issued the code             |
| Stacking         | Not a discount, so no combination rules apply                   | Follows your store-wide discount combination rules |

Any cashback config can pay out a discount code instead of credit, and every marketplace reward is delivered as a code. All reward codes hang off one shared Shopify discount whose parent code is `RDM-(DO NOT DELETE)`. Never delete it in your Shopify admin, or every outstanding code stops working.

## Glossary

| Term                   | Meaning                                                                                                                                                                                   |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Store credit**       | Shopify-native credit on a customer's account, spendable at checkout as a payment option. DollarBack issues, debits, and expires it.                                                      |
| **Cashback config**    | A rule under **DollarBack admin → Cashback** that defines how customers earn: the type (purchase, signup, newsletter, birthday, social, custom), the value, targeting, dates, and limits. |
| **Reward marketplace** | The catalog of rewards customers can buy with credit: order discounts, product discounts, and free shipping. Managed under **DollarBack admin → Redemption**.                             |
| **Referrer / referee** | In a referral, the *referrer* is the existing customer who shares their code and earns a reward; the *referee* is the new customer who uses the code and gets a discount on their order.  |
| **Tier**               | A loyalty level (Advanced plan) with entry conditions and a cashback multiplier. Higher tiers earn more from the same configs.                                                            |
| **Holding period**     | The number of days issued credit stays *pending* before it becomes spendable. Acts as a refund buffer.                                                                                    |
| **Expiry**             | The window after which unspent credit is removed. Reminder emails fire at your configured thresholds beforehand.                                                                          |

## Related articles

* [Quick start: launch your first cashback program](/dollarback-store-credit/getting-started/quick-start-launch-your-first-cashback-program)
* [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated)
* [How customers spend their credit](/dollarback-store-credit/spending-store-credit-and-rewards/how-customers-spend-their-credit)
* [Credit expiry and reminders](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders)


# Quick start: launch your first cashback program

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

*This article's section starts at 0:00 in the video.*

In about ten minutes you'll have a live "5% back on everything" program: a cashback rule, visible widgets, and a test order that lands real credit on a customer account.

## Prerequisites

* DollarBack installed and a plan or trial active ([Choose a plan and start your trial](/dollarback-store-credit/getting-started/choose-a-plan-and-start-your-trial))
* Access to your store's theme editor

## Step 1: Create the cashback rule

1. Open **DollarBack admin → Cashback**. You land on the cashback editor with a type list on the left: **Purchase reward**, **Signup bonus**, **Newsletter signup**, **Birthday gift**, **Social follow**, and **Custom (API)**.
2. With **Purchase reward** selected, click **Add purchase reward**.
3. Give it a **Title**, something like "5% back on everything". The title is internal, but it also appears in your credit logs.
4. Under **Applies to**, keep **All products**.
5. Keep **Reward kind** set to **Store credit**, choose the percentage option, and enter `5`.
6. Leave **Set an end date** off so the program runs indefinitely, and skip the frequency limit for now.
7. Save. You'll see a **Configuration Saved Successfully** toast, and the rule appears in the list as active.

That's the whole earning rule. By default credit is issued when the order is created and is spendable immediately. You can change the trigger, holding period, and calculation base later in **DollarBack admin → Settings** (see [Settings](/dollarback-store-credit/settings)).

## Step 2: Turn on the storefront widgets

Customers can earn without widgets, but they won't *see* anything. The fastest path is the **Storefront Visibility** card on the dashboard:

1. Open **DollarBack admin → Dashboard** and find the **Storefront Visibility** card. It lists your **App Blocks** (Product page cashback, Cart page cashback) and **App Embeds** (Cashback widget, Window variable), each with an **Enabled** or **Disabled** badge.
2. Next to **Cashback widget**, click **Enable**. This deep-links into the Shopify theme editor with the embed ready to activate. Click **Save** in the theme editor.
3. Back on the dashboard, click **Enable** next to **Product page cashback**. The theme editor opens on a product template with the block added. Position it near the price and **Save**.
4. Return to the dashboard and confirm both rows now show **Enabled**.

For every other surface (cart, checkout, thank-you page, customer accounts), see [Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme).

## Step 3: Place a test order

1. Open your storefront in a separate browser profile (or an incognito window) so you're a customer, not an admin.
2. Open any product page. You should see the cashback message ("Earn $X in cashback…") under the price.
3. Create a customer account and sign in.
4. Buy an inexpensive product and complete checkout as normal.

## Step 4: Watch the credit land

* On the storefront, open the floating cashback widget. The balance shows the new credit (5% of what the order actually cost).
* In **DollarBack admin → Analytics**, the credit log shows a new *credited* row linking the customer, the order, and your "5% back on everything" config.

## Verify it works

All three of these should be true within a minute or two of the order:

1. The credit log in **DollarBack admin → Analytics** has a row for the test order.
2. The floating widget shows the balance when the test customer is signed in.
3. On a second checkout with the same customer, store credit appears as a payment option.

{% hint style="warning" %}
If you changed the trigger to *paid* or *fulfilled*, or set a holding period, the credit won't appear until that event happens or the hold elapses. Check the scheduled rewards tab in Analytics instead.
{% endhint %}

## Common issues

* **The product page message or widget doesn't appear** → [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing)
* **The order went through but no credit was issued** → [A customer didn't receive cashback](/dollarback-store-credit/troubleshooting-and-faq/customer-didnt-receive-cashback)
* **Credit exists but isn't offered at checkout** → [Store credit isn't available at checkout](/dollarback-store-credit/troubleshooting-and-faq/store-credit-isnt-available-at-checkout)

## Related articles

* [Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme)
* [Set up purchase cashback](/dollarback-store-credit/earning-cashback-programs/set-up-purchase-cashback)
* [Settings](/dollarback-store-credit/settings)
* [How customers spend their credit](/dollarback-store-credit/spending-store-credit-and-rewards/how-customers-spend-their-credit)


# Activate widgets in your theme

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

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

DollarBack's storefront surfaces live in three different Shopify editors. This page walks through all three (theme, checkout, and customer accounts) and shows how to confirm everything is on from the DollarBack dashboard.

## Prerequisites

* DollarBack installed
* Theme editor access; checkout editor access requires Shopify Plus for checkout blocks

## App embeds vs app blocks

The storefront widgets come in two kinds, and they're activated differently:

|                 | App embeds                                                                                                              | App blocks                                                                                      |
| --------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| What they are   | Site-wide features injected into every page                                                                             | Sections you place inside a specific template                                                   |
| DollarBack's    | **Cashback Widget** (the floating widget), **Cashback Window Variable** (data layer for custom themes and cart drawers) | **Cashback Rewards: Product** (product page message), **Cashback Rewards: Cart** (cart message) |
| Where to enable | Theme editor → app embeds panel                                                                                         | Theme editor → add block/section on the template                                                |
| Positioning     | Fixed by the embed                                                                                                      | You drag it where you want it                                                                   |

{% hint style="warning" %}
Keep the **Cashback Window Variable** embed enabled even though it renders nothing visible. It injects the data the other widgets (and any cart drawer integration or custom theme code) read. With it off, integrations and the storefront API stop working.
{% endhint %}

## Enable the theme surfaces

The fastest route is the **Storefront Visibility** card on **DollarBack admin → Dashboard**: every row with a **Disabled** badge has an **Enable** button that deep-links straight to the right spot in the theme editor. Doing it manually:

1. In Shopify admin, open your theme editor (**Online Store → Themes → Customize**).
2. **Embeds:** open the app embeds panel, find the DollarBack embeds, and toggle on **Cashback Widget** and **Cashback Window Variable**. Click **Save**.
3. **Product page block:** switch the template picker to a product template, add the **Cashback Rewards: Product** block from the app blocks list, and drag it near the price. **Save**.
4. **Cart block:** switch to the cart template and add **Cashback Rewards: Cart** the same way. **Save**.
5. Preview the storefront: the floating widget launcher should appear site-wide, and the cashback message should show on product pages and in the cart.

Each widget's text, colors, and behavior are edited in **DollarBack admin → Customization**, not in the theme editor.

## Checkout and thank-you blocks (Shopify Plus)

{% hint style="info" %}
**Plan:** Checkout blocks require Shopify Plus (a Shopify requirement for checkout editing, not a DollarBack plan gate). Thank-you page blocks follow the same editor.
{% endhint %}

1. In Shopify admin, go to **Settings → Checkout** and open the checkout editor.
2. On the checkout step, add the DollarBack blocks you want: **Checkout Cashback Banner** (shows what the order will earn) and **Checkout Reward Marketplace** (lets customers redeem rewards mid-checkout).
3. Switch to the thank-you page and add **Thank You Cashback** and **Thank You Referral**.
4. **Save** and publish the checkout profile.

## Customer account blocks

These render inside Shopify's new customer accounts:

1. In Shopify admin, open the customer accounts editor (**Settings → Customer accounts**).
2. Add the DollarBack blocks per page. On the orders list: **Store Credit Earned** and **Referral Program - Order List**; on the order status page: **Store Credit Earned** and **Referral Program - Order Status**; on the profile page: **Referral Program - Profile**, **Reward Marketplace - Profile**, and **Wallet Pass - Profile**.
3. **Save**.

## Verify against the dashboard

Go back to **DollarBack admin → Dashboard** and check the **Storefront Visibility** card: every theme row (Product page cashback, Cart page cashback, Cashback widget, Window variable) should show a green **Enabled** badge. Hover a row's name for a description of what it does; **Customize →** jumps to that widget's settings. Then browse your storefront as a signed-in customer and confirm the widget, product message, and cart message all render.

## Common issues

* **A block or embed is on but nothing renders** → [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing)
* **Checkout blocks can't be added**: your store isn't on Shopify Plus; the theme and account surfaces still work on every Shopify plan.
* **A cart drawer app shows no cashback line**: the Window variable embed is off, or the drawer integration isn't enabled → [Cart drawer integrations](/dollarback-store-credit/integrations/cart-drawer-integrations)

## Related articles

* [Widget map: what shows where](/dollarback-store-credit/widgets-and-storefront/widget-map-what-shows-where)
* [Product page and cart cashback messages](/dollarback-store-credit/widgets-and-storefront/product-page-and-cart-cashback-messages)
* [The floating cashback widget](/dollarback-store-credit/widgets-and-storefront/the-floating-cashback-widget)
* [Checkout and thank-you widgets](/dollarback-store-credit/widgets-and-storefront/checkout-and-thank-you-widgets)


# Understanding the dashboard

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

*This article's section starts at 2:51 in the video.*

The dashboard (**DollarBack admin → Dashboard**, titled *Welcome*) is your daily health check: which programs are running, whether the storefront can actually show them, and how much of your plan you've used. This page explains each card.

## Alert banners

When something needs your attention, a banner appears at the top of the page. You may see:

* **Pricing has been updated**: you're on a legacy plan that's being discontinued; pick a current plan on the Plans page.
* **A special plan, just for you**: a custom-priced plan is reserved for your store; view it on the Plans page.

No banner means nothing needs action.

## Programs card

A tabbed summary of everything you've configured, with active/total counts in each tab label:

| Tab                     | Shows                                                                                                                         |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| **Cashback**            | Your cashback configs and their status. Empty state: *No cashback rules yet*, with a **Create cashback rule** button.         |
| **Tiers**               | Each tier's name, priority, multiplier, and status. Empty state offers **Create tiers**.                                      |
| **Referral**            | Each referral config's title, referrer reward, referee discount, and status. Empty state offers **Set up referral**.          |
| **Voucher Marketplace** | Your redemption rewards (order discount, product discount, free shipping) and statuses. Empty state offers **Create reward**. |

A tab reading `Cashback (2/3)` means two of your three configs are active. Every empty state's button jumps straight to the page where you create that program.

## Storefront Visibility card

This is the extensions status card. It tells you whether customers can actually *see* DollarBack. It's split into two columns:

* **App Blocks**: Product page cashback, Cart page cashback
* **App Embeds**: Cashback widget, Window variable

Each row shows an **Enabled** (green) or **Disabled** badge. Disabled rows get an **Enable** button that deep-links into the theme editor with the block or embed pre-selected, so all that's left is to save. Hover a row's name for a description, and use **Customize →** to edit that widget's content and styling.

{% hint style="warning" %}
A program can be active while every widget is disabled, meaning customers would earn credit but never see it. If this card shows red badges, fix that first.
{% endhint %}

## Plan & usage card

* **Current plan**: your plan name and monthly price, with a **Manage** link to the Plans page.
* **Orders this period**: orders counted against your plan limit this billing period, with a progress bar and the period's date range. If your plan has usage-based overage, a line shows how much of the overage cap you've used. **View** opens Analytics filtered to the current period.

Details on how orders are counted and billed: [Plans, usage and overage billing](/dollarback-store-credit/analytics-data-and-account/plans-usage-and-overage-billing).

## Quick links card

Shortcuts to operational tools, currently **Bulk import** ("Upload customer credits from a CSV") with an **Open** button. The **Read Docs** action in the page header opens this help center.

## Common issues

* **Programs card shows active configs but customers see nothing** → check the Storefront Visibility card, then [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing)
* **Orders this period is at or over the limit** → [Plans, usage and overage billing](/dollarback-store-credit/analytics-data-and-account/plans-usage-and-overage-billing)
* **A legacy-pricing banner won't go away** → it clears once you subscribe to a current plan from the Plans page.

## Related articles

* [Quick start: launch your first cashback program](/dollarback-store-credit/getting-started/quick-start-launch-your-first-cashback-program)
* [Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme)
* [Choose a plan and start your trial](/dollarback-store-credit/getting-started/choose-a-plan-and-start-your-trial)
* [Understand your analytics](/dollarback-store-credit/analytics-data-and-account/understand-your-analytics)


# Choose a plan & start your trial

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

*This article's section starts at 7:54 in the video.*

This page shows you how to compare DollarBack's plans, which features each unlocks, and how the free trial works, so you can pick once and not think about billing again.

## Compare plans

Open **DollarBack admin → Plans** (*"Choose the plan that grows with you"*). Each plan card shows its monthly price, its included **Orders per month**, and a feature checklist. Rather than comparing prices first, compare two things:

1. **Order volume.** Every plan includes a monthly order allowance (some are unlimited). Check your store's typical monthly orders and pick a plan whose allowance covers it. Orders beyond the allowance bill as overage on plans that support it. Your live count is always visible on the dashboard's **Plan & usage** card.
2. **Feature gates.** Higher plans unlock operational features:

| Feature (as listed on the plan card) | What it unlocks                                           | Notes                   |
| ------------------------------------ | --------------------------------------------------------- | ----------------------- |
| **Cashback tiers**                   | Loyalty tiers with multipliers                            | Advanced plan and above |
| **Bulk import**                      | CSV credit/debit uploads                                  | Plan-gated              |
| **B2B store credit**                 | Credit for B2B company locations                          | Plan-gated              |
| **Order editing**                    | Recalculating cashback when orders are edited or refunded | Plan-gated              |
| **Integrations**                     | Klaviyo, Omnisend, Flow and friends                       | Per plan card           |

{% hint style="info" %}
Checkout and thank-you page blocks are gated by **Shopify Plus**. That's a Shopify requirement for checkout editing, independent of your DollarBack plan.
{% endhint %}

If your volume outgrows the public plans, the bottom of the page has a custom-pricing contact. Reach out and we'll cap your bill.

## Start your trial

1. On the plan you want, click **Start free trial**. The button shows the trial length for that plan (for example, *X-day free trial*).
2. Approve the subscription in Shopify's billing prompt. Shopify manages the charge, and you won't be billed until the trial ends.
3. You land back in DollarBack with every feature of that plan active immediately. The dashboard's **Plan & usage** card now shows your plan name and the current billing period.

During the trial the plan behaves exactly as paid: order counting, feature gates, everything. Cancel or switch before the trial ends and you pay nothing.

## Changing plans later

Go back to **DollarBack admin → Plans** at any time. Your current plan is marked **You are on this plan**, and other plans show **Upgrade now** (or **Get started** for free options). Upgrades take effect immediately; Shopify prorates the charge. If you see a banner that your plan is no longer offered, pick a current plan, since legacy plans are being discontinued.

## Verify it works

After subscribing, check the dashboard: the **Plan & usage** card shows the plan name and price, and gated pages (for example **DollarBack admin → Tiers** on Advanced, or **Bulk import**) open without an upgrade prompt.

## Common issues

* **A feature page shows "Upgrade Required"**: your current plan doesn't include it; check the feature checklist on the Plans page.
* **Order count seems too high or overage appeared** → [Plans, usage and overage billing](/dollarback-store-credit/analytics-data-and-account/plans-usage-and-overage-billing)
* **Checkout blocks unavailable after upgrading DollarBack**: that gate is Shopify Plus, not the DollarBack plan → [Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme)

## Related articles

* [Plans, usage and overage billing](/dollarback-store-credit/analytics-data-and-account/plans-usage-and-overage-billing)
* [Understanding the dashboard](/dollarback-store-credit/getting-started/understanding-the-dashboard)
* [Loyalty tiers overview](/dollarback-store-credit/loyalty-tiers/loyalty-tiers-overview)
* [Bulk import credit (CSV)](/dollarback-store-credit/analytics-data-and-account/bulk-import-credit-csv)


# Migrating from another loyalty app

{% hint style="info" %}
**Plan:** Bulk import is plan-gated; check that your plan includes **Bulk import** before you start.
{% endhint %}

Moving from another loyalty app means carrying your customers' balances with you. The path: export balances from the old app, reshape them into DollarBack's CSV format, import with notifications off, then spot-check before you announce anything.

## Prerequisites

* A plan that includes bulk import ([Choose a plan and start your trial](/dollarback-store-credit/getting-started/choose-a-plan-and-start-your-trial))
* Balance export access in your old loyalty app
* Not a development store (bulk import is blocked on development stores)

## Step 1: Export balances from the old app

Most loyalty apps offer a CSV export of customer balances (sometimes called points, credits, or wallet balances). Export it *last thing* before switching. Any earning that happens in the old app after the export won't carry over.

{% hint style="warning" %}
If the old app uses **points** rather than currency, decide your conversion rate now (say, 100 points = $1) and convert every row. DollarBack imports currency amounts, not points.
{% endhint %}

## Step 2: Map the columns

Reshape the export into DollarBack's format. Required headers:

| Column                  | Required     | Notes                                                                                                                     |
| ----------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------- |
| `Amount`                | Yes          | Positive number, in currency (convert points first). Quoted values and thousand separators like `"8,260.90"` are handled. |
| `Currency`              | Yes          | e.g. `USD`                                                                                                                |
| `Email` or `CustomerId` | At least one | `CustomerId` (the Shopify customer ID) wins when both are present. Email must match the customer's email in Shopify.      |

Keep the file under **5 MB**; split large migrations into multiple files if needed.

{% hint style="warning" %}
Duplicate rows are **not** deduped: two rows for the same customer credit them twice. Deduplicate in your spreadsheet before uploading.
{% endhint %}

## Step 3: Import with notifications off

1. Open **DollarBack admin → Bulk import** (*"Bulk credit or debit customers by uploading a CSV file"*).
2. Set **Action Type** to **Credit**.
3. Set **Expiry Days**: `0` means the migrated credit never expires; enter a number of days if you want migrated balances to expire.
4. Turn **Notify Customers** **off**. A migration shouldn't blast every customer with a "you just earned credit" email. Announce the switch on your own schedule instead.
5. Optionally turn **Send to Integrations** off too, so the import doesn't trigger Klaviyo/Omnisend/Flow events for every row.
6. Upload the CSV and click **Import CSV**.
7. Watch the job move from pending → processing → completed. Rows commit in small batches; stopping a job keeps everything already processed.

Unknown customers log **"Customer not found"** and the job continues; those rows are skipped, not fatal. Full field-by-field details are in [Bulk import credit (CSV)](/dollarback-store-credit/analytics-data-and-account/bulk-import-credit-csv).

## Step 4: Spot-check balances

1. Download the job's log. It lists every row with customer ID, email, action, amount, currency, status, and message.
2. Filter for anything that isn't a success. "Customer not found" rows usually mean the customer hasn't been migrated into Shopify yet, or the email differs. Fix and re-import *only those rows*.
3. Pick five to ten known customers and compare their DollarBack balance against the old app's export: check the credit log in **DollarBack admin → Analytics**, or sign in to the storefront as a test customer and open the widget.
4. Confirm the totals: the credited sum in Analytics should match your CSV's column total (bulk imports are included in the overview cards).

## Verify it works

Place a test order with a migrated customer account: at checkout, store credit appears as a payment option with the migrated balance available to spend.

## Common issues

* **The job failed or many rows errored** → [My bulk import failed](/dollarback-store-credit/troubleshooting-and-faq/bulk-import-failed)
* **"Customer not found" on rows you expected to work**: the customer doesn't exist in Shopify yet, or the email doesn't match; import customers into Shopify first.
* **A customer was credited twice**: duplicate rows in the CSV; use **Action Type: Debit** with a correction file to remove the excess.
* **Balances imported but not offered at checkout** → [Store credit isn't available at checkout](/dollarback-store-credit/troubleshooting-and-faq/store-credit-isnt-available-at-checkout)

## Related articles

* [Bulk import credit (CSV)](/dollarback-store-credit/analytics-data-and-account/bulk-import-credit-csv)
* [Quick start: launch your first cashback program](/dollarback-store-credit/getting-started/quick-start-launch-your-first-cashback-program)
* [Credit expiry and reminders](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders)
* [Export balances and reports](/dollarback-store-credit/analytics-data-and-account/export-balances-and-reports)


# Earning: Cashback Programs

Every way customers earn store credit, and exactly how the credit engine calculates it.

* [Cashback program types at a glance](/dollarback-store-credit/earning-cashback-programs/cashback-program-types-at-a-glance)
* [Set up purchase cashback](/dollarback-store-credit/earning-cashback-programs/set-up-purchase-cashback)
* [Set up signup & newsletter rewards](/dollarback-store-credit/earning-cashback-programs/set-up-signup-and-newsletter-rewards)
* [Set up birthday rewards](/dollarback-store-credit/earning-cashback-programs/set-up-birthday-rewards)
* [Set up social follow rewards](/dollarback-store-credit/earning-cashback-programs/set-up-social-follow-rewards)
* [Custom rewards via API](/dollarback-store-credit/earning-cashback-programs/custom-rewards-via-api)
* [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated)
* [When credit is issued](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued)
* [Exclude customers from earning](/dollarback-store-credit/earning-cashback-programs/exclude-customers-from-earning)
* [Reward discount codes instead of store credit](/dollarback-store-credit/earning-cashback-programs/reward-discount-codes-instead-of-store-credit)


# Cashback program types at a glance

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

\_This article's section starts at 0:00 in the video.\_

DollarBack has six cashback program types. This page compares them so you can pick the right one before you build. Each type has its own setup article with full steps.

## The six types

Open **DollarBack admin → Cashback** and you'll see the program types in the editor's sidebar. Every type can pay out either **Store credit** (the default) or a **Discount code**; see [Reward discount codes instead of store credit](/dollarback-store-credit/earning-cashback-programs/reward-discount-codes-instead-of-store-credit).

| Type                  | What triggers it                                                                                     | Typical use                                                                                                                 | Setup article                                                                                                                 |
| --------------------- | ---------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| **Purchase reward**   | An order is placed (or paid / fulfilled, per your global trigger setting)                            | Your core earn program: a percentage or fixed amount back on orders, optionally with order-goal tiers and product targeting | [Set up purchase cashback](/dollarback-store-credit/earning-cashback-programs/set-up-purchase-cashback)                       |
| **Signup bonus**      | A customer creates a store account for the first time                                                | Turn guests into account holders so they can see and spend their balance                                                    | [Set up signup & newsletter rewards](/dollarback-store-credit/earning-cashback-programs/set-up-signup-and-newsletter-rewards) |
| **Newsletter signup** | A customer subscribes to email marketing                                                             | Grow your email list with a one-time credit                                                                                 | [Set up signup & newsletter rewards](/dollarback-store-credit/earning-cashback-programs/set-up-signup-and-newsletter-rewards) |
| **Birthday gift**     | The customer's birthday arrives (birthday collected via the widget or API)                           | A once-a-year surprise that brings lapsed customers back                                                                    | [Set up birthday rewards](/dollarback-store-credit/earning-cashback-programs/set-up-birthday-rewards)                         |
| **Social follow**     | A signed-in customer clicks your trackable short link to an off-store page (Instagram, TikTok, etc.) | Reward follows and off-store engagement with click attribution                                                              | [Set up social follow rewards](/dollarback-store-credit/earning-cashback-programs/set-up-social-follow-rewards)               |
| **Custom (API)**      | Your own server calls `POST /api/v1/merchant/custom`                                                 | Reward anything DollarBack can't see: reviews, UGC, in-store visits, quiz completions                                       | [Custom rewards via API](/dollarback-store-credit/earning-cashback-programs/custom-rewards-via-api)                           |

## How to choose

* **Start with a Purchase reward.** It is the engine of the program; every other type layers on top of it. A simple store-wide percentage is enough to launch.
* Signup and Newsletter bonuses are one-shot: each customer can earn each of them once, ever. They're acquisition tools, not recurring rewards.
* **Birthday gifts are scheduled, not instant.** The credit is queued for the customer's date and lands automatically. You can watch the queue in **DollarBack admin → Analytics → Scheduled Rewards**.
* Social follow rewards attribute by click, not by follow. DollarBack credits the customer when they click your short link while signed in; it cannot verify the follow itself on the platform.
* **Custom (API) needs a developer.** Nothing fires automatically; rewards are granted only when your code calls the endpoint with the config's ID.

## Rules that apply to every type

* Each program has its own value, start/end dates, and optional frequency limits.
* Global settings (calculation base, trigger event, holding period, caps, exclusions) apply across all programs. See the [Settings](/dollarback-store-credit/settings).
* When several purchase programs could apply to the same order line, they compete and one wins per line; they never stack. The details are in [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated).

## Related articles

* [Set up purchase cashback](/dollarback-store-credit/earning-cashback-programs/set-up-purchase-cashback)
* [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated)
* [Settings](/dollarback-store-credit/settings)
* [Reward discount codes instead of store credit](/dollarback-store-credit/earning-cashback-programs/reward-discount-codes-instead-of-store-credit)


# 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 and capped by dates, frequency, or order goals.

## 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)
* Global settings reviewed (calculation base, trigger, holding period); see [Settings](/dollarback-store-credit/settings)

## Step 1: Create the program

1. Open **DollarBack admin → Cashback** and choose the **Purchase reward** type.
2. Give the program a name customers will recognize. It appears in widgets and emails.
3. 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 (next step).

## Step 2: Order goals (optional)

With **Order goal** selected, you build a ladder of spend thresholds instead of a single rate.

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.

{% 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 4](#step-4-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 3: Dates and frequency

* **Start date / End date**: the program only pays inside this window. Use an end date for seasonal boosts; you don't need to remember to switch them off.
* **Frequency limit**: cap how often each customer can earn from this program using the **Limit**, **Period**, and **Calculation method** fields (e.g. once per customer per month).

## Step 4: Choose which products earn

Under the targeting options, pick one:

| 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) above.

{% hint style="warning" %}
**Programs compete; they never stack.** When more than one program matches the same order line, exactly one wins for that line. Specific programs (variant → product → collection) run before all-products programs, so a line claimed by a specific program is excluded from your store-wide program. If two programs still match one line, the higher cashback wins. Full detail in [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated).
{% endhint %}

## Step 5: Advanced options

In the program's advanced section you can also:

* **Give cashback when discount codes are used**: uncheck to skip orders that used a discount code.
* **Restrict to sales channels**: limit earning to specific channels (Online Store, POS, **Draft orders**, …). Leave all unchecked to allow every channel.

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).
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).

## 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).
* No credit at all: check trigger timing, dates, frequency limits, and exclusions: [A customer didn't receive cashback](/dollarback-store-credit/troubleshooting-and-faq/customer-didnt-receive-cashback).
* Nothing shows on the product page: see [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing).

## Related articles

* [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated)
* [When credit is issued](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued)
* [Settings](/dollarback-store-credit/settings)
* [Exclude customers from earning](/dollarback-store-credit/earning-cashback-programs/exclude-customers-from-earning)


# Set up signup & newsletter rewards

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

*This article's section starts at 5:02 in the video.*

Two one-shot acquisition rewards: a **Signup bonus** for creating a store account, and a **Newsletter signup** reward for subscribing to email marketing. This page sets up both and explains exactly when each fires.

## Prerequisites

* Widgets activated so new customers see their credit right away: [Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme)

## Set up the signup bonus

1. Open **DollarBack admin → Cashback** and choose the **Signup bonus** type.
2. Set the credit amount (say $5) and, optionally, start and end dates.
3. Save and make sure the program is enabled.

**When it fires:** the moment a customer account is created in Shopify, whether the customer registers on the storefront or you create the account in admin. If the program is disabled or outside its date window at that moment, nothing is issued (and it isn't issued retroactively later).

## Set up the newsletter reward

1. In the same editor, choose the **Newsletter signup** type.
2. Set the credit amount (say $2) and optional dates.
3. Save and enable.

**When it fires:** when a customer's email marketing consent changes to *subscribed*, from the theme's newsletter form, the checkout opt-in checkbox, or a manual change in Shopify admin.

## Where the customer sees the credit

* **Floating widget**: balance updates as soon as the credit lands.
* **Customer account**: the credit balance block shows the amount and the transaction history entry.
* **Email**: the "store credit credited" notification goes out if it's enabled in **DollarBack admin → Notifications**.
* **Admin side**: every grant is logged in **DollarBack admin → Analytics → Activity** with the program name.

## How deduplication prevents double-payouts

Both rewards are strictly **once per customer**:

* The signup bonus is deduped against the credit log: if a customer already has a signup grant for the program, a second one is never issued, even if the account-creation event is delivered twice.
* The newsletter reward is recorded on the customer's profile the first time it's granted. Unsubscribing and re-subscribing later does **not** issue a second credit.
* The two programs are independent: a customer who creates an account **and** subscribes to the newsletter earns both bonuses.

{% hint style="info" %}
Customers imported in bulk or created before the program existed don't receive the signup bonus; it only fires on the account-creation event itself. To credit existing customers, use [Bulk import credit (CSV)](/dollarback-store-credit/analytics-data-and-account/bulk-import-credit-csv).
{% endhint %}

## Verify it works

1. Create a fresh test account on your storefront (use a plus-addressed email like `you+test@yourdomain.com`).
2. Sign in and open the floating widget. The signup credit should be in the balance.
3. Subscribe the same address to your newsletter and confirm the second credit appears.
4. Check both rows in **Analytics → Activity**.

## Common issues

* Credit didn't appear: confirm the program was enabled *before* the account was created, and check the holding period in [When credit is issued](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued).
* Newsletter reward missing: the customer's marketing consent may already have been *subscribed*; the reward only fires on the change to subscribed. See [A customer didn't receive cashback](/dollarback-store-credit/troubleshooting-and-faq/customer-didnt-receive-cashback).
* Customer can't see their balance: see [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing).

## Related articles

* [Cashback program types at a glance](/dollarback-store-credit/earning-cashback-programs/cashback-program-types-at-a-glance)
* [Set up birthday rewards](/dollarback-store-credit/earning-cashback-programs/set-up-birthday-rewards)
* [When credit is issued](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued)
* [Exclude customers from earning](/dollarback-store-credit/earning-cashback-programs/exclude-customers-from-earning)


# Set up birthday rewards

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

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

A birthday reward is a one-shot credit issued on the customer's birthday. You configure the amount once; DollarBack collects birthdays, schedules each customer's credit, and issues it automatically on the day.

## Prerequisites

* The floating widget active in your theme, since it contains the birthday form customers fill in ([Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme))

## Step 1: Create the program

1. Open **DollarBack admin → Cashback** and choose the **Birthday gift** type.
2. Set the credit amount (say $10) and optional start/end dates.
3. Save and enable the program.

## Step 2: Collect birthdays

DollarBack needs to know each customer's birthday before it can schedule anything. There are two ways in:

**The widget form (no work needed).** Once a birthday program is enabled, the floating widget's "ways to earn" area shows a birthday form to signed-in customers. When a customer submits their date, DollarBack stores it on their profile.

**The Merchant API (for custom storefronts or your own forms).** Your server can submit a birthday with:

```
POST /api/v1/merchant/birthday
```

The request carries the customer ID, the birthday (day / month / year), the birthday program's config ID, and the customer's currency, authenticated with your API key. Details and examples: [Merchant API: keys & endpoints](/dollarback-store-credit/developer-tools/merchant-api-keys-and-endpoints).

Either way, the birthday is saved to the customer's profile (as a customer metafield), so it survives and doesn't need to be re-collected each year.

## Step 3: What happens on the day

When a birthday is submitted, DollarBack computes the customer's **next eligible credit date** and queues a scheduled reward. On the date, the credit is issued automatically. The customer gets the credited email (if enabled) and sees the balance in the widget and their account.

You can watch the queue in **DollarBack admin → Analytics → Scheduled Rewards**: pending rewards show the customer and the date they'll fire; completed and failed entries stay visible for auditing.

{% hint style="info" %}
If a customer submits a birthday that already passed this year, the reward is scheduled for their **next** birthday; it isn't paid immediately or backdated.
{% endhint %}

## Verify it works

1. Sign in to your storefront as a test customer and submit a birthday in the widget form.
2. In **Analytics → Scheduled Rewards**, confirm a pending entry exists for that customer with the expected date.
3. To see the payout end to end without waiting a year, submit a test birthday a day or two ahead and check the credit lands on the date.

## Common issues

* No scheduled entry after submitting: the program may be disabled or outside its date window; check **DollarBack admin → Cashback**.
* The widget shows no birthday form: the program must be enabled and the customer signed in; see [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing).
* Credit scheduled but never arrived: check the entry's status in **Scheduled Rewards**, then [A customer didn't receive cashback](/dollarback-store-credit/troubleshooting-and-faq/customer-didnt-receive-cashback).

## Related articles

* [Cashback program types at a glance](/dollarback-store-credit/earning-cashback-programs/cashback-program-types-at-a-glance)
* [Custom rewards via API](/dollarback-store-credit/earning-cashback-programs/custom-rewards-via-api)
* [When credit is issued](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued)
* [Credit logs & scheduled rewards](/dollarback-store-credit/analytics-data-and-account/credit-logs-and-scheduled-rewards)


# Set up social follow rewards

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

*This article's section starts at 3:33 in the video.*

A social follow reward credits customers who visit your off-store page (Instagram, TikTok, YouTube, anywhere with a URL) through a trackable short link. When done you'll have a link you can share in email, link-in-bio, or the widget, with clicks credited automatically.

## Prerequisites

* The floating widget active, so customers have a place to find the link and see their credit ([Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme))

## Step 1: Create the program

1. Open **DollarBack admin → Cashback** and choose the **Social follow** type.
2. Set the credit amount and optional dates.
3. In the **Social link** section, enter the off-store URL customers should land on (e.g. `https://instagram.com/yourpage`) and the label they'll see in their account. Any platform works; it's only a destination URL.

## Step 2: Generate the trackable short link

Click **Generate short link**. DollarBack creates a **Trackable short link** on the `link.dollarlabs.io` domain that redirects to your destination URL.

Share this link anywhere off-store: email campaigns, link-in-bio, QR codes. It also appears to customers inside the widget's "ways to earn" area.

## How click attribution works

* When a **signed-in** customer clicks the short link anywhere on your storefront, DollarBack automatically appends their customer ID to the link, so the click is attributed and the credit is issued, with no manual verification step.
* Clicks from customers who aren't signed in can't be attributed; the visitor is still redirected, but no credit is issued. The widget prompts customers to sign in first.
* Each customer is credited once per social program; repeat clicks don't earn again.

{% hint style="info" %}
DollarBack rewards the **click**, not the follow itself. No platform can confirm to a third party that someone tapped "Follow". If you need a stricter flow (for example, verifying follows yourself), grant the reward from your own server with `POST /api/v1/merchant/social`; see [Merchant API: keys & endpoints](/dollarback-store-credit/developer-tools/merchant-api-keys-and-endpoints).
{% endhint %}

## Verify it works

1. Sign in to the storefront as a test customer.
2. Open the widget, find the social reward, and click the link. You should land on your social page.
3. Back in the widget, the balance should include the reward (it can take a few seconds to land).
4. Check the grant in **DollarBack admin → Analytics → Activity**, and the click against the program.

## Common issues

* Clicked but no credit: the customer probably wasn't signed in when they clicked; have them sign in and click again. See [A customer didn't receive cashback](/dollarback-store-credit/troubleshooting-and-faq/customer-didnt-receive-cashback).
* The reward doesn't appear in the widget: check the program is enabled and inside its dates; see [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing).
* Credit issued twice for one customer: it shouldn't be; each customer/link pair is deduped. If you see it, contact support with the two log rows.

## Related articles

* [Cashback program types at a glance](/dollarback-store-credit/earning-cashback-programs/cashback-program-types-at-a-glance)
* [Custom rewards via API](/dollarback-store-credit/earning-cashback-programs/custom-rewards-via-api)
* [Set up signup & newsletter rewards](/dollarback-store-credit/earning-cashback-programs/set-up-signup-and-newsletter-rewards)
* [The floating cashback widget](/dollarback-store-credit/widgets-and-storefront/the-floating-cashback-widget)


# Custom rewards via API

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

*This article's section starts at 0:00 in the video.*

The **Custom (API)** program type lets you reward anything DollarBack can't see on its own: product reviews, UGC submissions, in-store visits, quiz completions. You define the reward in the admin; your server triggers it with one API call.

## Prerequisites

* A Merchant API key; generate one under **DollarBack admin → Merchant API** (also reachable from **Settings → Developer API**). See [Merchant API: keys & endpoints](/dollarback-store-credit/developer-tools/merchant-api-keys-and-endpoints).
* A server to call the endpoint from. Never call the Merchant API from storefront JavaScript; the key must stay server-side.

## Step 1: Create the custom config

1. Open **DollarBack admin → Cashback** and choose the **Custom (API)** type.
2. Set the credit amount and optional start/end dates.
3. In the **API Reward** section, optionally check **Limit how many times each customer can earn this reward** and set the frequency fields. Limits are enforced server-side on every API call.
4. Save, enable the config, and copy its **config ID**. Your server needs it.

Custom rewards are granted **only** when you call the endpoint with this config's ID. They are never triggered by Shopify webhooks or storefront actions.

## Step 2: Call the endpoint

```
POST /api/v1/merchant/custom
```

| Header              | Value                      |
| ------------------- | -------------------------- |
| `X-DollarBack-Shop` | `your-store.myshopify.com` |
| `Authorization`     | `Bearer <your API key>`    |
| `Content-Type`      | `application/json`         |

| Body field         | Type             | Required | Meaning                             |
| ------------------ | ---------------- | -------- | ----------------------------------- |
| `configId`         | string           | Yes      | The custom config's ID from Step 1  |
| `customerId`       | string or number | Yes      | The numeric Shopify customer ID     |
| `customerCurrency` | string           | Yes      | Currency to credit in, e.g. `"USD"` |

Example:

```bash
curl -X POST "https://<app host>/api/v1/merchant/custom" \
  -H "X-DollarBack-Shop: your-store.myshopify.com" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "configId": "YOUR_CONFIG_ID",
    "customerId": "7345098912345",
    "customerCurrency": "USD"
  }'
```

The exact request base URL, your key, and a copy-ready snippet are shown on the **Merchant API** page in the admin.

## Responses

| Status | Body                                                                                                    | Meaning                                                                                               |
| ------ | ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| 200    | `{ "success": true, "requestId": "…", "message": "Custom reward is being processed" }`                  | Accepted; the credit is processed asynchronously and lands within a few seconds                       |
| 400    | `{ "error": "invalid_config", "reason": "not_found" \| "not_custom" \| "disabled" \| "not_scheduled" }` | The `configId` doesn't exist, isn't a Custom (API) config, is disabled, or is outside its date window |
| 400    | `{ "error": "missing_fields: …" }` or `{ "error": "invalid_json" }`                                     | Malformed request                                                                                     |
| 401    | `{ "error": "unauthorized" }`                                                                           | Wrong or missing API key / shop header                                                                |
| 500    | `{ "error": "internal" }`                                                                               | Retry later                                                                                           |

{% hint style="warning" %}
Passing another config type's ID returns `400 invalid_config` with reason `not_custom`; only configs created as **Custom (API)** can be dispatched through this endpoint. Per-customer frequency limits are enforced server-side, so a limited customer isn't credited again.
{% endhint %}

## Verify it works

1. Send the request for a test customer and confirm the `200` response.
2. Within a few seconds the credit appears in **DollarBack admin → Analytics → Activity**, tagged with the config name.
3. The customer sees the balance in the widget and account, and receives the credited email if enabled.

## Common issues

* `401 unauthorized`: key revoked or headers wrong; regenerate under [Merchant API: keys & endpoints](/dollarback-store-credit/developer-tools/merchant-api-keys-and-endpoints).
* `200` but no credit: check the config's frequency limit and the customer ID; then [A customer didn't receive cashback](/dollarback-store-credit/troubleshooting-and-faq/customer-didnt-receive-cashback).
* Credit in the wrong currency: `customerCurrency` controls the credited currency; send the customer's own currency.

## Related articles

* [Merchant API: keys & endpoints](/dollarback-store-credit/developer-tools/merchant-api-keys-and-endpoints)
* [Cashback program types at a glance](/dollarback-store-credit/earning-cashback-programs/cashback-program-types-at-a-glance)
* [Set up birthday rewards](/dollarback-store-credit/earning-cashback-programs/set-up-birthday-rewards)
* [When credit is issued](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued)


# How cashback is calculated

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

\_This article's section starts at 0:00 in the video.\_

This is the full reference for the cashback engine: exactly how DollarBack turns an order into a credit amount. If a customer's credit ever looks "wrong", the answer is on this page, usually in discounts, program competition, or a cap.

## The pipeline at a glance

For every qualifying order, DollarBack:

1. Checks **eligibility gates**: if any fails, no math runs.
2. Computes a **base amount per order line**: line price minus discounts.
3. **Deducts** portions paid with store credit or gift cards, per your settings.
4. Lets your programs **compete for each line**: one winner per line.
5. Applies the winning program's **value**, then caps, rounding, and currency.

Everything below is per line item; cashback is never computed on the order as one lump.

## Step 1: Eligibility gates

Before any calculation:

* **Excluded customer tags**: tagged customers earn nothing ([Exclude customers from earning](/dollarback-store-credit/earning-cashback-programs/exclude-customers-from-earning)).
* **Sales channels**: a program restricted to specific channels (web, POS, draft orders) skips orders from other channels.
* **Program date windows**: a program outside its start/end dates doesn't participate.
* **Frequency limits**: a customer who has hit a program's limit is skipped by that program.

## Step 2: The base amount, per line

The base for each line is the **line price minus that line's discount allocations**:

* A discount targeted at a product reduces that line's base directly.
* An **order-level discount** (e.g. a 10%-off code) is spread proportionally across all lines, so every line's base shrinks by the same ratio. Every discount reduces cashback; there is no way to earn on the discounted-away amount.

**Order total vs order subtotal.** Your global **Base cashback on** setting decides what counts:

| Mode               | Taxes    | Shipping                                          |
| ------------------ | -------- | ------------------------------------------------- |
| **Order Total**    | Included | Included only if **Include shipping costs** is on |
| **Order Subtotal** | Excluded | Excluded                                          |

In total mode, each line is scaled by the tax-inclusive ratio so that the per-line amounts still sum to the checkout total.

## Step 3: Store credit and gift cards are deducted first

**No cashback on cashback.** Store credit spent on the order is deducted proportionally from every line before calculation, governed by the **When a customer pays with store credit** setting:

| Option                                       | Effect                                                                                |
| -------------------------------------------- | ------------------------------------------------------------------------------------- |
| No cashback                                  | Any store-credit use disqualifies the order entirely                                  |
| Cashback on full order amount                | Credit-paid portion still earns                                                       |
| Cashback on amount paid with real money only | Only the non-credit portion earns (the default mental model: no cashback on cashback) |

**Gift cards have two separate knobs:**

1. **When a customer pays with gift cards**: no cashback / full order amount / non-gift-card portion only.
2. **Give cashback when customers purchase gift card products**: when off, gift-card product lines are removed from the calculation entirely.

Defaults and exact labels: [Settings](/dollarback-store-credit/settings).

## Step 4: Which program claims each line

**Competition is winner-takes-all per line.** Programs never stack:

* Specific programs run first, in specificity order: **variant → product → collection**. A line claimed by a specific program is excluded from your all-products program.
* If two programs still match the same line, the **higher cashback wins** for that line.
* Different lines in one order can be claimed by different programs.

**Order goals pick the highest threshold met**: a $75/$150 ladder pays only the $150 reward on a $160 order, never both. When a goal program targets specific products, variants, or collections, only spend on the matching lines (after discounts) counts toward the threshold, and the reward is calculated on that same spend; see [Set up purchase cashback](/dollarback-store-credit/earning-cashback-programs/set-up-purchase-cashback).

**Tier multipliers are snapshotted per order.** If the customer is in a loyalty tier with a multiplier, the multiplier in force at calculation time is applied and recorded on the order. Changing tier settings later never retroactively changes past orders' cashback. See [Link cashback programs to tiers](/dollarback-store-credit/loyalty-tiers/link-cashback-programs-to-tiers).

## Step 5: Value, caps, and rounding

* **Percentage programs** apply their rate to the line's base.
* **Fixed-value programs** multiply the amount by the line's **quantity** (2 units = 2 × the fixed credit), and each line's cashback is **clamped so it never exceeds what the customer actually paid** for that line.
* **Maximum cashback per order**: if the order's total cashback exceeds the global cap, all programs and lines are **scaled down proportionally**, preserving their relative shares. Nothing is dropped; everything shrinks together.
* **Rounding**: amounts are truncated to 4 decimal places internally, and the **last line absorbs the remainder** so the total stays exact to the cent. If **Round up cashback** is on, the final total is rounded up to the nearest whole number as the very last step.

## Multi-currency

* Amounts are tracked in both your shop currency and the order's presentment currency. Fixed-value cashback converts using **the order's own conversion rate** (presentment ÷ shop), not today's market rate.
* The credit lands in the **customer's resolved currency**, so a customer shopping your EUR market is credited in EUR.

## Worked example (3-line cart with a discount code)

Settings: base = **Order Subtotal**, no cap, round-up off. Programs: **5% on all products** and **10% on the "Serums" collection**.

The customer's cart, with a 10%-off order code applied ($12.40 spread proportionally across $124 of items):

| Line                     | Price       | Discount allocation | Base        | Winning program                | Cashback  |
| ------------------------ | ----------- | ------------------- | ----------- | ------------------------------ | --------- |
| Serum 30 ml × 1 (Serums) | $58.00      | −$5.80              | $52.20      | 10% (specific claims the line) | $5.22     |
| Gel cleanser × 2         | $48.00      | −$4.80              | $43.20      | 5% (all products)              | $2.16     |
| Lip butter trio × 1      | $18.00      | −$1.80              | $16.20      | 5% (all products)              | $0.81     |
| **Total**                | **$124.00** | **−$12.40**         | **$111.60** |                                | **$8.19** |

Points to notice:

* The serum earned 10%, **not** 10% + 5%; the specific program claimed the line and excluded it from the all-products program.
* Every line's base was reduced by its share of the order-level code before any percentage applied.
* With **Round up cashback** on, the customer would receive $9.00 instead of $8.19.
* If a $5.00 **Maximum cashback per order** were set, each line would scale by 5 ÷ 8.19 (≈ $3.19 / $1.32 / $0.49).

## When the credit actually arrives

Calculation and issuance are separate: the trigger event (created / paid / fulfilled) and the holding period decide *when* the customer can spend the result; see [When credit is issued](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued). Refunds and order edits recalculate as a diff against what was issued; see [Refunds, cancellations & order edits](/dollarback-store-credit/spending-store-credit-and-rewards/refunds-cancellations-and-order-edits).

## Common issues

* "The customer earned less than my percentage": a discount code, store-credit payment, or gift card reduced the base; recheck Steps 2–3.
* "Two programs should both apply": they never stack; one wins per line (Step 4).
* "No credit at all": walk the gates in Step 1, then [A customer didn't receive cashback](/dollarback-store-credit/troubleshooting-and-faq/customer-didnt-receive-cashback).

## Related articles

* [Settings](/dollarback-store-credit/settings)
* [When credit is issued](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued)
* [Set up purchase cashback](/dollarback-store-credit/earning-cashback-programs/set-up-purchase-cashback)
* [Refunds, cancellations & order edits](/dollarback-store-credit/spending-store-credit-and-rewards/refunds-cancellations-and-order-edits)


# When credit is issued

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

*This article's section starts at 4:26 in the video.*

Cashback has two clocks: the **trigger** (which order event starts the credit) and the **holding period** (how long the credit stays pending before the customer can spend it). This page explains both, and what happens to pending credit when orders change.

## The trigger: which order event pays

**DollarBack admin → Settings → Trigger & Timing → Give cashback when** offers three options:

| Option              | Credit is calculated and issued when… | Choose it when                                                                                  |
| ------------------- | ------------------------------------- | ----------------------------------------------------------------------------------------------- |
| **Order Created**   | The order is placed                   | You want instant gratification: credit appears while the thank-you page is still open (default) |
| **Order Paid**      | Payment is captured                   | You use manual capture or want to avoid crediting unpaid orders                                 |
| **Order Fulfilled** | The order is shipped/fulfilled        | You want credit only after goods actually leave, for the fewest clawbacks                       |

The trigger is global: it applies to all purchase programs at once.

## The holding period: pending before spendable

**Holding period** (same settings section) delays the credit by **0–365 days**:

* **0 days (default)**: credit is spendable immediately on trigger.
* **1–365 days**: the credit is issued in a **pending** state and released automatically when the period ends.

While pending:

* The customer sees the pending amount in the widget and account (marked as pending, not spendable).
* You see it in **DollarBack admin → Analytics → Scheduled Rewards**, alongside birthday and other delayed credits.
* It cannot be spent at checkout.

{% hint style="info" %}
A holding period roughly matching your return window (e.g. 14–30 days) means refunded orders usually cancel out *before* the customer could spend the credit. That's the cleanest refund story.
{% endhint %}

## What cancels or changes pending credit

When an order is refunded, cancelled, or edited (with order edit tracking enabled, a plan-gated setting under **Settings → Advanced**), DollarBack recalculates the order's cashback and reconciles **as a diff**:

* **Order value went up** (item added) → the difference is issued as additional pending credit.
* **Order value went down** (refund, item removed) → the difference is offset **against pending credit for that program first**; only what's left is debited from the customer's live balance.
* Entries already credited are never rewritten; the log keeps the original credit and shows the adjustment as its own row, so history stays auditable.

Full scenarios (partial refunds, full cancellations, spent-credit cases): [Refunds, cancellations & order edits](/dollarback-store-credit/spending-store-credit-and-rewards/refunds-cancellations-and-order-edits).

## Verify it works

1. Set a short holding period (e.g. 1 day) and place a test order that qualifies.
2. Confirm the credit shows as **pending** in the widget and appears in **Analytics → Scheduled Rewards**.
3. Refund the test order and watch the pending entry offset instead of a balance debit.
4. Set the holding period back to your production value.

## Common issues

* "Credit hasn't appeared": with **Order Paid** or **Order Fulfilled**, nothing is issued until that event actually happens; check the order's payment/fulfillment status first, then [A customer didn't receive cashback](/dollarback-store-credit/troubleshooting-and-faq/customer-didnt-receive-cashback).
* "Customer says credit vanished": a refund likely offset it; find the row in **Analytics → Activity**, under the **Clawbacks** view.
* "Credit shows but can't be spent": it's pending; the release date follows the holding period. Also see [Store credit isn't available at checkout](/dollarback-store-credit/troubleshooting-and-faq/store-credit-isnt-available-at-checkout).

## Related articles

* [Trigger & Timing settings](/dollarback-store-credit/settings/trigger-and-timing)
* [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated)
* [Refunds, cancellations & order edits](/dollarback-store-credit/spending-store-credit-and-rewards/refunds-cancellations-and-order-edits)
* [Credit logs & scheduled rewards](/dollarback-store-credit/analytics-data-and-account/credit-logs-and-scheduled-rewards)


# Exclude customers from earning

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

Not every order should earn cashback: wholesale buyers, staff accounts, marketplace channels, or a program that's out of season. This page covers the four exclusion mechanisms and when to use each.

## 1. Tag exclusions (global)

The broadest tool: **DollarBack admin → Settings → Advanced → Exclude customers by tag**.

1. Enter one or more Shopify customer tags, separated by commas, e.g. `wholesale, staff`.
2. Save. Customers carrying **any** of these tags never earn cashback, from any program, on any channel. The exclusion is checked before any calculation runs, so nothing is issued and nothing needs clawing back.

Tags are managed on the customer in Shopify admin. You can apply them manually, via customer segments and Flow, or at import time.

{% hint style="info" %}
Excluding a tag stops **future** earning only. Credit the customer already holds is untouched and stays spendable.
{% endhint %}

## 2. B2B considerations

Wholesale/B2B buyers usually shouldn't earn consumer cashback:

* The common pattern is to tag B2B contacts (e.g. `wholesale`) and exclude that tag as above.
* If you *do* want B2B orders to earn, the **Give store credit to B2B buyers on company locations** setting (plan-gated, **Settings → Advanced**) credits the **company location's** shared balance rather than the individual buyer; see [B2B store credit](/dollarback-store-credit/analytics-data-and-account/b2b-store-credit).
* Don't rely on exclusion alone for B2B pricing logic: draft orders are also a common B2B path, which the next section can gate per program.

## 3. Sales-channel eligibility (per program)

Each cashback program can be limited to specific sales channels. In the program editor (**DollarBack admin → Cashback**, open the program), find **Restrict to sales channels**:

* Check the channels that should earn: your installed channels are listed, plus **Draft orders** as its own checkbox.
* Leave **all boxes unchecked** to allow every channel (the default).

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

## 4. Program date windows (per program)

A program only pays between its **Start date** and **End date**. Orders outside the window are not matched by that program. That's handy for seasonal boosts and for retiring a program without deleting its history.

## How the gates stack up

All four checks run before any cashback math: excluded tag → no earning at all; otherwise each program checks its own channel restriction, date window, and frequency limit. An order can therefore earn from one program while being excluded from another.

## Verify it works

1. Tag a test customer `wholesale` (or your excluded tag).
2. Place an order for them. A draft order is fine if the program allows draft orders.
3. Check **DollarBack admin → Analytics → Activity** (the **Credits earned** view): no credit row should appear for that order.
4. Remove the tag, order again, and confirm credit is issued this time.

## Common issues

* Excluded customer still earned: the tag must match exactly (check spelling/case against the customer's tags in Shopify admin) and be present *before* the order's trigger event fires.
* Nobody is earning on POS/drafts: check each program's **Restrict to sales channels** boxes; all unchecked means all channels allowed.
* A customer stopped earning unexpectedly: check their tags, then walk [A customer didn't receive cashback](/dollarback-store-credit/troubleshooting-and-faq/customer-didnt-receive-cashback).

## Related articles

* [Advanced settings](/dollarback-store-credit/settings/advanced-settings)
* [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated)
* [B2B store credit](/dollarback-store-credit/analytics-data-and-account/b2b-store-credit)
* [Set up purchase cashback](/dollarback-store-credit/earning-cashback-programs/set-up-purchase-cashback)


# Reward discount codes instead of store credit

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

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](/dollarback-store-credit/earning-cashback-programs/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](/dollarback-store-credit/spending-store-credit-and-rewards/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](/dollarback-store-credit/spending-store-credit-and-rewards/cart-groups-and-redemption-rules) 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)`.

{% hint style="warning" %}
**Never delete the `RDM-(DO NOT DELETE)` discount in Shopify admin.** Every reward code ever issued (earn-side and marketplace) is attached to it; deleting it kills them all at once. If codes suddenly stop applying, this is the first thing to check: [A reward discount code isn't working](/dollarback-store-credit/troubleshooting-and-faq/reward-discount-code-isnt-working).
{% endhint %}

## 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](/dollarback-store-credit/spending-store-credit-and-rewards/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](/dollarback-store-credit/integrations/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

* Code won't apply at checkout: expired, already used, or blocked by combination rules; walk [A reward discount code isn't working](/dollarback-store-credit/troubleshooting-and-faq/reward-discount-code-isnt-working).
* No email arrived: check the template is enabled, then [Emails aren't arriving](/dollarback-store-credit/troubleshooting-and-faq/emails-arent-arriving).
* Code applies but stacks unexpectedly with other discounts: combination rules are store-wide; review [Discount combination rules](/dollarback-store-credit/spending-store-credit-and-rewards/discount-combination-rules).

## Related articles

* [Discount combination rules](/dollarback-store-credit/spending-store-credit-and-rewards/discount-combination-rules)
* [Set up the reward marketplace](/dollarback-store-credit/spending-store-credit-and-rewards/set-up-the-reward-marketplace)
* [Cashback program types at a glance](/dollarback-store-credit/earning-cashback-programs/cashback-program-types-at-a-glance)
* [A reward discount code isn't working](/dollarback-store-credit/troubleshooting-and-faq/reward-discount-code-isnt-working)


# Spending: Store Credit & Rewards

The reward marketplace, checkout behavior, expiry, and what happens on refunds.

* [How customers spend their credit](/dollarback-store-credit/spending-store-credit-and-rewards/how-customers-spend-their-credit)
* [Set up the reward marketplace](/dollarback-store-credit/spending-store-credit-and-rewards/set-up-the-reward-marketplace)
* [Cart groups, redemption rules & rejection messages](/dollarback-store-credit/spending-store-credit-and-rewards/cart-groups-and-redemption-rules)
* [Discount combination rules](/dollarback-store-credit/spending-store-credit-and-rewards/discount-combination-rules)
* [Hide store credit at checkout](/dollarback-store-credit/spending-store-credit-and-rewards/hide-store-credit-at-checkout)
* [Credit expiry & reminders](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders)
* [Refunds, cancellations & order edits](/dollarback-store-credit/spending-store-credit-and-rewards/refunds-cancellations-and-order-edits)


# How customers spend their credit

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

This page walks through the customer side of DollarBack: where shoppers see their balance, how they pay with store credit at checkout, and how they trade credit for rewards in the marketplace. Nothing here requires admin work. It's the journey your customers experience once your programs are live.

## Where customers see their balance

A signed-in customer can check their store credit in several places:

| Surface                  | What it shows                                                              |
| ------------------------ | -------------------------------------------------------------------------- |
| Floating cashback widget | Balance, ways to earn, rewards, and transaction history in a tabbed panel  |
| Customer account pages   | A credit balance block with a banner and filterable transaction history    |
| Loyalty page             | Balance alongside earning options, tiers, and reward history               |
| Thank-you page           | Credit earned on the order just placed, with an expiry note if one applies |

Store credit in DollarBack is Shopify-native store credit, so it also appears in the customer's Shopify account like any other store credit balance.

## Option 1: Pay with store credit at checkout

The most direct way to spend credit:

1. The customer adds products to the cart and proceeds to checkout.
2. In the payment section, store credit appears as a payment option showing the available balance.
3. The customer applies it. If the balance covers the whole order, no other payment is needed; otherwise the remainder is charged to their card or other payment method.
4. The order completes and the spent amount is deducted from their balance immediately.

{% hint style="info" %}
If you've set a visibility condition (for example, only show credit on carts over $50), the payment option is hidden until the cart qualifies. See [Hide store credit at checkout](/dollarback-store-credit/spending-store-credit-and-rewards/hide-store-credit-at-checkout).
{% endhint %}

## Option 2: Redeem a reward from the marketplace

If you've set up the reward marketplace, customers can trade credit for order discounts, product discounts, or free shipping:

1. The customer opens the reward marketplace: in their account pages, in the floating widget's rewards view, or in the checkout marketplace block (Shopify Plus).
2. Each reward card shows what it gives and what it costs in credit, say $5 off an order for 500 credits.
3. The customer redeems a reward. DollarBack mints a unique discount code for them and deducts the credit cost from their balance at that moment.
4. The customer copies the code and applies it in the discount-code field at checkout, on that order or a later one.

{% hint style="warning" %}
Credit is charged when the reward is claimed, not when the code is used. If the customer never uses the code, or the code's value is larger than their cart total, the difference is not returned automatically. Encourage customers to redeem rewards when they're ready to use them.
{% endhint %}

## Verify it works

Sign in to your storefront as a test customer who has a credit balance:

1. Open the floating widget and confirm the balance matches what the admin credit log shows.
2. Start a checkout and confirm store credit appears as a payment option.
3. Redeem a low-cost reward from the account marketplace, apply the code at checkout, and confirm the discount applies and the balance drops by the credit cost.

## Common issues

* Store credit doesn't appear as a payment option: see [Store credit isn't available at checkout](/dollarback-store-credit/troubleshooting-and-faq/store-credit-isnt-available-at-checkout).
* A redeemed reward code is rejected at checkout: see [A reward discount code isn't working](/dollarback-store-credit/troubleshooting-and-faq/reward-discount-code-isnt-working).
* The widget or account block isn't visible on the storefront: see [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing).

## Related articles

* [Set up the reward marketplace](/dollarback-store-credit/spending-store-credit-and-rewards/set-up-the-reward-marketplace)
* [Hide store credit at checkout](/dollarback-store-credit/spending-store-credit-and-rewards/hide-store-credit-at-checkout)
* [Credit expiry & reminders](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders)
* [Customer account blocks](/dollarback-store-credit/widgets-and-storefront/customer-account-blocks)


# Set up the reward marketplace

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

*This article's section starts at 0:00 in the video.*

The reward marketplace lets customers trade store credit for discounts. When you're done here, your storefront widgets, account pages, and (on Shopify Plus) checkout will show a set of rewards customers can claim with their balance.

Rewards do double duty: the same definitions can also be handed out by your cashback programs as earned discount codes. You build a reward once, then decide where it's available.

## Prerequisites

* At least one way for customers to earn credit; see [Set up purchase cashback](/dollarback-store-credit/earning-cashback-programs/set-up-purchase-cashback).
* Marketplace surfaces active in your theme and account editor; see [Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme).

## The page at a glance

Open **DollarBack admin → Redemption**. The **Reward marketplace** page lists your rewards as cards; click a reward to expand its editor in place. Below the list sits the **Combinations** card (stacking rules; see [Discount combination rules](/dollarback-store-credit/spending-store-credit-and-rewards/discount-combination-rules)), and the right column holds a live **Customer preview** plus the **Rejection messages** panel (covered in [Cart groups, redemption rules & rejection messages](/dollarback-store-credit/spending-store-credit-and-rewards/cart-groups-and-redemption-rules)).

Each reward row shows its title, a plain-language summary of what it grants and costs, a status badge, an enable toggle, and edit/delete actions.

## Create a reward

Click **Add reward** and fill in the shared fields:

| Field                          | What it does                                                                                                                                                                                             |
| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Title**                      | Required. Shown to customers, and used to pick this reward from cashback triggers. Make it self-explanatory ("$5 off your order").                                                                       |
| **Credit cost**                | How much credit the customer pays to claim this reward in the marketplace. For a $5-off reward, a cost of $5 of credit is a 1:1 trade; set it lower to make redemption a perk.                           |
| **Expires after (days)**       | Optional. The expiry date is baked into each minted code, counted from the moment it's issued. Blank means codes don't expire.                                                                           |
| **Max redemptions / customer** | Optional. Caps how many times a customer can redeem this reward by spending credit in the marketplace. New rewards start at 1. Codes issued by cashback programs are limited separately, on the program. |

## Choose the discount classes

This is the big idea of the marketplace: one reward can grant **several kinds of discount at once**. Under **Discount classes**, toggle any combination of three tiles:

| Class        | Grants                                         |
| ------------ | ---------------------------------------------- |
| **Product**  | A discount on specific products or collections |
| **Order**    | A discount on the whole order subtotal         |
| **Shipping** | A discount on shipping cost                    |

Each enabled class gets its own config card, and a single redeemed code carries all of them. "20% off the Treat & Restore collection plus free shipping" is one reward, one code.

### Product discount card

* **Discount type**: **Percentage**, **Fixed amount**, or **Specific price** (sets each targeted item to a fixed unit price).
* **Max items discounted**: cheapest eligible items are discounted first; leave blank for unlimited.
* **Maximum total discount**: a cap across all discounted items; leave blank for no cap.
* **Cart groups**, **Redemption rules**, and **Discount applies to** control which items get the discount and when the code can be used; see [Cart groups, redemption rules & rejection messages](/dollarback-store-credit/spending-store-credit-and-rewards/cart-groups-and-redemption-rules).

### Order discount card

* **Discount type**: **Percentage** or **Fixed amount**.
* **Maximum discount** (percentage only): the most the discount can take off; leave blank for no cap.

### Shipping discount card

* **Discount type**: **Percentage** or **Fixed amount**. 100% = free shipping (the default for a new shipping card).
* **Maximum discount** (percentage only): the most you'll take off the shipping rate.
* **Applies to**: **All shipping methods** or **Specific shipping methods**, chosen from your store's shipping rates.

Every class card also carries its own cart groups and redemption rules, so eligibility is configured per class.

## Choose where the reward is available

The **Available in** checkboxes decide which side of DollarBack can hand this reward out:

* **Reward marketplace**: customers can spend store credit to redeem it.
* **Cashback triggers**: cashback configs can issue it as an earned reward; see [Reward discount codes instead of store credit](/dollarback-store-credit/earning-cashback-programs/reward-discount-codes-instead-of-store-credit).

Both are on by default. A reward set to Cashback only disappears from the marketplace but stays selectable in your programs; the row's subtitle shows "Marketplace only" or "Cashback only" so you can tell at a glance.

## Status and ordering

* The toggle on each row switches between **Active** and **Draft**. Draft rewards are hidden from customers but keep their configuration.
* Drag rewards to set their order. When several product-discount rewards could apply to the same cart, the one nearest the top wins.

Saving happens through the save bar; a reward needs a title and at least one discount in an enabled class before it will save. The **Customer preview** panel on the right shows exactly what the shopper will read for the reward you're editing, including its "Redeem terms" once you add rules.

## How redemption works behind the scenes

Understanding the mechanics saves support tickets later:

* **The code is minted first, then credit is debited.** When a customer claims a reward, DollarBack creates a unique discount code and charges the credit cost immediately: at claim time, not when the code is used at checkout.
* **Unused value is lost.** If the code's value exceeds the customer's cart total, standard Shopify behavior applies: the remainder isn't banked for later.
* **There is no automatic rollback.** If a code is never used, or the order it was used on is cancelled, the credit is not refunded automatically. Returning that credit is a manual action. Reach out to support if you need to correct a customer's balance.

{% hint style="warning" %}
Every reward code (marketplace redemptions and earned discount-code rewards alike) hangs off one shared Shopify discount whose code is `RDM-(DO NOT DELETE)`. Never delete this discount in your Shopify admin. If it's deleted, every code your customers hold stops working at once.
{% endhint %}

## Verify it works

1. Sign in to your storefront as a test customer with enough credit for your cheapest reward.
2. Open the reward marketplace (account pages or the floating widget's rewards view) and claim a reward.
3. Confirm the balance drops by the credit cost, then apply the code at checkout and confirm the discount applies.
4. In **DollarBack admin → Analytics → Activity**, check the **Discount codes** view shows the Redeemed row.

## Common issues

* A claimed code doesn't work at checkout: the customer sees one of your [rejection messages](/dollarback-store-credit/spending-store-credit-and-rewards/cart-groups-and-redemption-rules) explaining why; also see [A reward discount code isn't working](/dollarback-store-credit/troubleshooting-and-faq/reward-discount-code-isnt-working).
* A code won't apply alongside another discount: check the **Combinations** card; see [Discount combination rules](/dollarback-store-credit/spending-store-credit-and-rewards/discount-combination-rules).
* Customers can't see the marketplace: check the reward is **Active** and available in the **Reward marketplace**, then see [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing).

## Related articles

* [Cart groups, redemption rules & rejection messages](/dollarback-store-credit/spending-store-credit-and-rewards/cart-groups-and-redemption-rules)
* [Discount combination rules](/dollarback-store-credit/spending-store-credit-and-rewards/discount-combination-rules)
* [How customers spend their credit](/dollarback-store-credit/spending-store-credit-and-rewards/how-customers-spend-their-credit)
* [Reward discount codes instead of store credit](/dollarback-store-credit/earning-cashback-programs/reward-discount-codes-instead-of-store-credit)


# Cart groups, redemption rules & rejection messages

Every discount card on a [marketplace reward](/dollarback-store-credit/spending-store-credit-and-rewards/set-up-the-reward-marketplace) carries its own eligibility engine: **cart groups** name the parts of the cart you care about, **redemption rules** decide when the code can be used, and **rejection messages** are what the customer reads at checkout when it can't. This page covers all three.

## Cart groups: name the parts of the cart

A cart group is a named selection of cart lines. Groups do two jobs: they scope *conditions* ("the customer must have $50 of serums in the cart") and, for product discounts, they scope the *target* ("the discount applies to the serums").

* Click **Add cart group** on a discount card.
* **Name** the group (e.g. "Premium products"). Customers see this name in reward descriptions and checkout messages, so write it for shoppers, not for yourself.
* **Select by**: **Products**, **Collections**, or **Variants**, then pick the items. Switching the kind clears the previous selection. A group with nothing selected matches every line.

The list always starts with **All (default)**, the built-in group that matches the entire cart. With no groups of your own, discounts and conditions simply work cart-wide.

## Discount applies to (product discounts)

A product discount with no cart groups applies to all products. Once you've created groups, the **Discount applies to** selector chooses which group's lines actually receive the discount: **All products** or one named group.

Groups and targets are independent: a condition can test one group while the discount targets another. "Spend $50 on Cleanse & Prep, get 20% off Treat & Restore" is two groups, one condition, one target.

## Redemption rules: when the code can be used

With no rules, a code can always be redeemed. Rules gate it. Each **rule** is a small card holding one or more **conditions**; click **Add rule** to create one, **Add condition** to grow it.

Each condition has four parts:

| Part         | Options                                                                                              |
| ------------ | ---------------------------------------------------------------------------------------------------- |
| **Scope**    | **Whole cart**, or any cart group you've created                                                     |
| **Property** | **Subtotal**, **Quantity**, or **Distinct products**                                                 |
| **Operator** | **is at least (≥)**, **is more than (>)**, **is at most (≤)**, **is fewer than (<)**, **equals (=)** |
| **Value**    | The threshold. Subtotals are measured in your store currency.                                        |

Two AND/OR switches control how things combine:

* **Within a rule**: AND means every condition in the rule must pass; OR means at least one must.
* **Between rules**: when you have several rules, a second AND/OR pill decides whether all rules must pass or any one of them is enough.

That two-level structure covers most real gating. A minimum order value is one rule with one condition (Whole cart · Subtotal · is at least · 50). "Either $100 in the cart OR 3 serums" is two rules joined by OR.

### Worked example

To require $50 of skincare before a "20% off serums" code works:

1. Create cart group "Skincare" (a collection) and cart group "Serums" (selected products).
2. Set **Discount applies to** → Serums.
3. Add a rule with one condition: Scope **Skincare** · **Subtotal** · **is at least (≥)** · **50**.

The customer preview's "Redeem terms" section restates your rules in plain language, so you can sanity-check what shoppers will be told.

## Rejection messages: what customers see when a code doesn't apply

When a code fails its rules at checkout, Shopify shows the shopper a message you control. The **Rejection messages** panel (right column of the Reward marketplace page) holds one template per failure case. These are global: every reward shares them.

| Case                                | Default message                                           | When it shows                                                                 |
| ----------------------------------- | --------------------------------------------------------- | ----------------------------------------------------------------------------- |
| **Minimum spend not met**           | Spend {short} more from {group} to use {reward}.          | A subtotal condition failed                                                   |
| **Minimum quantity not met**        | Add {short} more item(s) from {group} to use {reward}.    | An item-count condition failed                                                |
| **Minimum unique products not met** | Add {short} more product(s) from {group} to use {reward}. | A distinct-products condition failed                                          |
| **Expired code**                    | This code expired on {expiry}.                            | The code's baked-in expiry has passed                                         |
| **No eligible items**               | Your cart has no items eligible for {reward}.             | The cart has no products the reward applies to                                |
| **Other requirement not met**       | {reward} can't be applied to your cart yet.               | Fallback for conditions without a "needs more" amount (e.g. "at most" limits) |

Variables fill in automatically: `{code}` `{reward}` `{expiry}` `{required}` `{have}` `{short}` `{group}`. The most useful are `{short}` (how much is still needed), `{group}` (the cart group's customer-facing name), and `{reward}` (the reward's title). This is why group names matter: "Add 2 more product(s) from Skincare" reads well; "(unnamed group)" doesn't.

## Tips

* **Name every group.** Group names surface in reward descriptions and rejection messages.
* **Prefer "at least" conditions.** They produce helpful "add {short} more" messages; "at most" and "equals" fall back to the generic message.
* **Keep rules per class in mind.** Cart groups and rules live on each discount card, so a reward granting a product and an order discount can gate each differently.
* **Test the unhappy path.** Claim a reward with a cart that fails the rules and read the checkout message a customer would see.

## Related articles

* [Set up the reward marketplace](/dollarback-store-credit/spending-store-credit-and-rewards/set-up-the-reward-marketplace)
* [Discount combination rules](/dollarback-store-credit/spending-store-credit-and-rewards/discount-combination-rules)
* [A reward discount code isn't working](/dollarback-store-credit/troubleshooting-and-faq/reward-discount-code-isnt-working)
* [Reward discount codes instead of store credit](/dollarback-store-credit/earning-cashback-programs/reward-discount-codes-instead-of-store-credit)


# Discount combination rules

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

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

Combination rules decide whether the discount codes DollarBack issues (marketplace redemptions and earned discount-code rewards) can stack with your other Shopify discounts at checkout. This page explains the three combination classes and the one nuance that matters most: the setting is store-wide.

## Where the setting lives

1. Open **DollarBack admin → Redemption**.
2. Scroll to the **Combinations** card below the reward list.
3. Choose which of your other discounts these rewards can stack with at checkout. Three checkboxes map to Shopify's discount combination classes:

| Checkbox               | When checked                                                   | Example                                                                 |
| ---------------------- | -------------------------------------------------------------- | ----------------------------------------------------------------------- |
| **Order discounts**    | A reward code can apply on top of another order-level discount | A customer stacks a $5-off reward with your 10%-off sitewide sale code  |
| **Product discounts**  | A reward code can apply alongside product-level discounts      | A 20%-off-collection reward combines with an automatic product markdown |
| **Shipping discounts** | A reward code can apply together with shipping discounts       | A product-discount reward combines with a free-shipping promotion       |

4. Save. Leave a class unchecked and Shopify blocks that combination at checkout. The customer must choose one discount or the other.

## One setting for every reward (no per-reward stacking)

{% hint style="warning" %}
Combination rules are store-wide. All DollarBack codes are issued against one shared Shopify discount, and the combination classes are set on that shared discount, so individual rewards cannot have their own independent stacking rules. You cannot make one reward stackable and another exclusive.
{% endhint %}

Two consequences worth planning around:

* **Changes apply to all outstanding codes immediately.** Every code already sitting in customers' hands picks up the new rules the moment you save; codes claimed under the old rules are not grandfathered.
* **Earned rewards follow the same rules.** The setting applies to every redemption and earned reward, so cashback configs that pay out discount codes inherit whatever you set here.

If your marketplace mixes generous and modest rewards, set the combination rules for the most generous one. That's the reward whose stacking behavior costs you the most.

## Verify it works

1. With a combination class unchecked (say, **Product discounts**), have a test customer apply a reward code and a product discount in the same checkout. Shopify should refuse the combination.
2. Check the class, save, and repeat. Both discounts should now apply together.
3. Re-test with a code that was claimed *before* the change to confirm outstanding codes follow the new rules.

## Common issues

* A reward code is rejected when another discount is in the cart: this is usually an unchecked combination class, not a broken code. See [A reward discount code isn't working](/dollarback-store-credit/troubleshooting-and-faq/reward-discount-code-isnt-working).
* A code stopped stacking after you changed settings: remember the change hit all outstanding codes immediately.
* The code doesn't work at all, with or without other discounts: confirm the shared `RDM-(DO NOT DELETE)` discount still exists in your Shopify admin. See [Set up the reward marketplace](/dollarback-store-credit/spending-store-credit-and-rewards/set-up-the-reward-marketplace).

## Related articles

* [Set up the reward marketplace](/dollarback-store-credit/spending-store-credit-and-rewards/set-up-the-reward-marketplace)
* [Reward discount codes instead of store credit](/dollarback-store-credit/earning-cashback-programs/reward-discount-codes-instead-of-store-credit)
* [How customers spend their credit](/dollarback-store-credit/spending-store-credit-and-rewards/how-customers-spend-their-credit)
* [A reward discount code isn't working](/dollarback-store-credit/troubleshooting-and-faq/reward-discount-code-isnt-working)


# Hide store credit at checkout

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

*This article's section starts at 5:28 in the video.*

By default, store credit is always available as a payment option at checkout. If you'd rather customers only spend credit on larger orders (protecting margin on small baskets), you can hide the option until the cart crosses a threshold. When you're done here, store credit will appear at checkout only when your condition is met.

## How it works

The rule is enforced by a Shopify payment-customization function that DollarBack manages for you. When the cart doesn't meet your condition, the function removes store credit from the list of payment options. The customer's balance is untouched; they can't spend it on that order.

## Set a visibility condition

1. Open **DollarBack admin → Settings** and find the **Store Credit Visibility** section.
2. Choose one of the two modes:

| Mode                  | Effect                                                             |
| --------------------- | ------------------------------------------------------------------ |
| **Always show**       | Store credit is always available as a payment option (the default) |
| **Show on condition** | Store credit only appears when the cart meets a specific threshold |

3. If you chose **Show on condition**, build the rule with the three condition fields:

   * **Amount type**: **Cart Total** (includes taxes and shipping) or **Cart Subtotal** (products only).
   * **Operator**: `>`, `<`, `>=`, or `<=`.
   * **Value**: the threshold amount.

   For example, *Cart Total >= 50* shows store credit only on carts of $50 or more.
4. Save.

{% hint style="info" %}
The condition controls paying with store credit directly at checkout. It does not affect reward marketplace codes; a customer can still apply a redeemed discount code on any order.
{% endhint %}

## Verify it works

Test both sides of the threshold, using *Cart Total >= 50* as the example:

1. As a test customer with a credit balance, check out a $30 cart. Store credit should be absent from the payment options.
2. Raise the cart to $90 and return to checkout. Store credit should now appear with the available balance.
3. If you were only testing, switch back to **Always show** and save.

## Common issues

* Customers report credit missing at checkout: check whether a visibility condition is quietly filtering it before digging further; see [Store credit isn't available at checkout](/dollarback-store-credit/troubleshooting-and-faq/store-credit-isnt-available-at-checkout).
* The option shows/hides on the wrong carts: confirm whether your rule uses **Cart Total** or **Cart Subtotal**; taxes and shipping make the two diverge.
* The condition doesn't seem to apply at all: re-save the setting and re-test in a fresh checkout session.

## Related articles

* [How customers spend their credit](/dollarback-store-credit/spending-store-credit-and-rewards/how-customers-spend-their-credit)
* [Store Credit Visibility setting](/dollarback-store-credit/settings/store-credit-visibility)
* [Store credit isn't available at checkout](/dollarback-store-credit/troubleshooting-and-faq/store-credit-isnt-available-at-checkout)
* [Set up the reward marketplace](/dollarback-store-credit/spending-store-credit-and-rewards/set-up-the-reward-marketplace)


# Credit expiry & reminders

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

Expiring credit gives customers a reason to come back, but only if they know the deadline. This page covers where expiry windows are set, how to schedule reminder emails before credit lapses, and what customers see along the way.

## Where expiry windows are set

Expiry is attached to credit when it's issued, so you set it wherever credit is created:

| Credit source         | Where the expiry lives                                                                                  |
| --------------------- | ------------------------------------------------------------------------------------------------------- |
| Cashback programs     | Each cashback configuration has its own expires-after value in days; `0` means the credit never expires |
| Bulk CSV imports      | The import's expiry-days option, applied to every credited row (credits only; debits have no expiry)    |
| Shopify Flow deposits | The deposit action's expiry setting                                                                     |

Because expiry is stamped per credit entry, changing a config's window later only affects credit issued from then on; existing balances keep the expiry they were issued with. A 90-day window is a common starting point: long enough to feel fair, short enough to drive a return visit.

## Set reminder thresholds

Reminders are configured once, in **DollarBack admin → Notifications**, under **Expiry Notification Schedule**:

1. Add the intervals at which you want customers warned, each measured in days before expiry. You can schedule up to 5 notifications; the defaults are 7, 3, and 1 days.
2. A two-touch schedule like 14 days and 3 days works well: an early heads-up with time to shop, and a last call that creates urgency.
3. Save.

Each threshold sends the reminder email to every customer whose credit reaches that many days from expiring.

## The expiry reminder email

The **Store Credit Expiry Reminder** template is sent when store credit is about to expire. Its default subject is:

> {firstName}, Your Store Credit is About to Expire

The template supports the `{expiresAt}` and `{remainingDays}` variables alongside the universal ones (`{firstName}`, `{formattedAmount}`, and so on), so the email can say exactly how much credit expires and when. You can restyle it, change the subject, or disable it entirely; see [Customize email templates](/dollarback-store-credit/notifications/customize-email-templates).

## Trigger your own automations

When a reminder threshold is reached, DollarBack also emits a **Store Credit Expiring** event to your connected integrations. It's available as a Shopify Flow trigger and syncs to Klaviyo and Omnisend, carrying `amount`, `formattedAmount`, `expiresAt`, `remainingDays`, and `transactionId`. Use it to run your own win-back flow, send an SMS, or tag the customer. A **Store Credit Expired** event syncs to Klaviyo and Omnisend when credit actually lapses. See [Shopify Flow: triggers & actions](/dollarback-store-credit/integrations/shopify-flow-triggers-and-actions).

## What customers see

* The floating widget and account balance history show the credit with its expiry note.
* The thank-you page mentions the expiry alongside the credit just earned.
* The reminder emails arrive at each threshold you configured.
* When credit expires, it disappears from the spendable balance; there's no grace period.

## Verify it works

1. Credit a test customer with a short window, for example a bulk import row with 5-day expiry.
2. Sign in as that customer and confirm the widget shows the credit with its expiry note.
3. Set a reminder threshold inside the window (say, 3 days) and confirm the reminder email arrives on schedule.

## Common issues

* Reminder emails aren't arriving: confirm the template is enabled and see [Emails aren't arriving](/dollarback-store-credit/troubleshooting-and-faq/emails-arent-arriving).
* Credit never expires: the issuing config's expiry is probably `0` (never); expiry only applies to credit issued after you set a window.
* A customer says credit vanished: check the credit log for an expiry entry; see [Credit logs & scheduled rewards](/dollarback-store-credit/analytics-data-and-account/credit-logs-and-scheduled-rewards).

## Related articles

* [When credit is issued](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued)
* [Customize email templates](/dollarback-store-credit/notifications/customize-email-templates)
* [Shopify Flow: triggers & actions](/dollarback-store-credit/integrations/shopify-flow-triggers-and-actions)
* [Bulk import credit (CSV)](/dollarback-store-credit/analytics-data-and-account/bulk-import-credit-csv)


# Refunds, cancellations & order edits

{% hint style="info" %}
**Plan:** order edit tracking is plan-gated. If you don't see the setting, check your plan on **DollarBack admin → Plans**.
{% endhint %}

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

Orders change after they're placed: items are added, refunds are issued, whole orders are cancelled. This page explains how DollarBack keeps earned cashback in sync when that happens, and what does (and doesn't) happen to credit a customer already spent.

## Turn on order edit tracking

Reconciliation is off by default. To enable it:

1. Open **DollarBack admin → Settings** and find the **Advanced** section.
2. Turn on **Enable order edit tracking**; it recalculates cashback automatically when orders are edited, refunded, or cancelled.
3. Save.

With the setting off, cashback stays whatever it was when the order first triggered; refunds and edits won't touch it.

## How reconciliation works: the diff

When a tracked order changes, DollarBack recalculates what the cashback *should now be* and compares it to what was already awarded. Only the difference moves:

| The order...                           | Diff            | What happens                                            |
| -------------------------------------- | --------------- | ------------------------------------------------------- |
| Grows (item added, upsell edit)        | Positive        | The extra cashback is issued as new pending credit      |
| Shrinks (partial refund, item removed) | Negative        | The difference is clawed back (see order below)         |
| Is cancelled / fully refunded          | Negative (full) | The order's entire cashback is clawed back the same way |

For a negative diff, the clawback runs in a fixed order:

1. **Pending credit for that configuration is offset first.** If the cashback was still in its holding period, the pending amount is reduced before anything else.
2. **Then the live balance is debited** for whatever remains, which can take a balance to zero if the customer already had less than the clawback.
3. **Any shortfall becomes owed credit.** A balance can't go below zero, so if the customer had already spent the credit, the rest is recorded as an amount they owe and is automatically deducted from their future cashback until it's paid down. You can see, adjust, or clear this on the **Store credit owed** card on their customer page in Shopify admin; see [Admin blocks on the customer & order pages](/dollarback-store-credit/analytics-data-and-account/admin-blocks-customer-and-order-pages).

Every movement lands in the credit log, so you can trace exactly what was issued and clawed back per order; see [Credit logs & scheduled rewards](/dollarback-store-credit/analytics-data-and-account/credit-logs-and-scheduled-rewards).

## Two rules that never bend

* **Credited entries are an immutable audit trail.** DollarBack never rewrites a past credit entry; corrections always appear as new debit or credit entries. Your log is a complete history, not a running total that gets edited in place.
* **Tier multipliers are snapshotted per order.** The multiplier in effect when the order earned cashback is stored with it and reused for any later recalculation. Changing your tier setup later never retroactively changes past orders' cashback, in either direction.

## What happens to credit the customer spent

{% hint style="warning" %}
Redeemed reward codes are **not** automatically refunded. If a customer spent credit to claim a marketplace reward and the order they used the code on is cancelled, the credit cost stays deducted. Restoring it is a manual support action. Contact support with the customer and redemption details.
{% endhint %}

Store credit applied directly as payment at checkout follows Shopify's standard refund flow, like any other payment method on the order.

## Verify it works

1. With order edit tracking on, place a test order that earns cashback and confirm the credit in the log.
2. Refund part of the order. The log should show a clawback debit for the difference (offsetting pending credit first if the holding period was active).
3. Edit another test order to add an item. The log should show an incremental pending credit for the increase.

## Common issues

* Cashback didn't adjust after a refund: order edit tracking was probably off when the refund happened; see [A customer didn't receive cashback](/dollarback-store-credit/troubleshooting-and-faq/customer-didnt-receive-cashback) for the wider decision tree.
* A clawback looks smaller than expected: check whether part of it was absorbed by pending credit before the balance was touched.
* A customer wants credit back for an unused reward code: that's the manual-refund case above; contact support.

## Related articles

* [When credit is issued](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued)
* [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated)
* [Set up the reward marketplace](/dollarback-store-credit/spending-store-credit-and-rewards/set-up-the-reward-marketplace)
* [Credit logs & scheduled rewards](/dollarback-store-credit/analytics-data-and-account/credit-logs-and-scheduled-rewards)


# Referral Program

Referrer rewards, referee discounts, attribution, and sharing.

* [Set up your referral program](/dollarback-store-credit/referral-program/set-up-your-referral-program)
* [Referrer rewards vs referee discounts](/dollarback-store-credit/referral-program/referrer-rewards-vs-referee-discounts)
* [How referral rewards are calculated & tracked](/dollarback-store-credit/referral-program/how-referral-rewards-are-calculated-and-tracked)
* [Referral conditions & limits](/dollarback-store-credit/referral-program/referral-conditions-and-limits)
* [Run multiple referral configs](/dollarback-store-credit/referral-program/run-multiple-referral-configs)
* [How customers share referral links](/dollarback-store-credit/referral-program/how-customers-share-referral-links)
* [Referral codes & bulk sync](/dollarback-store-credit/referral-program/referral-codes-and-bulk-sync)
* [Ultimate Discounts integration](/dollarback-store-credit/referral-program/ultimate-discounts-integration)


# Set up your referral program

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

*This article's section starts at 0:00 in the video.*

By the end of this guide you'll have a live referral program: existing customers get a shareable code, their friends get a discount at checkout, and the referrer earns store credit when the friend's order comes through.

## Prerequisites

* DollarBack is installed and your storefront widgets are active. Customers see their referral code inside the floating widget, their account pages, and the loyalty page, so at least one of those surfaces should be live. See [How customers share referral links](/dollarback-store-credit/referral-program/how-customers-share-referral-links).
* You don't need any cashback program running; referrals work on their own.

## Step 1. Create your first config

1. Go to **DollarBack admin → Referral**.
2. Click **Add Config**. A new configuration card appears (labeled **Config 1**).
3. Give it an **Internal Title**, e.g. "Give $10, get 10%". This name is only visible to you in the admin.
4. Set a **Code Prefix** (e.g. `FRIEND`). Every customer's referral code starts with this prefix.

{% hint style="warning" %}
The **Code Prefix** cannot be changed once the config is saved, because codes are generated from it in bulk. Pick it deliberately.
{% endhint %}

5. Leave **Customer Tags** empty for your first config. Tags are how you target a config at a specific group of referrers (say, VIPs). With no tags, the config applies to everyone. See [Run multiple referral configs](/dollarback-store-credit/referral-program/run-multiple-referral-configs).

## Step 2. Set the referrer reward

Under **Referrer Reward**, choose what the person doing the referring earns:

| Field              | Options                            | Example             |
| ------------------ | ---------------------------------- | ------------------- |
| **Cashback Type**  | Percentage of Order · Fixed Amount | Percentage of Order |
| **Cashback Value** | Number                             | 10 (%)              |

The referrer is always paid in **store credit**: Shopify-native credit they can spend at checkout. For a "Give $10, get 10%" program, this side is the "get 10%".

## Step 3. Set the referee discount

Under **Referee Discount**, choose what the referred friend gets when they use the code:

| Field                   | Options                            | Example      |
| ----------------------- | ---------------------------------- | ------------ |
| **Discount Type**       | Percentage of Order · Fixed Amount | Fixed Amount |
| **Discount Value**      | Number                             | 10 ($)       |
| **Minimum Order Value** | Number                             | 30 ($)       |

The referee's reward is a **discount code** applied at checkout, the same code the referrer shares. The **Minimum Order Value** is the smallest order the code will work on.

## Step 4. Set conditions and limits

Under **Usage Limits**:

* **Allow discounts for new customers only**: on for a classic refer-a-friend program; existing customers can't use a referral code on their own account.
* **Maximum discount code uses per referee**: how many times one referred customer can use the discount. Set to 1 for first-order-only.
* **Expires after**: the number of days before the referrer's reward expires.

Each condition is covered in depth, with pass/fail examples, in [Referral conditions & limits](/dollarback-store-credit/referral-program/referral-conditions-and-limits).

## Step 5. Check the combination rules

The **Combination Rules** section controls which other discounts the referral discount can stack with at checkout: **Product Discounts**, **Shipping Discounts**, **Order Discounts**. These toggles apply to **all** referral configs, not just this one.

## Step 6. Save and let code generation run

Save the config. DollarBack now generates a referral code for every eligible customer and attaches the whole batch to a shared Shopify discount. While this runs you'll see a **Bulk Operation in Progress** banner ("Referral codes are being generated. Please wait until the operation completes before making changes.") and the editor is locked.

This is expected: the codes are written to Shopify in bulk, and editing the config mid-generation would leave half the codes on old rules. On large customer bases it can take several minutes. You'll see a "Bulk operation completed successfully" toast when it's done. Details in [Referral codes & bulk sync](/dollarback-store-credit/referral-program/referral-codes-and-bulk-sync).

## Verify it works

1. On your storefront, sign in as a test customer and open the floating widget or account page. A referral code with your prefix should be visible.
2. In an incognito window, add $30+ of product to the cart (to clear the minimum order value) and apply the code at checkout as a brand-new customer. The referee discount should apply.
3. Complete the order, then check **DollarBack admin → Analytics → Referral**: the order appears in the logs, and the referrer's store credit lands per your reward settings.

## Common issues

* The code doesn't apply at checkout → check the minimum order value and the new-customers-only toggle first; see [A referral wasn't tracked](/dollarback-store-credit/troubleshooting-and-faq/referral-wasnt-tracked).
* The referrer got no credit even though the discount applied → the order may have been fully paid with store credit or gift cards; see [How referral rewards are calculated & tracked](/dollarback-store-credit/referral-program/how-referral-rewards-are-calculated-and-tracked).
* No referral code shows on the storefront → generation may still be running, or the widget isn't active; see [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing).

## Related articles

* [Referrer rewards vs referee discounts](/dollarback-store-credit/referral-program/referrer-rewards-vs-referee-discounts)
* [Referral conditions & limits](/dollarback-store-credit/referral-program/referral-conditions-and-limits)
* [How customers share referral links](/dollarback-store-credit/referral-program/how-customers-share-referral-links)
* [How referral rewards are calculated & tracked](/dollarback-store-credit/referral-program/how-referral-rewards-are-calculated-and-tracked)


# Referrer rewards vs referee discounts

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

*This article's section starts at 0:28 in the video.*

Every referral config has two sides that are easy to mix up: what the **referrer** (the customer sharing the code) earns, and what the **referee** (the friend using it) gets. This page explains who receives what, in what form, and when.

## The two sides at a glance

|                          | Referrer reward                                                   | Referee discount                        |
| ------------------------ | ----------------------------------------------------------------- | --------------------------------------- |
| Who gets it              | The customer whose code was used                                  | The new customer placing the order      |
| What it is               | **Store credit** (Shopify-native, spendable at checkout)          | A **discount code** applied at checkout |
| Value types              | Percentage of Order · Fixed Amount                                | Percentage of Order · Fixed Amount      |
| When it's applied/issued | After the referee's order is processed (see below)                | Immediately, at the referee's checkout  |
| Currency                 | Converted to the referrer's own currency                          | The referee's checkout currency         |
| Expiry                   | Set by the config's **Expires after** value                       | Follows the shared referral discount    |
| Where it shows           | Widget balance, account balance, "referral reward credited" email | The checkout discount line              |

## The referrer side: store credit

Under **Referrer Reward** you set a **Cashback Type** (**Percentage of Order** or **Fixed Amount**) and a **Cashback Value**.

* **Percentage of Order** pays a share of the referee's eligible order amount. Say the referee places a $60 order and the reward is 10%: the referrer earns $6 in store credit. What counts as "eligible" follows your global cashback base settings (total vs subtotal, shipping, credit/gift-card deductions); see [How referral rewards are calculated & tracked](/dollarback-store-credit/referral-program/how-referral-rewards-are-calculated-and-tracked).
* **Fixed Amount** pays the same flat credit per successful referral regardless of order size, e.g. $10 per friend.

The reward is store credit, not a coupon: it lands on the customer's Shopify store-credit balance and appears as a payment option at their next checkout, alongside any cashback they've earned.

**When it's issued:** the reward is triggered by the referee's order. If the order isn't captured or fulfilled yet, the credit can sit as *pending* first and releases when payment is captured or the order is fulfilled. Refunds claw the reward back.

## The referee side: a discount code

Under **Referee Discount** you set a **Discount Type** (**Percentage of Order** or **Fixed Amount**), a **Discount Value**, and a **Minimum Order Value**.

The referee doesn't receive credit or wait for anything: the referral code itself *is* their discount. They paste the referrer's code into the discount field at checkout and the discount applies on the spot, provided the order clears the minimum order value and any other conditions ([Referral conditions & limits](/dollarback-store-credit/referral-program/referral-conditions-and-limits)).

Because the discount is a code on the order, it's also what makes attribution work: DollarBack knows who referred whom because the code was used. No code on the order, no referral.

{% hint style="info" %}
If you run the Dollarlabs Ultimate Discounts app, you can hand the referee side over to one of its discounts instead of the built-in percentage/fixed options. See [Referral + Ultimate Discounts integration](/dollarback-store-credit/referral-program/ultimate-discounts-integration).
{% endhint %}

## Choosing values that work together

A common pattern is asymmetric: a fixed, easy-to-say discount for the friend ("give $10") and a percentage reward for the referrer ("get 10%"), so the referrer's upside grows with bigger referred orders. Whatever you choose, remember the referrer reward is also capped by your global **Maximum cashback per order** setting.

## Verify it works

Place a test referee order with a referral code, then check both sides: the discount line on the referee's checkout, and the referrer's credit in **DollarBack admin → Analytics → Referral** (and in their widget balance once released).

## Common issues

* Discount applied but no referrer credit → the order may have been fully covered by store credit or gift cards, or the reward is still pending; see [How referral rewards are calculated & tracked](/dollarback-store-credit/referral-program/how-referral-rewards-are-calculated-and-tracked).
* The code was rejected at checkout → conditions; see [A referral wasn't tracked](/dollarback-store-credit/troubleshooting-and-faq/referral-wasnt-tracked).
* The referrer expected a coupon, got credit → expected behavior; the referrer side is always store credit.

## Related articles

* [Set up your referral program](/dollarback-store-credit/referral-program/set-up-your-referral-program)
* [How referral rewards are calculated & tracked](/dollarback-store-credit/referral-program/how-referral-rewards-are-calculated-and-tracked)
* [Referral conditions & limits](/dollarback-store-credit/referral-program/referral-conditions-and-limits)
* [Referral + Ultimate Discounts integration](/dollarback-store-credit/referral-program/ultimate-discounts-integration)


# How referral rewards are calculated & tracked

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

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

This is the reference for the referral engine: how DollarBack decides an order was referred, how much the referrer earns, in which currency, and what happens on refunds and edits. If a referral reward looks wrong, the answer is almost always on this page.

## Attribution: the code must be on the order

A referral counts only when the referee's order used the referrer's discount code. There is no cookie or link-only attribution: sharing a link starts the journey, but if the code isn't applied on the order, no referral is recorded.

* Each customer's referral code is stored on their customer profile in the `db-referral.code` metafield.
* Legacy programs used the customer's numeric ID as the code; those all-digit codes still attribute correctly.
* When an order comes in with a referral code, DollarBack looks up which customer owns that code; that customer is the referrer.

**One reward per referee order.** Processing is idempotent on the referee's order ID, so replays, webhook retries, or reprocessing can never double-pay a referral.

## Which config applies: referrer tags, in priority order

If you run more than one config, DollarBack walks your configs top-to-bottom (the drag-and-drop order on the Referral page) and picks the **first config whose Customer Tags match the referrer**. A config with no tags matches everyone. The winning config dictates the reward type and value, and the reward's expiry. See [Run multiple referral configs](/dollarback-store-credit/referral-program/run-multiple-referral-configs).

## The reward base: what a percentage is a percentage *of*

The referral reward base mirrors your global cashback settings ([Settings](/dollarback-store-credit/settings)):

1. Start from the **order total or subtotal**, per your **Base cashback on** setting, adding or removing **shipping** per the **Include shipping costs** toggle.
2. **Deduct the portions paid with store credit and gift cards**, per the same global settings that govern cashback (**Pays with store credit** / **Pays with gift cards**).
3. If store credit plus gift cards cover the **whole** order, the referral reward is **skipped entirely**: no referrer credit is issued for an order with no real money in it.
4. Apply the config's reward: percentage of the remaining base, or the fixed amount.
5. Cap the result at your **Maximum cashback per order** ceiling (from global settings, converted into the order's currency). Fixed rewards are clamped by the same ceiling.

### Worked example

Referee's order: $80 subtotal + $10 shipping. They pay $20 with a gift card. Settings: base on subtotal, shipping excluded, gift-card portion doesn't earn. Referrer reward: 10%.

* Base: $80 (subtotal, no shipping)
* Minus gift-card portion: $80 − $20 = $60
* Reward: 10% × $60 = **$6.00** store credit, unless your max-cashback ceiling is lower.

## Currency: the referrer earns in their own currency

The reward is converted into the **referrer's** currency using current exchange rates. A referrer whose account is in USD earns USD credit even if the referee paid in EUR. Cross-market referrals work automatically, and two referrers can earn different-looking amounts from identical orders.

## Refunds, cancellations, and order edits

When the referee's order changes, the reward is **recomputed as a diff** against what was already granted:

* **Negative diff** (refund, cancellation, downsized edit): the difference is **clawed back**: the referrer's balance is debited.
* **Positive diff** (order edited upward): the difference is issued as **pending credit**.
* **Pending referral credits release** when the order's payment is captured or it's fulfilled.
* The full referral history is stored on the order, so the audit trail in the logs always reconciles.

{% hint style="warning" %}
Clawbacks debit the referrer's live balance. If they've already spent the credit, their balance can go into deficit until they earn more.
{% endhint %}

## Where to see it all

**DollarBack admin → Analytics → Referral** shows revenue, orders, active affiliates, and commissions, plus a log linking each referral to the referrer, the referee, and the Shopify order. See [Referral analytics](/dollarback-store-credit/analytics-data-and-account/referral-analytics).

## Verify it works

Place a test order with a referral code as a new customer, in a different currency market if you have one. In the referral analytics log, confirm the row links both profiles and the order, and that the commission equals the expected percentage of the deducted base, converted to the referrer's currency.

## Common issues

* No reward recorded → was the code actually on the order? Link sharing alone doesn't attribute; see [A referral wasn't tracked](/dollarback-store-credit/troubleshooting-and-faq/referral-wasnt-tracked).
* Reward smaller than expected → credit/gift-card deductions, subtotal-vs-total base, or the max-cashback ceiling.
* Reward is $0 → the order was fully paid with store credit and/or gift cards, so the reward was skipped.
* Reward appeared, then a debit → the referee's order was refunded, cancelled, or edited down; see [Refunds, cancellations & order edits](/dollarback-store-credit/spending-store-credit-and-rewards/refunds-cancellations-and-order-edits).

## Related articles

* [Referrer rewards vs referee discounts](/dollarback-store-credit/referral-program/referrer-rewards-vs-referee-discounts)
* [Run multiple referral configs](/dollarback-store-credit/referral-program/run-multiple-referral-configs)
* [Settings](/dollarback-store-credit/settings)
* [Referral analytics](/dollarback-store-credit/analytics-data-and-account/referral-analytics)


# Referral conditions & limits

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

*This article's section starts at 0:53 in the video.*

Referral configs have four gates that decide whether a referee's checkout accepts the code and whether the referrer gets paid. This page walks each one with a failing case and a passing case, so you can predict exactly what a customer will see.

## Prerequisites

* A referral config saved and generated. See [Set up your referral program](/dollarback-store-credit/referral-program/set-up-your-referral-program).

## The four gates

| Gate                | Field                                                     | What it blocks                              |
| ------------------- | --------------------------------------------------------- | ------------------------------------------- |
| Minimum order value | **Minimum Order Value** (Referee Discount section)        | Codes on carts below the threshold          |
| New customers only  | **Allow discounts for new customers only** (Usage Limits) | Existing customers using a referral code    |
| Max uses            | **Maximum discount code uses per referee** (Usage Limits) | A referred customer reusing the discount    |
| Expiration          | **Expires after** (Usage Limits)                          | The referrer's reward expiring after N days |

## Minimum order value

Say the config requires a $30 minimum.

* **Fails:** the referee carts a $18 item and enters the code. Checkout rejects the discount because the order is under $30.
* **Passes:** they add a second item, bringing the cart to $42, and the same code now applies.

The minimum is evaluated by Shopify at checkout against the order the code is applied to.

## New customers only

With **Allow discounts for new customers only** on:

* **Fails:** a customer who has ordered from you before enters a friend's code; the discount doesn't apply to their account.
* **Passes:** a genuinely new customer (no prior orders on that account) uses the same code and gets the discount.

Turn this off if you want referrals to work as a general share-a-discount program where existing customers can also redeem a friend's code.

{% hint style="info" %}
"New" is judged per customer account. A returning shopper checking out with a brand-new email counts as new, which is worth knowing when you're testing.
{% endhint %}

## Maximum uses per referee

**Maximum discount code uses per referee** caps how many times one referred customer can use the discount.

* **Fails:** with the limit at 1, the referee tries the code on a second order; it's rejected.
* **Passes:** their first order with the code, or a higher limit (e.g. 3) that hasn't been reached yet.

This is a per-referee cap; it does not limit how many different friends can use one referrer's code.

## Expiration

**Expires after** sets the number of days before the referrer's reward expires. It governs how long earned referral credit stays spendable, working like any other store-credit expiry.

* **Fails (expires):** with a 30-day expiry, a referrer who leaves the credit untouched for 31 days loses it; the expiry shows in their balance history.
* **Passes:** the same credit spent within the window works like any store credit at checkout.

Expiry reminders and the expiry email follow your credit-expiry setup. See [Credit expiry & reminders](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders).

## Verify it works

Run the failing case for each gate on a test account before you launch: an under-minimum cart, an existing account, a second use beyond the limit. Each should be rejected at checkout; fixing the condition should make the same code pass. This is the fastest way to be sure the config does what you think it does.

## Common issues

* "The code doesn't work" reports → almost always one of the four gates; test in the order above. See [A referral wasn't tracked](/dollarback-store-credit/troubleshooting-and-faq/referral-wasnt-tracked).
* Code applies but no reward is issued → conditions passed at checkout, but the reward was skipped in calculation (e.g. fully credit-paid order); see [How referral rewards are calculated & tracked](/dollarback-store-credit/referral-program/how-referral-rewards-are-calculated-and-tracked).
* A VIP customer gets the wrong limits → they may be matching a different config; see [Run multiple referral configs](/dollarback-store-credit/referral-program/run-multiple-referral-configs).

## Related articles

* [Set up your referral program](/dollarback-store-credit/referral-program/set-up-your-referral-program)
* [Referrer rewards vs referee discounts](/dollarback-store-credit/referral-program/referrer-rewards-vs-referee-discounts)
* [How referral rewards are calculated & tracked](/dollarback-store-credit/referral-program/how-referral-rewards-are-calculated-and-tracked)
* [Credit expiry & reminders](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders)


# Run multiple referral configs

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

*This article's section starts at 0:00 in the video.*

One referral program rarely fits everyone: you might want VIPs to earn 20% while everyone else earns 10%. DollarBack supports multiple referral configs, targeted by customer tags and resolved by a drag-and-drop priority order. This page shows how to add a second config and predict which one wins.

## Prerequisites

* A first referral config live. See [Set up your referral program](/dollarback-store-credit/referral-program/set-up-your-referral-program).
* The customer tag you'll target (e.g. `vip`) already applied to the right customers in Shopify admin.

## Step 1. Add the second config

1. Go to **DollarBack admin → Referral** and click **Add Config**.
2. Set an **Internal Title** ("VIP referrers") and a distinct **Code Prefix** (e.g. `VIP`). Prefixes can't be changed after saving, and a distinct prefix makes it obvious at a glance which program a code belongs to.
3. In **Customer Tags**, select the tag(s) this config targets, e.g. `vip`.
4. Set its own referrer reward, referee discount, and usage limits; each config carries a full set.
5. Save. Code generation runs for the newly matched customers; the editor locks while it does ([Referral codes & bulk sync](/dollarback-store-credit/referral-program/referral-codes-and-bulk-sync)).

## Step 2. Set the priority order

Configs are evaluated top-to-bottom. As the banner on the page puts it: "Drag and drop configs to set priority. If a customer matches multiple configs (overlapping tags), the config at the top takes precedence."

Drag your VIP config **above** the general one. Rule of thumb: most specific on top, catch-all (no tags) at the bottom.

## Which config wins

For any given **referrer**, DollarBack picks the **first config from the top whose Customer Tags match that referrer's tags**. A config with no tags matches everyone, which is why an untagged catch-all placed first would swallow every customer, including your VIPs.

| Priority | Config        | Tags   | A `vip` customer gets | An untagged customer gets |
| -------- | ------------- | ------ | --------------------- | ------------------------- |
| 1        | VIP referrers | `vip`  | ✓ this one            | (none)                    |
| 2        | Everyone      | (none) | (none)                | ✓ this one                |

The winning config decides everything for that referral: the code the customer holds, the referrer reward, the referee discount and its conditions, and the reward expiry.

{% hint style="warning" %}
Selection follows the **referrer's** tags, not the referee's. Conditions like new-customers-only still apply to the referee, but which program is in play is decided by who owns the code.
{% endhint %}

The **Combination Rules** section is the exception: those toggles are shared across all configs.

## Verify it works

Sign in as a tagged (`vip`) customer. Their widget and account should show a code with the VIP prefix and the VIP reward messaging. An untagged customer should still see the general code. Place a test referee order against each code and confirm in **Analytics → Referral** that each row is attributed to the expected config.

## Common issues

* A VIP customer still shows the general code → the VIP config sits below the catch-all; drag it to the top, or the customer isn't actually tagged.
* A customer matches no config → they hold no code and can't refer; make sure a no-tags catch-all config exists if everyone should participate.
* Reward amounts look inconsistent across referrers → they're on different configs; check the attribution rows in [Referral analytics](/dollarback-store-credit/analytics-data-and-account/referral-analytics).

## Related articles

* [Set up your referral program](/dollarback-store-credit/referral-program/set-up-your-referral-program)
* [How referral rewards are calculated & tracked](/dollarback-store-credit/referral-program/how-referral-rewards-are-calculated-and-tracked)
* [Referral codes & bulk sync](/dollarback-store-credit/referral-program/referral-codes-and-bulk-sync)
* [Referral conditions & limits](/dollarback-store-credit/referral-program/referral-conditions-and-limits)


# How customers share referral links

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

\_This article's section starts at 4:25 in the video.\_

A referral program only works if customers can find their code without hunting for it. This page maps every storefront surface where a customer's referral code and share link appear, so you can decide which ones to enable and know what customers see on each.

## Prerequisites

* A live referral config. Codes exist only after generation completes ([Set up your referral program](/dollarback-store-credit/referral-program/set-up-your-referral-program)).
* The relevant widgets activated in your theme and checkout. See [Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme).

## What customers actually share

Each customer holds one referral code (e.g. `FRIEND-8FK2`). The share surfaces wrap it in a link of the form `https://your-store.com/?ref=CODE`, plus a pre-written share message. Attribution is code-based: the friend must apply the code on their order, because clicking the link alone doesn't record anything ([How referral rewards are calculated & tracked](/dollarback-store-credit/referral-program/how-referral-rewards-are-calculated-and-tracked)).

## The share surfaces

| Surface                       | Where                                          | What the customer sees                                                                          |
| ----------------------------- | ---------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| Floating cashback widget      | Site-wide launcher                             | Their referral code and link in the widget's referral view, alongside balance and ways to earn  |
| Customer account blocks (×3)  | Orders page · order status page · profile page | Referral code with copy-to-clipboard, plus their referral history                               |
| Loyalty page referral block   | Your loyalty page                              | The code, a copy button, and share buttons: email, Facebook, X, WhatsApp                        |
| Thank-you page referral block | Right after checkout                           | A referral invite with a copyable link, in separate versions for guests and logged-in customers |

### Floating widget

The referral view inside the floating widget is the always-available surface: any page, any time. Customers must be signed in to see their personal code; signed-out visitors see a login prompt. Styling and labels are editable in **DollarBack admin → Customization** ([The floating cashback widget](/dollarback-store-credit/widgets-and-storefront/the-floating-cashback-widget)).

### Customer account blocks

Three referral blocks live in the new customer accounts area (the orders index, the order status page, and the profile page), so the code is in reach exactly where customers check on an order. Each block shows the code with a copy button and message templates you can customize ([Customer account blocks](/dollarback-store-credit/widgets-and-storefront/customer-account-blocks)).

### Loyalty page

The loyalty page's referral block is the richest surface: headline, the program pitch (what the friend gets, what the referrer earns), the code with a copy button, and one-tap share buttons for email, Facebook, X, and WhatsApp that open pre-filled with the share message and link. All of the copy is editable, including the separate logged-in and logged-out variants ([Set up the loyalty page](/dollarback-store-credit/widgets-and-storefront/set-up-the-loyalty-page)).

### Thank-you page

The moment right after a purchase is peak goodwill, so the thank-you block invites the buyer to refer. It has distinct guest and logged-in states with a copyable link and its own imagery and copy ([Checkout & thank-you widgets](/dollarback-store-credit/widgets-and-storefront/checkout-and-thank-you-widgets)).

## Verify it works

Sign in as a test customer and walk the loop: open the widget, an account page, the loyalty page, and place a small order to see the thank-you block. The same code should appear on every surface. Tap a share button (WhatsApp is easiest on a phone) and confirm the message arrives with the working link and code.

## Common issues

* No code shows anywhere → code generation may still be running for a new config, or the customer matches no config; see [Referral codes & bulk sync](/dollarback-store-credit/referral-program/referral-codes-and-bulk-sync).
* A block is missing from a page → the widget or block isn't enabled in the theme/checkout editor; see [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing).
* Friends clicked the link but no referral was recorded → they didn't apply the code on the order; see [A referral wasn't tracked](/dollarback-store-credit/troubleshooting-and-faq/referral-wasnt-tracked).

## Related articles

* [Set up your referral program](/dollarback-store-credit/referral-program/set-up-your-referral-program)
* [Set up the loyalty page](/dollarback-store-credit/widgets-and-storefront/set-up-the-loyalty-page)
* [Customer account blocks](/dollarback-store-credit/widgets-and-storefront/customer-account-blocks)
* [Checkout & thank-you widgets](/dollarback-store-credit/widgets-and-storefront/checkout-and-thank-you-widgets)


# Referral codes & bulk sync

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

*This article's section starts at 0:53 in the video.*

This page explains what actually happens behind the scenes when DollarBack generates referral codes: where the codes live in Shopify, what the sync status banners mean, and why the editor locks while a generation run is in progress.

## Where referral codes live

Every customer's referral code is a discount code in Shopify. That's what lets the referee redeem it at checkout and what makes attribution work. But the codes are not thousands of separate discounts: they're **pooled onto one shared Shopify discount**, with each customer's code attached to that single parent as an additional code.

If you use the Ultimate Discounts integration, the codes are attached to your connected **integration discount** instead: same pooling model, different parent ([Referral + Ultimate Discounts integration](/dollarback-store-credit/referral-program/ultimate-discounts-integration)).

Each code is also stored on its owner's customer profile (the `db-referral.code` metafield), which is how DollarBack maps a redeemed code back to the referrer. Older installations issued codes that were the customer's numeric ID; those legacy codes keep working.

{% hint style="warning" %}
Don't delete or edit the shared referral discount directly in Shopify admin; every customer's referral code hangs off it. Manage the program from **DollarBack admin → Referral** only.
{% endhint %}

## When bulk generation runs

A bulk generation/sync run kicks off when codes need to be created or re-attached at scale:

* You save a **new config**: codes are generated for every customer the config matches.
* You add a config targeting a **tag**: codes are generated for the tagged customers.
* The code pool needs a **re-sync**, for example after connecting an Ultimate Discounts integration discount, so existing codes attach to the new parent.

New customers who sign up later get their code individually; bulk runs are for the existing customer base.

## Reading the status, and why the editor locks

While a run is in progress the Referral page shows a **Bulk Operation in Progress** banner: "Referral codes are being generated. Please wait until the operation completes before making changes." (with a count when multiple operations are running). The config editor is locked until it finishes. When it completes you'll see a "Bulk operation completed successfully" toast.

The lock is deliberate. A bulk run writes codes to the shared Shopify discount in batches over several minutes. If you could edit the config mid-run (change the prefix, retarget the tags, swap the parent discount), part of the customer base would end up with codes generated under the old rules and part under the new, and attribution would fray. Locking guarantees every code in a run is consistent. On large stores, expect a run to take minutes rather than seconds; there's nothing to do but let it finish.

Related guardrail: the **Code Prefix** field is permanently locked after the first save ("Code prefix cannot be changed once the config is saved"), because changing it would orphan every code already generated with the old prefix.

{% hint style="info" %}
If you migrated from an older DollarBack referral setup, you may see a **Legacy Config Detected** banner: your settings were auto-migrated to the new format. Review and save to complete the migration. Saving may trigger a bulk run.
{% endhint %}

## Verify it works

After the completion toast: pick a customer in Shopify admin and confirm their referral code exists on their profile, then check the storefront (widget or account page) shows the same code. Applying that code on a test checkout should pull up the referee discount.

## Common issues

* Editor is greyed out → a bulk operation is running; wait for the completion toast.
* A customer has no code → the run may still be processing, or they match no config; see [Run multiple referral configs](/dollarback-store-credit/referral-program/run-multiple-referral-configs).
* Codes stopped working store-wide → check that the shared referral discount still exists in Shopify admin; see [A referral wasn't tracked](/dollarback-store-credit/troubleshooting-and-faq/referral-wasnt-tracked).

## Related articles

* [Set up your referral program](/dollarback-store-credit/referral-program/set-up-your-referral-program)
* [Run multiple referral configs](/dollarback-store-credit/referral-program/run-multiple-referral-configs)
* [Referral + Ultimate Discounts integration](/dollarback-store-credit/referral-program/ultimate-discounts-integration)
* [How referral rewards are calculated & tracked](/dollarback-store-credit/referral-program/how-referral-rewards-are-calculated-and-tracked)


# Ultimate Discounts integration

Out of the box, the referee side of a referral is a simple percentage or fixed discount. If you run **Dollarlabs: Ultimate Discounts**, you can hand the referee discount over to one of its discounts instead. That brings the app's more advanced discount logic to your referral program while DollarBack keeps handling codes, attribution, and referrer rewards.

## Prerequisites

* A live referral config. See [Set up your referral program](/dollarback-store-credit/referral-program/set-up-your-referral-program).
* The **Dollarlabs: Ultimate Discounts** app installed on your store, with at least one discount configured in it that uses the required function type (the integration lists only compatible discounts).

## What changes when the integration is on

|                         | Integration off                                          | Integration on                               |
| ----------------------- | -------------------------------------------------------- | -------------------------------------------- |
| Referee discount        | DollarBack's built-in **Discount Type / Discount Value** | The connected Ultimate Discounts discount    |
| Referral codes          | Pooled on DollarBack's shared discount                   | Pooled on the connected integration discount |
| Referrer reward         | DollarBack store credit                                  | Unchanged; still DollarBack store credit     |
| Attribution & analytics | DollarBack                                               | Unchanged                                    |

## Step 1. Enable the integration

1. Go to **DollarBack admin → Referral** and find the **Dollarlabs: Ultimate Discounts** integration section.
2. If the app isn't installed yet, you'll see an **Install App** button; the integration requires the app to be present (status shows **Installed** once it is).
3. Turn on **Enable Integration** ("Enable integration to offer advanced referee discounts").

## Step 2. Connect the discount

1. With the integration enabled, a **Select Referee Discount** selector appears (showing "— Select a discount —" until you choose).
2. Pick the Ultimate Discounts discount that should apply to referred orders. The summary confirms your choice: "Using \[discount title] from Dollarlabs discount app".
3. If the list is empty you'll see: "No discounts found, make sure discounts with the required function are configured." Create a compatible discount in Ultimate Discounts first, then reopen the selector.
4. Save. Referral codes need to attach to the connected discount, so a bulk sync may run and lock the editor until it completes. See [Referral codes & bulk sync](/dollarback-store-credit/referral-program/referral-codes-and-bulk-sync).

## Step 3. Verify at checkout

1. Grab a customer's referral code from the storefront (widget or account page).
2. In an incognito window, build a qualifying cart as a new customer and apply the code at checkout.
3. The discount that applies should be the connected Ultimate Discounts discount. Check that the discount line matches its rules rather than the old built-in value.
4. Complete the order and confirm the referrer's reward still lands in **Analytics → Referral**: the referrer side is untouched by the integration.

{% hint style="warning" %}
Don't delete the connected discount inside Ultimate Discounts while the integration is live; the referral codes are attached to it. Disconnect or switch the discount in DollarBack first.
{% endhint %}

## Common issues

* The selector shows no discounts → the discounts in Ultimate Discounts don't use the required function; recreate the discount with a compatible type.
* Codes apply the old built-in discount → the sync to the integration discount may still be running, or the save didn't complete; check for the bulk-operation banner.
* Referral code rejected at checkout → the connected discount's own rules also apply now, on top of your referral conditions; test the discount by itself in Ultimate Discounts, then see [A referral wasn't tracked](/dollarback-store-credit/troubleshooting-and-faq/referral-wasnt-tracked).

## Related articles

* [Set up your referral program](/dollarback-store-credit/referral-program/set-up-your-referral-program)
* [Referrer rewards vs referee discounts](/dollarback-store-credit/referral-program/referrer-rewards-vs-referee-discounts)
* [Referral codes & bulk sync](/dollarback-store-credit/referral-program/referral-codes-and-bulk-sync)
* [Referral conditions & limits](/dollarback-store-credit/referral-program/referral-conditions-and-limits)


# Loyalty Tiers

Tier ladders, multipliers, evaluation windows, and syncing.

* [Loyalty tiers overview](/dollarback-store-credit/loyalty-tiers/loyalty-tiers-overview)
* [Build your tiers](/dollarback-store-credit/loyalty-tiers/build-your-tiers)
* [Evaluation windows](/dollarback-store-credit/loyalty-tiers/evaluation-windows)
* [Link cashback programs to tiers](/dollarback-store-credit/loyalty-tiers/link-cashback-programs-to-tiers)
* [Tiers with multiple currencies](/dollarback-store-credit/loyalty-tiers/tiers-with-multiple-currencies)
* [Sync tiers to customers](/dollarback-store-credit/loyalty-tiers/sync-tiers-to-customers)


# Loyalty tiers overview

{% hint style="info" %}
**Plan:** Advanced plan and above.
{% endhint %}

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

\_This article's section starts at 0:36 in the video.\_

Tiers rank your customers into loyalty levels: the more they shop, the better their level and the more they earn. This page explains what tiers add to your program and what your customers see once they're live.

## What tiers do

Tiers sit on top of your existing cashback programs and add two levers:

| Lever                       | What it does                                                                                                                                                 |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Cashback multiplier**     | Each tier can boost every cashback amount its members earn. A ×1.5 multiplier turns 5% cashback into 7.5% for that tier, with no need to duplicate programs. |
| **Tier-exclusive programs** | Assign specific cashback programs to a tier so only its members can earn from them, for example a bonus program only your top tier sees.                     |

You define each tier with conditions (money spent, orders placed, cashback earned or redeemed, and more), and DollarBack assigns customers automatically based on their activity inside an evaluation window you choose. Customers move up as they shop and can move back down when the window resets.

## The plan gate

Tiers are available on the **Advanced plan and above**. On lower plans, **DollarBack admin → Tiers** shows the feature locked with an **Upgrade plan** button. Everything else in DollarBack works without tiers; they are an optional layer, not a prerequisite. See [Choose a plan & start your trial](/dollarback-store-credit/getting-started/choose-a-plan-and-start-your-trial).

## What customers see

Once tiers are enabled and synced, they appear across your storefront touchpoints:

* **Floating cashback widget**: a tier section (labeled **Your Tier** by default) shows the customer's current tier, its multiplier badge (for example, **1.5×**), the requirements left to unlock the next tier, and, for recurring windows, when progress resets ("Resets on {date}").
* **Loyalty page**: a tiers section lays out the full ladder so shoppers can see every level and what it takes to reach it. See [Set up the loyalty page](/dollarback-store-credit/widgets-and-storefront/set-up-the-loyalty-page).
* **Product page and cart messages**: cashback messages can reflect tier states, so a top-tier customer sees their boosted rate.
* **Google Wallet pass**: the loyalty card shows the customer's current tier alongside their balance.

All tier labels and texts in the widget are customizable and translatable from **DollarBack admin → Customization**.

## How it fits together

1. [Build your tiers](/dollarback-store-credit/loyalty-tiers/build-your-tiers): conditions, multipliers, and ordering.
2. [Evaluation windows](/dollarback-store-credit/loyalty-tiers/evaluation-windows): the timeframe customer activity is measured over.
3. [Link cashback programs to tiers](/dollarback-store-credit/loyalty-tiers/link-cashback-programs-to-tiers): optional tier-exclusive earning.
4. [Sync tiers to customers](/dollarback-store-credit/loyalty-tiers/sync-tiers-to-customers): push your setup to every customer.

## Related articles

* [Build your tiers](/dollarback-store-credit/loyalty-tiers/build-your-tiers)
* [Evaluation windows](/dollarback-store-credit/loyalty-tiers/evaluation-windows)
* [Sync tiers to customers](/dollarback-store-credit/loyalty-tiers/sync-tiers-to-customers)
* [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated)


# Build your tiers

{% hint style="info" %}
**Plan:** Advanced plan and above.
{% endhint %}

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

*This article's section starts at 4:40 in the video.*

By the end of this page you'll have a working tier ladder live for every customer, each tier with its own qualification conditions and cashback multiplier.

## Prerequisites

* Advanced plan or above ([Choose a plan & start your trial](/dollarback-store-credit/getting-started/choose-a-plan-and-start-your-trial))
* At least one cashback program running ([Set up purchase cashback](/dollarback-store-credit/earning-cashback-programs/set-up-purchase-cashback)), so multipliers have something to multiply

## Step 1: Create your first tier

1. Go to **DollarBack admin → Tiers**.
2. Click **Add first tier** and name it.
3. Under **Conditions**, add what a customer must do to qualify. A customer must meet **all** active conditions on a tier to qualify for it. Available condition types:

| Condition             | Measures                                                  |
| --------------------- | --------------------------------------------------------- |
| **Money Spent**       | Order spend inside the evaluation window                  |
| **Orders Placed**     | Number of orders inside the window                        |
| **Cashback Earned**   | Store credit earned inside the window                     |
| **Cashback Redeemed** | Store credit spent inside the window                      |
| **Customer Tags**     | Shopify customer tags (has any/all, doesn't have any/all) |
| **Referrals Done**    | Completed referrals                                       |

Each numeric condition takes an operator and a value. The operator can be **at least (≥)**, **at most (≤)**, or **exactly (=)**.

4. Optionally mark one condition as the key metric (**Set as key metric**). The key metric is what the widget shows customers as their progress toward the next tier. Pick the one you want them chasing.
5. Set the **Cashback multiplier** for the tier. Every cashback amount a member earns is multiplied by this value; `1` means no boost.

## Step 2: Add the rest of the ladder

Click **Add another tier** and repeat. A simple, proven 3-tier ladder based on money spent:

| Tier   | Condition (Money Spent) | Cashback multiplier |
| ------ | ----------------------- | ------------------- |
| Gold   | at least $500           | ×2                  |
| Silver | at least $200           | ×1.5                |
| Bronze | at least $0             | ×1                  |

With this ladder, a 5% cashback program pays 5% to Bronze, 7.5% to Silver, and 10% to Gold: one program, three earn rates.

## Step 3: Order tiers by priority

Drag tiers to reorder them. The page reminds you: "Drag to reorder · tiers are evaluated top to bottom." A customer lands in the **first** tier from the top whose conditions they fully meet, so always place your best tier first. In the example above, Gold sits on top; a customer who has spent $650 matches Gold and stops there.

{% hint style="warning" %}
If a lower tier sits above a higher one, big spenders will match the lower tier first and never reach the top. Check the order before you save.
{% endhint %}

## Step 4: Enable and sync

1. Turn the **Customer Tiers** toggle to **Active**. This enables tiers globally across widgets and earning.
2. Click **Save**.
3. A banner appears: "Your tier settings have been saved. Sync to push the changes to all customers." Click **Sync now**. Nothing changes for existing customers until you sync. See [Sync tiers to customers](/dollarback-store-credit/loyalty-tiers/sync-tiers-to-customers).

## Verify it works

After the sync finishes, open your storefront as a logged-in customer and open the floating widget's tier section: you should see their assigned tier, its multiplier badge, and the requirements for the next tier. Then place a test order and check the credit log. The earned amount should reflect the tier's multiplier.

## Common issues

* **Tiers page shows "Upgrade plan"**: tiers require the Advanced plan or above.
* **A customer's tier didn't update after saving**: you likely skipped the sync. See [Sync tiers to customers](/dollarback-store-credit/loyalty-tiers/sync-tiers-to-customers).
* **Cashback amount doesn't show the multiplier**: the multiplier applies to orders placed after the customer had the tier; past orders are never recalculated. See [Customer didn't receive cashback](/dollarback-store-credit/troubleshooting-and-faq/customer-didnt-receive-cashback).

## Related articles

* [Evaluation windows](/dollarback-store-credit/loyalty-tiers/evaluation-windows)
* [Link cashback programs to tiers](/dollarback-store-credit/loyalty-tiers/link-cashback-programs-to-tiers)
* [Sync tiers to customers](/dollarback-store-credit/loyalty-tiers/sync-tiers-to-customers)
* [Tiers with multiple currencies](/dollarback-store-credit/loyalty-tiers/tiers-with-multiple-currencies)


# Evaluation windows

{% hint style="info" %}
**Plan:** Advanced plan and above.
{% endhint %}

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

*This article's section starts at 3:27 in the video.*

The evaluation window is the timeframe DollarBack looks at when deciding a customer's tier. Choose it carefully: it controls how customers climb and whether they can ever fall back down.

## The window options

Set the window in the **Evaluation Window** section of **DollarBack admin → Tiers**. It applies to all tiers at once.

| Option                | Counts activity from                  | Customers move down?                   |
| --------------------- | ------------------------------------- | -------------------------------------- |
| **All time**          | The customer's entire history         | No; progress only accumulates          |
| **Current month**     | The 1st of the current calendar month | Yes; counters restart every month      |
| **Current year**      | January 1 of the current year         | Yes; counters restart every year       |
| **Custom recurring…** | A recurring window you define         | Yes; counters restart at each rollover |

**Custom recurring** takes a **Start month**, a **Day**, and a **Repeat every** value in months. For example, a window that starts on the 1st and repeats every 12 months gives customers a rolling year to qualify and requalify, which is useful when a calendar-year reset feels arbitrary. Repeat every 3 months gives you quarterly tiers.

## How customers move up

Tier evaluation is automatic. Whenever a customer's numbers change (an order is processed, a referral reward lands, an account is created), DollarBack re-evaluates that customer against your ladder immediately. If they now meet all conditions of a higher tier, they move up on the spot; there is nothing for you to run.

The upgrade applies to future orders. The order that pushed a customer over a threshold is calculated at the tier they held when they placed it; multipliers are snapshotted per order (see [Link cashback programs to tiers](/dollarback-store-credit/loyalty-tiers/link-cashback-programs-to-tiers)).

## How customers move down

Customers only move down when the window resets. At each rollover (new month, new year, or the next recurrence of a custom window), counters restart from zero and DollarBack re-evaluates:

* A customer who no longer meets their tier's conditions drops to the highest tier they still qualify for.
* A customer who meets no tier's conditions has their tier removed entirely.

With **All time** there is no reset, so tiers are effectively permanent promotions: customers can only accumulate their way up. Pick a recurring window if you want tiers to reward *recent* loyalty and lapse when a customer stops shopping.

{% hint style="warning" %}
Switching windows (say, All time → Current month) can demote a large share of your customers at the next sync, because most will have far less activity inside the new, shorter window. Preview the impact on a few known customers before saving, and expect the widget to show the change after you sync.
{% endhint %}

## When re-evaluation happens

| Trigger                            | Scope                           |
| ---------------------------------- | ------------------------------- |
| Order processed                    | That customer                   |
| Referral reward processed          | That customer                   |
| Customer account created           | That customer                   |
| Window rollover                    | Scheduled reset per your window |
| **Sync now** after saving settings | All customers                   |

For recurring windows, the widget can show customers when their progress resets ("Resets on {date}"), so the deadline is visible rather than a surprise.

## Verify it works

Pick a customer whose order history you know. With **All time** selected, note their tier in the widget or their customer metafield. Switch to **Current month**, save, and [sync](/dollarback-store-credit/loyalty-tiers/sync-tiers-to-customers). A customer with old spend but no orders this month should drop, confirming the window drives assignment.

## Common issues

* **A loyal customer suddenly lost their tier**: a recurring window rolled over and their in-window activity no longer qualifies. Widen the window or lower thresholds.
* **Tier didn't change after editing the window**: settings changes reach existing customers only after a sync. See [Sync tiers to customers](/dollarback-store-credit/loyalty-tiers/sync-tiers-to-customers).
* **Customer expected credit at their new, higher rate on the qualifying order**: the multiplier applies from the next order; per-order snapshots are never recalculated.

## Related articles

* [Build your tiers](/dollarback-store-credit/loyalty-tiers/build-your-tiers)
* [Sync tiers to customers](/dollarback-store-credit/loyalty-tiers/sync-tiers-to-customers)
* [Link cashback programs to tiers](/dollarback-store-credit/loyalty-tiers/link-cashback-programs-to-tiers)
* [Loyalty tiers overview](/dollarback-store-credit/loyalty-tiers/loyalty-tiers-overview)


# Link cashback programs to tiers

{% hint style="info" %}
**Plan:** Advanced plan and above.
{% endhint %}

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

*This article's section starts at 5:31 in the video.*

Beyond multiplying what everyone earns, a tier can own cashback programs outright: programs only its members can earn from. This page shows how to link them and explains the one rule that surprises merchants: multipliers are locked in per order.

## Prerequisites

* A tier ladder built and enabled ([Build your tiers](/dollarback-store-credit/loyalty-tiers/build-your-tiers))
* The cashback program you want to make tier-exclusive already created ([Set up purchase cashback](/dollarback-store-credit/earning-cashback-programs/set-up-purchase-cashback))

## Make a program tier-exclusive

1. Go to **DollarBack admin → Tiers** and open the tier that should own the program.
2. In the tier's **Cashback Configs** section, click **Select configs**.
3. Pick the cashback program(s) to assign and click **Done**.
4. **Save**, then run the sync when prompted ([Sync tiers to customers](/dollarback-store-credit/loyalty-tiers/sync-tiers-to-customers)).

From then on, that program only earns for members of that tier. Customers in other tiers (or no tier) don't earn from it, and storefront widgets won't advertise it to them. In the widget's tier ladder it appears as one of the rewards the tier unlocks.

{% hint style="warning" %}
Customer tags on configs are ignored when assigned to a tier; tier membership takes precedence over tag targeting. If a program was previously targeted with customer tags, linking it to a tier replaces that targeting entirely.
{% endhint %}

## How exclusive programs combine with multipliers

Both tier levers apply together. Say your top tier has a ×2 multiplier and an exclusive "10% back on the premium collection" program:

* A top-tier member buying a $58 serum from that collection earns 10% × $58 × 2 = **$11.60**.
* A mid-tier member buying the same serum earns nothing from that program; it doesn't exist for them. They still earn from your store-wide programs at their own tier's multiplier.

All the usual calculation rules (winner-takes-all per line, caps, rounding) still apply. See [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated).

## The multiplier is snapshotted per order

When an order comes in, DollarBack records the customer's tier multiplier **on that order** and uses the recorded value forever after:

* **Changing a tier's multiplier later never changes past orders' cashback.** Raise Gold from ×2 to ×3 and only new orders earn at ×3.
* **A customer changing tiers never changes past orders either.** The order that promotes someone to Gold is itself calculated at their previous tier's rate; the Gold rate starts with their next order.
* **Refunds and order edits reconcile with the original snapshot.** If a Gold-at-×2 order is later partially refunded, even after you changed the multiplier or the customer changed tiers, the clawback is computed at the original ×2, so the numbers always match what was actually credited.

This is deliberate: credited amounts are an audit trail, and re-resolving multipliers retroactively would silently rewrite customers' history.

## Verify it works

Sign in as a member of the tier and confirm the exclusive program shows in their widget; place a test order and check the credit log shows the program plus the tier-multiplied amount. Then sign in as a customer from another tier and confirm the program is absent for them.

## Common issues

* **A customer outside the tier earned from the program**: they may have been synced into the tier since you last checked, or the program is also assigned elsewhere. Check their current tier and the config assignments.
* **Multiplier change didn't affect an order placed yesterday**: this is expected, because snapshots are permanent. Only orders placed after the change use the new value.
* **Customer didn't earn from the exclusive program at all**: confirm their tier assignment is synced, then walk [Customer didn't receive cashback](/dollarback-store-credit/troubleshooting-and-faq/customer-didnt-receive-cashback).

## Related articles

* [Build your tiers](/dollarback-store-credit/loyalty-tiers/build-your-tiers)
* [Sync tiers to customers](/dollarback-store-credit/loyalty-tiers/sync-tiers-to-customers)
* [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated)
* [Evaluation windows](/dollarback-store-credit/loyalty-tiers/evaluation-windows)


# Tiers with multiple currencies

{% hint style="info" %}
**Plan:** Advanced plan and above.
{% endhint %}

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

*Multi-currency conversion is touched on at 5:03 in the video.*

If your store sells in more than one currency through Shopify Markets, every money-based tier threshold needs a value in each market currency. DollarBack converts them for you automatically, or you can set each one by hand.

## Prerequisites

* A tier ladder with at least one money-based condition (Money Spent, Cashback Earned, or Cashback Redeemed); see [Build your tiers](/dollarback-store-credit/loyalty-tiers/build-your-tiers)
* More than one market currency active in Shopify Markets

## Where currency thresholds live

Open **DollarBack admin → Tiers** and edit a money-based condition. You enter the threshold in your store's base currency, say `$200` on a USD store. When other market currencies exist, a **Market currencies** button (with the count) sits next to the condition; click it to expand one row per market currency.

## Auto vs Manual per currency

Each market-currency row has its own **Auto** / **Manual** toggle:

| Mode       | Behavior                                                                                                          | Use when                                                                                                          |
| ---------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| **Auto**   | The threshold is converted from your base currency using Shopify's exchange rates, and follows them as they move. | You want zero upkeep and don't mind uneven numbers (e.g. $200 → €183.42).                                         |
| **Manual** | You type a fixed amount for that currency; it never changes on its own.                                           | You want clean, marketable thresholds per market (e.g. exactly €200), or a deliberately different bar per market. |

As the in-app helper puts it: auto values are converted from your base currency using Shopify rates; toggle to Manual to set a custom amount.

The two modes mix freely: a USD-base store can leave CAD on Auto and pin EUR manually. Amounts entered in a customer's own currency are what their spend in that market is measured against.

**Example.** Base currency USD, Silver at Money Spent ≥ $200:

* **EUR on Auto**: a shopper in your France market qualifies at whatever €-equivalent Shopify's current rate produces (≈ €183 at a 0.917 rate, drifting with the rate).
* **EUR on Manual, set to €200**: the bar is exactly €200, always, and your loyalty page can say so without fine print.

{% hint style="warning" %}
Auto thresholds move with exchange rates, so the qualification bar in a market can creep up or down over time without any action from you. If your storefront copy quotes exact numbers ("Spend €200 to reach Silver"), pin those currencies to Manual.
{% endhint %}

## After changing thresholds

Threshold edits behave like any other tier settings change: **Save**, then run the sync so existing customers are re-evaluated against the new numbers. See [Sync tiers to customers](/dollarback-store-credit/loyalty-tiers/sync-tiers-to-customers). Widgets show each customer their tier progress in their own market currency.

## Verify it works

Browse your storefront through a non-base market (for example your `/fr-fr/` presence with EUR prices) as a signed-in customer, and open the widget's tier section: the requirement for the next tier should show in EUR, matching the Auto conversion or your Manual amount.

## Common issues

* **Threshold looks "wrong" in one currency**: the row is on Auto and rates moved. Switch it to Manual to pin it.
* **Customer qualified in one market but not another**: expected if you set different Manual amounts per currency; the customer is measured against their market's threshold.
* **Edited a Manual amount but customers didn't move**: re-evaluation of existing customers requires a sync. See [Sync tiers to customers](/dollarback-store-credit/loyalty-tiers/sync-tiers-to-customers).

## Related articles

* [Build your tiers](/dollarback-store-credit/loyalty-tiers/build-your-tiers)
* [Sync tiers to customers](/dollarback-store-credit/loyalty-tiers/sync-tiers-to-customers)
* [Evaluation windows](/dollarback-store-credit/loyalty-tiers/evaluation-windows)
* [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated)


# Sync tiers to customers

{% hint style="info" %}
**Plan:** Advanced plan and above.
{% endhint %}

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

*This article's section starts at 7:28 in the video.*

Saving tier settings doesn't reassign anyone by itself; a sync pushes your changes to every customer. This page covers when to sync, what happens while it runs, and how to confirm the result.

## Why sync is required

Day to day, DollarBack re-evaluates customers one at a time as their activity changes (an order, a referral, a new account). But when you change the rules themselves (thresholds, multipliers, tier order, the evaluation window, config assignments), every existing customer needs to be re-checked against the new ladder at once. That's the sync.

After you click **Save** on the Tiers page, a banner tells you exactly this: "Your tier settings have been saved. Sync to push the changes to all customers." Until you sync, customers keep their previous assignments, and the page flags "Sync required to apply changes."

## Run the sync

1. Go to **DollarBack admin → Tiers**.
2. Click **Sync now**.
3. The sync runs in the background across your whole customer base. While it runs, the page shows **Sync in Progress** and warns: "Tiers are being synced. Please wait before making changes." Editing is blocked until it completes so a half-applied ladder can't produce mixed results.

You don't need to keep the page open; the job continues server-side.

## How long it takes

Duration scales with your customer count. Stores with a few thousand customers typically finish within minutes; very large customer bases take longer because customers are processed in background batches. If the **Sync in Progress** state persists unusually long, refresh the page before assuming something is stuck; the status updates as the background job reports in.

{% hint style="warning" %}
Make all your tier edits first, then sync once. Each sync walks your entire customer base, and you can't edit while one is running.
{% endhint %}

## Verify a customer's tier

**In the widget (customer side).** Open your storefront signed in as the customer and open the floating widget's tier section: it shows their current tier, its multiplier badge, and progress toward the next tier. The loyalty page's tier section reflects the same assignment.

**In the admin (merchant side).** DollarBack stores each customer's tier on their Shopify customer record as a metafield (namespace `dollarback-tiers`, key `customer-tier`). Open **Shopify admin → Customers**, pick the customer, and check the metafields section of their profile to see the assigned tier value. The **Tiers Summary** on the Tiers page shows your configured ladder (conditions, multipliers, and assigned programs) for cross-checking why a customer landed where they did.

## Verify it works

Pick a customer whose spend you know puts them in a specific tier. After the sync completes, confirm both views above agree: the widget shows the expected tier, and the customer's metafield carries the same value. Then place a test order with that account and check the credit log. The earned amount should reflect the tier's multiplier.

## Common issues

* **Customer's tier didn't change after saving settings**: the sync hasn't been run (or hasn't finished). Check for the "Sync required to apply changes" banner and click **Sync now**.
* **Tier is right in admin but the widget looks stale**: storefront data can be cached briefly; hard-refresh, and if the widget itself isn't rendering see [Widget isn't showing](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing).
* **Tier is correct but an order earned at the old rate**: multipliers are snapshotted per order; orders placed before the tier change keep their original rate. See [Link cashback programs to tiers](/dollarback-store-credit/loyalty-tiers/link-cashback-programs-to-tiers).
* **Can't edit tiers**: a sync (or bulk code generation) is still running; wait for it to finish.

## Related articles

* [Build your tiers](/dollarback-store-credit/loyalty-tiers/build-your-tiers)
* [Evaluation windows](/dollarback-store-credit/loyalty-tiers/evaluation-windows)
* [Link cashback programs to tiers](/dollarback-store-credit/loyalty-tiers/link-cashback-programs-to-tiers)
* [The floating cashback widget](/dollarback-store-credit/widgets-and-storefront/the-floating-cashback-widget)


# Widgets & Storefront

Every customer-facing surface and how to customize it.

* [Widget map: what shows where](/dollarback-store-credit/widgets-and-storefront/widget-map-what-shows-where)
* [Product page & cart cashback messages](/dollarback-store-credit/widgets-and-storefront/product-page-and-cart-cashback-messages)
* [The floating cashback widget](/dollarback-store-credit/widgets-and-storefront/the-floating-cashback-widget)
* [Open the widget from a menu link](/dollarback-store-credit/widgets-and-storefront/open-the-widget-from-a-menu-link)
* [Set up the loyalty page](/dollarback-store-credit/widgets-and-storefront/set-up-the-loyalty-page)
* [Checkout & thank-you widgets](/dollarback-store-credit/widgets-and-storefront/checkout-and-thank-you-widgets)
* [Customer account blocks](/dollarback-store-credit/widgets-and-storefront/customer-account-blocks)
* [Translate your widgets](/dollarback-store-credit/widgets-and-storefront/translate-your-widgets)


# Widget map: what shows where

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

\_This article's section starts at 0:00 in the video.\_

DollarBack can appear in 15 places across your store, from the product page to the checkout, the thank-you page, and your customers' account pages. This page is the index: what each touchpoint shows, where it lives, and where to go to set it up.

All touchpoints are managed from **DollarBack admin → Customization**, which groups them the same way this page does.

## Storefront (theme blocks and app embeds)

Widgets your customers see while browsing. Activated in the Shopify theme editor, customized in DollarBack.

* **Product page cashback message**: a line on each product page showing what that product earns. → [Product page & cart cashback messages](/dollarback-store-credit/widgets-and-storefront/product-page-and-cart-cashback-messages)
* **Cart cashback message**: the same message for the whole cart, including order-goal progress. → [Product page & cart cashback messages](/dollarback-store-credit/widgets-and-storefront/product-page-and-cart-cashback-messages)
* **Floating cashback widget**: a site-wide launcher that opens a panel with balance, ways to earn, tiers, referrals, rewards, and history. → [The floating cashback widget](/dollarback-store-credit/widgets-and-storefront/the-floating-cashback-widget)
* **Loyalty page**: a full storefront page for your rewards program. → [Set up the loyalty page](/dollarback-store-credit/widgets-and-storefront/set-up-the-loyalty-page)

## Checkout and post-purchase

Blocks added in the Shopify checkout editor. The two checkout blocks require Shopify Plus; the thank-you blocks work on all plans.

* **Checkout cashback**: tells the customer what this order will earn, right in checkout. → [Checkout & thank-you widgets](/dollarback-store-credit/widgets-and-storefront/checkout-and-thank-you-widgets)
* **Checkout reward marketplace**: lets customers redeem credit for rewards without leaving checkout. → [Checkout & thank-you widgets](/dollarback-store-credit/widgets-and-storefront/checkout-and-thank-you-widgets)
* **Thank-you cashback**: confirms the credit just earned, with its expiry note. → [Checkout & thank-you widgets](/dollarback-store-credit/widgets-and-storefront/checkout-and-thank-you-widgets)
* **Thank-you referral**: invites the customer to share their referral link while the purchase is fresh. → [Checkout & thank-you widgets](/dollarback-store-credit/widgets-and-storefront/checkout-and-thank-you-widgets)

## Customer account

Blocks on the new customer account pages (order list, order status, profile).

* **Order status cashback**: credit earned on that specific order. → [Customer account blocks](/dollarback-store-credit/widgets-and-storefront/customer-account-blocks)
* **Credit balance**: balance banner plus filterable transaction history. → [Customer account blocks](/dollarback-store-credit/widgets-and-storefront/customer-account-blocks)
* **Referral blocks (three placements)**: referral code and share UI on the order list, order status, and profile pages. → [Customer account blocks](/dollarback-store-credit/widgets-and-storefront/customer-account-blocks)
* **Account reward marketplace**: redeem rewards from the profile page. → [Customer account blocks](/dollarback-store-credit/widgets-and-storefront/customer-account-blocks)
* **Google Wallet pass**: a loyalty card on the customer's phone with live balance and push updates. → [Customer account blocks](/dollarback-store-credit/widgets-and-storefront/customer-account-blocks)

## Third-party cart drawers

* **Cart drawer cashback**: the cart message rendered inside Rebuy, Upcart, Monster, AMP, or your theme's native drawer. → [Cart drawer integrations](/dollarback-store-credit/integrations/cart-drawer-integrations)

## The full matrix

| Touchpoint                  | Surface                                       | What it shows                                                                                                                                               | You can customize                                                                                                                                                             |
| --------------------------- | --------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Product page message        | PDP theme block                               | Cashback earnable on this product; tier-reached / tier-max / goal-progress states; discount-code reward messages                                            | Message text per state, background/text color, size, weight, padding, tooltip, custom CSS                                                                                     |
| Cart message                | Cart page / drawer theme block                | Cashback for the current cart; order-goal progress tiers; discount reward messages; loading state                                                           | Message templates per state, colors, typography, padding, tooltip, custom CSS                                                                                                 |
| Floating cashback widget    | App embed (site-wide)                         | Launcher opening a tabbed panel: balance, ways to earn (signup / newsletter / birthday / social forms), tiers and progress, referral link, rewards, history | All labels and tab names, login prompts, card order, panel width, 5 color roles, border radius, custom CSS                                                                    |
| Loyalty page                | Full storefront page                          | Hero, how-it-works steps, ways to earn, tiers, referral block with share buttons (Facebook, X, WhatsApp, email), reward history, FAQ                        | Every section's copy (logged in/out variants), hero image, section hiding, full branding tokens (colors, type, radii), sign-in/registration URLs, custom CSS (`db-loyalty-*`) |
| Checkout cashback           | Checkout block (Shopify Plus)                 | Cashback the order will earn; order-goal progress; discount reward notices                                                                                  | Message templates per state                                                                                                                                                   |
| Checkout reward marketplace | Checkout block (Shopify Plus)                 | Balance plus redeemable rewards (order / product / shipping); redeem and copy-code actions                                                                  | Heading, balance label, per-reward-type templates, minimum-order note, button labels, success/error messages                                                                  |
| Thank-you cashback          | Thank-you block                               | Credit earned on the order just placed, expiry note, goal-earned message                                                                                    | Title, heading, body/expiry/loading messages                                                                                                                                  |
| Thank-you referral          | Thank-you block                               | Referral invite with copyable link, in separate guest and logged-in states                                                                                  | Headings, body copy, button and clipboard text                                                                                                                                |
| Order status cashback       | Order status block                            | Credit earned on that order                                                                                                                                 | Earned message                                                                                                                                                                |
| Credit balance              | Account page block                            | Balance banner, transaction history with filters                                                                                                            | Banner title/description, CTA text, history filter and tag labels                                                                                                             |
| Referral blocks (×3)        | Order list / order status / profile           | Referral code plus share UI, referral history                                                                                                               | Headings, message templates, copy-button and clipboard text                                                                                                                   |
| Account reward marketplace  | Profile block                                 | Redeemable rewards, redemption history, balance                                                                                                             | Headings, balance label, empty states, reward templates, button labels, success/error messages                                                                                |
| Google Wallet pass          | Profile block + phone wallet                  | Loyalty card: live balance, member name, tier, QR code, push updates on earn/redeem                                                                         | Issuer and program name, logo and hero image, background color, earned/redeemed notification texts with variables                                                             |
| Cart drawer cashback        | Rebuy · Upcart · Monster · AMP · theme drawer | Cashback message inside the third-party drawer, mirroring the cart message                                                                                  | Per-drawer enablement; inherits the cart message templates                                                                                                                    |

Every text field in this table can also be translated per language; see [Translate your widgets](/dollarback-store-credit/widgets-and-storefront/translate-your-widgets). Theme developers who want to render cashback messaging in their own markup can use the [storefront window API](/dollarback-store-credit/developer-tools/storefront-window-api).

## Common issues

* A widget is activated but nothing appears on the storefront; see [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing).
* Store credit doesn't appear as a payment option at checkout; see [Store credit isn't available at checkout](/dollarback-store-credit/troubleshooting-and-faq/store-credit-isnt-available-at-checkout).

## Related articles

* [Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme)
* [Product page & cart cashback messages](/dollarback-store-credit/widgets-and-storefront/product-page-and-cart-cashback-messages)
* [The floating cashback widget](/dollarback-store-credit/widgets-and-storefront/the-floating-cashback-widget)
* [Translate your widgets](/dollarback-store-credit/widgets-and-storefront/translate-your-widgets)


# Product page & cart cashback messages

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

\_This article's section starts at 1:02 in the video.\_

These two theme blocks put a cashback line where buying decisions happen: on the product page and in the cart. When you're done here, both show the right message for every state (standard cashback, goal progress, tier reached, and discount-code rewards) in your brand's colors.

## At a glance

| Touchpoint           | Surface                        | What it shows                                                                                                    | You can customize                                                                         |
| -------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| Product page message | PDP theme block                | Cashback earnable on this product; tier-reached / tier-max / goal-progress states; discount-code reward messages | Message text per state, background/text color, size, weight, padding, tooltip, custom CSS |
| Cart message         | Cart page / drawer theme block | Cashback for the current cart; order-goal progress tiers; discount reward messages; loading state                | Message templates per state, colors, typography, padding, tooltip, custom CSS             |

## Prerequisites

* At least one live cashback program; see [Quick start](/dollarback-store-credit/getting-started/quick-start-launch-your-first-cashback-program).
* The theme blocks added to your theme; see [Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme).

## Step 1. Add the blocks in your theme

1. In the Shopify theme editor, open a product page template and add the **Cashback Rewards: Product** block where you want the message (most stores place it near the price or the add-to-cart button).
2. Open your cart template (or the section your theme uses for the cart) and add the **Cashback Rewards: Cart** block.
3. Save. The blocks render with default messages immediately wherever a cashback program applies.

If you use a third-party cart drawer (Rebuy, Upcart, and others), the cart message can render inside it too. See [Cart drawer integrations](/dollarback-store-credit/integrations/cart-drawer-integrations).

## Step 2. Customize the messages

Go to **DollarBack admin → Customization** and open **Product page – cashback** or **Cart – cashback**. Both editors have the same four sections: **Messages**, **Appearance**, **Tooltip**, and **Advanced**, with a live preview beside them.

Each state has its own template. Variables in curly braces are replaced per customer and cart:

| Message field                   | When it shows                                                     | Variables                                                                     |
| ------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| Cashback message                | The standard state, when a cashback program applies               | `{amount}`, `{title}` (product page also supports `{startDate}`, `{endDate}`) |
| Order-goal progress message     | An order-goal program exists and the goal isn't reached yet       | `{remainingAmount}`, `{nextAmount}`                                           |
| Order-goal tier reached message | A goal tier is reached but higher tiers remain                    | `{amount}`, `{remainingAmount}`, `{nextAmount}`                               |
| Order-goal max reached message  | The top goal tier is reached                                      | `{amount}`, `{title}`                                                         |
| Discount reward message         | The matching program pays a discount code instead of store credit | `{reward}`                                                                    |
| Loading message                 | Shown briefly while the cart recalculates                         | (none)                                                                        |

For example, a progress message like `Add {remainingAmount} more to earn {nextAmount} back` updates live as the customer edits their cart.

## Step 3. Style the block

In **Appearance**, set:

| Control                       | Effect                       |
| ----------------------------- | ---------------------------- |
| Background color / Text color | The message bar's colors     |
| Text size / Text weight       | Typography of the message    |
| Padding                       | Space inside the message bar |

In **Tooltip**, the **Tooltip visibility** toggle adds a small info anchor next to the message. You can set the **Tooltip text** (variables `{amount}`, `{title}`), plus **Tooltip background color**, **Tooltip text color**, **Tooltip anchor color**, and the tooltip's **Link color** and **Link size**.

## Step 4. Custom CSS

For anything the controls don't cover, the **Advanced** section has a **Custom CSS** field scoped to the block. Use your browser's inspector to find the class you want to override, then save and refresh the storefront.

## Verify it works

1. Open a product covered by a cashback program. The product message should show the right amount.
2. Add it to the cart and open the cart page. The cart message should reflect the cart total.
3. If you run an order-goal program, add and remove items to walk the cart through the progress, tier-reached, and max states.

## Common issues

* The block doesn't appear at all: usually it was never added to the template, or no program matches the product. See [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing).
* The amount looks wrong: messages mirror the calculation engine, including discounts and config competition. See [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated).
* The message shows in English on a translated storefront: add a translation for the widget. See [Translate your widgets](/dollarback-store-credit/widgets-and-storefront/translate-your-widgets).

## Related articles

* [Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme)
* [The floating cashback widget](/dollarback-store-credit/widgets-and-storefront/the-floating-cashback-widget)
* [Cart drawer integrations](/dollarback-store-credit/integrations/cart-drawer-integrations)
* [Translate your widgets](/dollarback-store-credit/widgets-and-storefront/translate-your-widgets)


# The floating cashback widget

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

\_This article's section starts at 5:32 in the video.\_

The floating widget is DollarBack's home base on your storefront: a launcher button in the page corner that opens a tabbed panel where customers check their balance, earn credit, track tiers, share referrals, redeem rewards, and read their history. This page covers activating it and customizing every label and color.

## At a glance

| Touchpoint               | Surface               | What it shows                                                                                                                                               | You can customize                                                                                          |
| ------------------------ | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| Floating cashback widget | App embed (site-wide) | Launcher opening a tabbed panel: balance, ways to earn (signup / newsletter / birthday / social forms), tiers and progress, referral link, rewards, history | All labels and tab names, login prompts, card order, panel width, 5 color roles, border radius, custom CSS |

## Prerequisites

* At least one live cashback program; the widget shows earning actions only for programs that exist.
* The app embed enabled; see [Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme).

## Step 1. Turn on the app embed

The widget is an app embed, not a section block: it renders on every page.

1. In the Shopify theme editor, open the app embeds panel.
2. Enable the **Cashback Widget** embed and save.
3. Visit your storefront. The launcher appears in the corner.

## What customers see in the panel

The panel has three tabs, **Home**, **Offers**, and **Referral** (all three names are customizable):

* **Home**: the customer's balance, tier and tier progress, and a stack of earn cards: **Signup Bonus** (with a **Sign up** button for guests), **Newsletter** (**Subscribe**), **Birthday** (**Add Your Birthday** form), and **Social** (**Follow** buttons with trackable links). Cards appear only for programs you actually run.
* **Offers**: the reward marketplace, holding rewards the customer can redeem with credit plus their reward history.
* **Referral**: the customer's referral code and share options.

Logged-out visitors see login prompts instead of personal data; those prompts are customizable too.

## Step 2. Customize labels and content

Go to **DollarBack admin → Customization → Cashback widget**. The settings form is grouped into sections, each mapping to part of the panel:

| Section                                                             | What it controls                                                                                           |
| ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| Header                                                              | The launcher's button label and panel header text                                                          |
| Login / Logged out                                                  | Prompts and buttons shown to guests                                                                        |
| Navigation tabs                                                     | The names of the Home / Offers / Referral tabs                                                             |
| Cashback                                                            | Balance and credit labels                                                                                  |
| Earn credit descriptions                                            | The copy on each earn card                                                                                 |
| Signup labels / Newsletter labels / Birthday labels / Social labels | Each earn form's heading, description, and button text                                                     |
| Tiers / Tier labels / Tier unlock requirements                      | Tier names, progress text, and requirement strings (for example the spend requirement supports `{amount}`) |
| Referral                                                            | Referral tab headings and share copy                                                                       |
| Offers count / Redeem rewards / Reward history                      | Marketplace labels, redeem buttons, and history strings                                                    |

Every string in these sections is translatable per language; see [Translate your widgets](/dollarback-store-credit/widgets-and-storefront/translate-your-widgets).

## Step 3. Reorder the Home cards

The **Card Order** section lists the Home tab's cards; drag to reorder how cards appear on the Home tab. Put your most important earning action first; most stores lead with the balance and the signup or referral card.

## Step 4. Style it

The widget's look is driven by five color roles plus shape controls:

| Control          | Effect                              |
| ---------------- | ----------------------------------- |
| Primary color    | Launcher and primary buttons        |
| Secondary color  | Secondary accents and highlights    |
| Panel background | The panel's background              |
| Text color       | Body text throughout the panel      |
| Accent color     | Progress bars, badges, and emphasis |
| Border radius    | Corner rounding, 0–30               |
| Panel width      | Panel width, 280–440 px             |
| Position         | **Bottom right** or **Bottom left** |

For anything beyond these, use the **Custom CSS** field on the **Advanced** tab. It's scoped to the widget, and your rules load with it on every page.

## Prefer a menu item to the floating button?

If the floating launcher clashes with your navigation, a chat bubble, or a cookie banner, you can hide it and open the same panel from a header menu item or your own button instead. See [Open the widget from a menu link](/dollarback-store-credit/widgets-and-storefront/open-the-widget-from-a-menu-link).

## Verify it works

1. Open your storefront in a private window: the launcher should show, and the panel should show logged-out prompts.
2. Sign in as a test customer: the Home tab should show the balance and only the earn cards for programs you run.
3. Change a color and the card order in the admin, save, and refresh the storefront to confirm both apply.

## Common issues

* The launcher doesn't appear: the **Cashback Widget** app embed is off, or the theme was switched. See [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing).
* An earn card is missing: the matching program is paused, outside its date window, or doesn't exist. See [Cashback program types at a glance](/dollarback-store-credit/earning-cashback-programs/cashback-program-types-at-a-glance).
* The balance looks stale after an order: check the trigger and holding period. See [When credit is issued](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued).

## Related articles

* [Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme)
* [Open the widget from a menu link](/dollarback-store-credit/widgets-and-storefront/open-the-widget-from-a-menu-link)
* [Set up the loyalty page](/dollarback-store-credit/widgets-and-storefront/set-up-the-loyalty-page)
* [Set up the reward marketplace](/dollarback-store-credit/spending-store-credit-and-rewards/set-up-the-reward-marketplace)
* [Translate your widgets](/dollarback-store-credit/widgets-and-storefront/translate-your-widgets)


# Open the widget from a menu link

By default the cashback widget lives behind a floating launcher in the page corner. Some stores would rather not have a floating button at all: it can sit on top of chat widgets, cookie banners, or your own navigation. This recipe removes the launcher and opens the same panel from a permanent entry point you control, such as a header menu item or an icon in your announcement bar.

The panel itself does not change. Customers still get the full Home / Offers / Referral experience; only the way they open it moves.

{% hint style="info" %}
Keep the **Cashback Widget** app embed enabled. The embed renders the panel; this recipe only hides the launcher button. If you disable the embed, there is nothing left to open.
{% endhint %}

## How it works

The storefront bundle exposes `window.dollarlabs.dollarback.openWidget()`, which opens the panel from any JavaScript on the page. So the recipe is three small steps:

1. Hide the floating launcher with widget custom CSS.
2. Add a menu item that acts as the new entry point.
3. Add a few lines of JavaScript that call `openWidget()` when that menu item is clicked.

## Step 1. Hide the floating launcher

1. Go to **DollarBack admin → Customization → Cashback widget** and open the **Advanced** tab.
2. In the **Custom CSS** field, add:

```css
.dbw-trigger {
  display: none;
}
```

3. Save.

The launcher button doubles as the panel's close button, so with it hidden customers close the panel by clicking anywhere outside it or pressing Escape. If you want the button to reappear as a close control while the panel is open, use this instead:

```css
.dbw-trigger {
  display: none;
}
.dbw-root:has(.dbw-panel--open) .dbw-trigger {
  display: flex;
}
```

## Step 2. Add the menu item

1. In Shopify admin, go to **Online Store → Navigation** and open the menu you want (usually the main menu).
2. Add a menu item named for example **Rewards**, and set its link to `#rewards`.
3. Save the menu.

The `#rewards` link is just a marker for the script in the next step; on its own it does nothing. Any anchor value works as long as the script below matches it.

## Step 3. Wire the click to the widget

Add this script to your theme. The easiest home for it is a **Custom Liquid** section or block placed in the theme's footer; pasting it into `theme.liquid` just before `</body>` also works.

```html
<script>
  document.addEventListener("click", function (event) {
    var link = event.target.closest('a[href$="#rewards"]');
    if (!link) return;
    event.preventDefault();
    if (window.dollarlabs && window.dollarlabs.dollarback && window.dollarlabs.dollarback.openWidget) {
      window.dollarlabs.dollarback.openWidget();
    }
  });
</script>
```

This listens for clicks on any link ending in `#rewards` (your new menu item), stops the browser from jumping to the anchor, and opens the panel. The guard around the call means a click during the first moments of page load, before the DollarBack bundle has finished loading, is safely ignored instead of throwing an error.

If you are wiring up your own button rather than a menu link, you can call the API directly:

```html
<button onclick="window.dollarlabs.dollarback.openWidget({ tab: 'offers' })">
  View rewards
</button>
```

## Optional: deep-link into a specific tab or view

`openWidget()` accepts an options object, so different menu items can open different parts of the panel:

| Call                              | Opens                                                                  |
| --------------------------------- | ---------------------------------------------------------------------- |
| `openWidget()`                    | The Home tab                                                           |
| `openWidget({ tab: "offers" })`   | The Offers tab                                                         |
| `openWidget({ tab: "referral" })` | The Referral tab                                                       |
| `openWidget({ view: "redeem" })`  | The redeem rewards view                                                |
| `openWidget({ view: "history" })` | The reward history view                                                |
| `openWidget({ configId: "..." })` | The Offers tab, scrolled to that cashback offer with a brief highlight |

The full API, including the equivalent `dollarback:open-widget` event, is documented in the [Storefront window API](/dollarback-store-credit/developer-tools/storefront-window-api) reference.

## No-code alternative: link to the loyalty page

If you would rather not add any script, point the menu item at your loyalty page instead. It is a full page with the same balance, earning, and redemption content, and a plain menu link reaches it with no JavaScript. See [Set up the loyalty page](/dollarback-store-credit/widgets-and-storefront/set-up-the-loyalty-page).

## Verify it works

1. Open your storefront: the corner launcher should be gone.
2. Click the new menu item: the panel should open in place instead of navigating.
3. Click outside the panel (or press Escape) to close it.
4. Sign in as a test customer and repeat; the panel should show their balance as usual.

## Common issues

* Clicking the menu item jumps to the top of the page instead of opening the panel: the script isn't on the page (the Custom Liquid section was removed or is only on some templates), or the `href` in the script doesn't match the menu item's link.
* Nothing happens at all: the **Cashback Widget** app embed is off. The launcher CSS only hides the button; the embed must stay enabled. See [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing).
* The launcher is still visible: the CSS was added somewhere else, such as the theme editor. It must go in the **Custom CSS** field under **Customization → Cashback widget → Advanced**, which loads with the widget itself.

## Related articles

* [The floating cashback widget](/dollarback-store-credit/widgets-and-storefront/the-floating-cashback-widget)
* [Set up the loyalty page](/dollarback-store-credit/widgets-and-storefront/set-up-the-loyalty-page)
* [Storefront window API](/dollarback-store-credit/developer-tools/storefront-window-api)
* [Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme)


# Set up the loyalty page

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

\_This article's section starts at 8:16 in the video.\_

The loyalty page is a full storefront page: a dedicated home for your rewards program with a hero, how-it-works steps, ways to earn, tiers, referrals, reward history, and an FAQ. When you're done here, it's live on your store, branded, and in your navigation.

## At a glance

| Touchpoint   | Surface              | What it shows                                                                                                                        | You can customize                                                                                                                                                             |
| ------------ | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Loyalty page | Full storefront page | Hero, how-it-works steps, ways to earn, tiers, referral block with share buttons (Facebook, X, WhatsApp, email), reward history, FAQ | Every section's copy (logged in/out variants), hero image, section hiding, full branding tokens (colors, type, radii), sign-in/registration URLs, custom CSS (`db-loyalty-*`) |

## Prerequisites

* At least one live cashback program, so the page has something to show.
* One of the DollarBack app embeds enabled in your theme; the page needs it to load its data.

## Step 1. Publish the page

The loyalty page is served by DollarBack at a fixed URL on your store: `/apps/dollarlabs/loyalty`. It goes live as soon as either the **Cashback Widget** or the **Cashback Window Variable** app embed is enabled in your theme.

1. Go to **DollarBack admin → Customization → Loyalty page**.
2. If an embed is active, a banner confirms "Loyalty page is live on your storefront" with a link to the page. If you instead see "Theme embed not enabled", use the **Open theme editor** action, enable one of the two embeds, and save.
3. Open `/apps/dollarlabs/loyalty` on your storefront to see the default page.

There's no full-page preview inside the admin; use the **View loyalty page** button to check your changes live.

## Step 2. Edit each section

The page is built from a pinned **Hero banner** plus reorderable sections: **How it works**, **Ways to earn**, **Ways to redeem**, **Tiers**, **Referral**, **Reward history**, and **FAQ**. Drag sections to reorder them; each has its own copy fields.

The hero has separate states for guests and signed-in customers:

| Hero field                                                        | Applies to                                                         |
| ----------------------------------------------------------------- | ------------------------------------------------------------------ |
| Heading (logged out) / Subtitle (logged out) / Join CTA           | Guests                                                             |
| Heading (logged in) / Subtitle (logged in) / Shop CTA (logged in) | Signed-in customers (the logged-in heading supports `{firstName}`) |
| Banner image URL / Sign in CTA / Balance label                    | Both states                                                        |

The other sections follow the same pattern: how-it-works steps, earn cards, redeem items, tier thresholds (spend thresholds support `{amount}`), referral share copy (with Facebook, X, WhatsApp, and email share buttons), history labels, and FAQ entries are all editable text.

## Step 3. Hide sections you don't need

Every section has a hide/show control (the hero has its own **Hide hero** toggle). Don't run tiers? Hide the Tiers section; nothing else changes. Hidden sections keep their content, so you can bring them back later.

## Step 4. Brand it

The Branding controls are design tokens applied across the whole page:

| Group      | Controls                                                                                                                   |
| ---------- | -------------------------------------------------------------------------------------------------------------------------- |
| Colors     | Primary color, Primary text color, Secondary color, Page background, Card background, Text color, Muted text, Border color |
| Typography | Heading font size, Heading font weight, Body font size                                                                     |
| Shape      | Border radius (cards), Border radius (buttons & chips)                                                                     |

## Step 5. Custom CSS

For finer control, the **Custom CSS** field targets the page's stable class names (everything is prefixed `db-loyalty-*`), and the page exposes CSS variables including `--db-loyalty-accent` and `--db-loyalty-accent-text`. For example:

```css
.db-loyalty-hero { min-height: 420px; }
:root { --db-loyalty-accent: #0b7a4b; }
```

Inspect the live page to find the class for the element you want to change; the `db-loyalty-` prefix keeps your rules from leaking into the rest of the theme.

## Step 6. Point the sign-in and registration links

In the Links controls, set:

* **Sign in URL**: where the hero's sign-in CTA sends guests (your customer account login).
* **Register URL**: where the join CTA sends new customers.
* **Shop / collections URL**: where the logged-in shop CTA points.

## Step 7. Add it to your navigation

In Shopify admin, go to **Online Store → Navigation**, open your main menu, and add a menu item (for example "Rewards") linking to `/apps/dollarlabs/loyalty`.

## Verify it works

1. Visit the page in a private window: you should see the logged-out hero and join CTA.
2. Sign in as a test customer: the hero should switch to the logged-in state with the balance, and Reward history should show real entries.
3. Confirm the nav item appears and the share buttons open with the customer's referral code.

## Common issues

* The page 404s or renders empty: the app embed is disabled. See [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing).
* The Tiers section is empty: tiers aren't configured or synced. See [Loyalty tiers overview](/dollarback-store-credit/loyalty-tiers/loyalty-tiers-overview).
* The page shows in the wrong language for a translated storefront: see [Translate your widgets](/dollarback-store-credit/widgets-and-storefront/translate-your-widgets).

## Related articles

* [Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme)
* [The floating cashback widget](/dollarback-store-credit/widgets-and-storefront/the-floating-cashback-widget)
* [How customers share referral links](/dollarback-store-credit/referral-program/how-customers-share-referral-links)
* [Translate your widgets](/dollarback-store-credit/widgets-and-storefront/translate-your-widgets)


# Checkout & thank-you widgets

{% hint style="info" %}
**Plan:** the two checkout blocks require **Shopify Plus** (Shopify only allows checkout customization on Plus). The two thank-you page blocks work on all Shopify plans.
{% endhint %}

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

\_This article's section starts at 11:06 in the video.\_

Four blocks cover the purchase moment: two in checkout (what this order earns, and a chance to redeem rewards) and two on the thank-you page (confirmation of the credit earned, and a referral invite). When you're done here, all four are placed and speaking your brand's language.

## At a glance

| Touchpoint                  | Surface               | What it shows                                                                              | You can customize                                                                                            |
| --------------------------- | --------------------- | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ |
| Checkout cashback           | Checkout block (Plus) | Cashback the order will earn; order-goal progress; discount reward notices                 | Message templates per state                                                                                  |
| Checkout reward marketplace | Checkout block (Plus) | Balance plus redeemable rewards (order / product / shipping); redeem and copy-code actions | Heading, balance label, per-reward-type templates, minimum-order note, button labels, success/error messages |
| Thank-you cashback          | Thank-you block       | Credit earned on the order just placed, expiry note, goal-earned message                   | Title, heading, body/expiry/loading messages                                                                 |
| Thank-you referral          | Thank-you block       | Referral invite with copyable link, in separate guest and logged-in states                 | Headings, body copy, button and clipboard text                                                               |

## Prerequisites

* A live cashback program; for the marketplace block, at least one active reward; see [Set up the reward marketplace](/dollarback-store-credit/spending-store-credit-and-rewards/set-up-the-reward-marketplace).
* For the checkout blocks: a Shopify Plus store.

## Step 1. Place the blocks in the checkout editor

1. In Shopify admin, go to **Settings → Checkout** and open the checkout editor for your published checkout profile.
2. On the **Checkout** page of the editor, add the app blocks **Checkout Cashback Banner** and **Checkout Reward Marketplace** where you want them (the order summary column is a common spot).
3. Switch the editor's page selector to the **Thank you** page and add **Thank You Cashback** and **Thank You Referral**.
4. Save. On non-Plus stores, skip step 2; only the thank-you page accepts blocks.

## Step 2. Customize each block's messages

Each block has its own editor under **DollarBack admin → Customization**, in the **Checkout** group. Variables in curly braces fill in per order.

**Cashback at checkout**

| Field                           | Variables                                       |
| ------------------------------- | ----------------------------------------------- |
| Cashback earned message         | `{amount}`                                      |
| Order-goal progress message     | `{remainingAmount}`, `{nextAmount}`             |
| Order-goal tier reached message | `{amount}`, `{remainingAmount}`, `{nextAmount}` |
| Order-goal max reached message  | `{amount}`                                      |

The goal messages give checkout a last-second upsell: "Add {remainingAmount} more to earn {nextAmount} back" can still change the order.

**Checkout reward marketplace**

| Field                                  | Variables             |
| -------------------------------------- | --------------------- |
| Section heading, Balance label         | (none)                |
| Reward template (order discount)       | `{amount}`, `{value}` |
| Reward template (product discount)     | `{amount}`, `{value}` |
| Reward template (free shipping)        | `{amount}`            |
| Minimum-order note                     | `{minAmount}`         |
| Redeem button, Copy code button        | (none)                |
| Success message, Generic error message | (none)                |

Redeeming here mints the discount code on the spot; the customer copies it and applies it in the same checkout.

**Thank you page cashback**

| Field              | Variables     |
| ------------------ | ------------- |
| Confirmation title | `{amount}`    |
| Cashback heading   | `{amount}`    |
| Expiration message | `{expiresAt}` |
| Loading text       | (none)        |

**Thank you page referral**

| Field                                                           | Variables                 |
| --------------------------------------------------------------- | ------------------------- |
| Referral heading                                                | (none)                    |
| Referral message                                                | `{amount}`                |
| Copy button label                                               | (none)                    |
| Logged-out title / Logged-out message / Logged-out button label | `{amount}` in the message |

The referral block has two states: signed-in customers see their code and a copy button; guests see the logged-out copy prompting them to create an account first.

## Verify it works

1. Place a test order as a signed-in customer with some credit.
2. In checkout, confirm the cashback banner shows the right amount and the marketplace lists your rewards.
3. On the thank-you page, confirm the earned amount, the expiry note, and the referral invite with a copyable code.

## Common issues

* The checkout blocks aren't available in the editor: the store isn't on Shopify Plus, or the blocks weren't added to the published checkout profile.
* The marketplace shows no rewards: no reward is active, or the customer's balance is below every reward's cost. See [Set up the reward marketplace](/dollarback-store-credit/spending-store-credit-and-rewards/set-up-the-reward-marketplace).
* A redeemed code won't apply: check the store-wide combination rules. See [A reward discount code isn't working](/dollarback-store-credit/troubleshooting-and-faq/reward-discount-code-isnt-working).
* The cashback amount at checkout differs from what lands: discounts and caps apply at calculation. See [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated).

## Related articles

* [Customer account blocks](/dollarback-store-credit/widgets-and-storefront/customer-account-blocks)
* [Set up the reward marketplace](/dollarback-store-credit/spending-store-credit-and-rewards/set-up-the-reward-marketplace)
* [Discount combination rules](/dollarback-store-credit/spending-store-credit-and-rewards/discount-combination-rules)
* [How customers share referral links](/dollarback-store-credit/referral-program/how-customers-share-referral-links)


# Customer account blocks

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

\_This article's section starts at 12:26 in the video.\_

DollarBack ships six blocks for the new customer account pages, so the loyalty program lives where customers already check their orders: a credit balance banner, the referral share UI in three placements, the reward marketplace, and the Google Wallet pass. This page covers placing and customizing each.

## At a glance

| Touchpoint                 | Surface                             | What it shows                                                                       | You can customize                                                                                  |
| -------------------------- | ----------------------------------- | ----------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| Credit balance             | Account page block                  | Balance banner, transaction history with filters                                    | Banner title/description, CTA text, history filter and tag labels                                  |
| Referral blocks (×3)       | Order list / order status / profile | Referral code plus share UI, referral history                                       | Headings, message templates, copy-button and clipboard text                                        |
| Account reward marketplace | Profile block                       | Redeemable rewards, redemption history, balance                                     | Headings, balance label, empty states, reward templates, button labels, success/error messages     |
| Google Wallet pass         | Profile block + phone wallet        | Loyalty card: live balance, member name, tier, QR code, push updates on earn/redeem | Issuer and program name, logo and hero image, background color, earned/redeemed notification texts |

These blocks require Shopify's **new customer accounts**; they don't render in classic/legacy accounts. A seventh, closely related block, **Order status – cashback earned**, shows the credit earned on a specific order and is placed the same way.

## Prerequisites

* New customer accounts enabled in Shopify (**Settings → Customer accounts**).
* A live cashback program; for the marketplace block, active rewards; for the wallet block, the Google Wallet integration; see [Google Wallet passes](/dollarback-store-credit/integrations/google-wallet-passes).

## Step 1. Place the blocks in the account editor

1. In Shopify admin, go to **Settings → Checkout** and open the editor, then switch to the customer account pages (or open the customer accounts editor from **Settings → Customer accounts**).
2. On each page, add the DollarBack blocks you want:

| Account page             | Blocks available                                                                            |
| ------------------------ | ------------------------------------------------------------------------------------------- |
| Order list (order index) | **Store Credit Earned**, **Referral Program - Order List**                                  |
| Order status             | **Store Credit Earned**, **Referral Program - Order Status**                                |
| Profile                  | **Referral Program - Profile**, **Reward Marketplace - Profile**, **Wallet Pass - Profile** |

3. Position each block and save.

You don't need all three referral placements; most stores use the profile plus one order placement. All three share the same referral code; the placements meet the customer in different moments.

## Step 2. Customize each block

Each block has an editor under **DollarBack admin → Customization**, in the **Customer account** group. Variables in curly braces fill in per customer.

**Credit balance**

| Field           | Variables  |
| --------------- | ---------- |
| Section heading | (none)     |
| Body message    | `{amount}` |
| Button label    | (none)     |

The block shows the balance banner plus the customer's transaction history with filters; the filter and tag labels are editable strings too.

**Referral – order list / order status / profile** (same fields, three placements)

| Field             | Variables                    |
| ----------------- | ---------------------------- |
| Heading           | `{amount}`, `{discountCode}` |
| Body message      | `{amount}`, `{discountCode}` |
| Copy button label | (none)                       |

**Profile reward marketplace**

| Field                                                         | Variables             |
| ------------------------------------------------------------- | --------------------- |
| Section heading, Balance label, Empty state                   | (none)                |
| Reward template (order discount)                              | `{amount}`, `{value}` |
| Reward template (product discount)                            | `{amount}`, `{value}` |
| Reward template (free shipping)                               | `{amount}`            |
| Minimum-order note                                            | `{minAmount}`         |
| Redeem button, Copy code button                               | (none)                |
| Success message, Generic error message, Error (not signed in) | (none)                |

**Order status – cashback earned**

| Field                   | Variables  |
| ----------------------- | ---------- |
| Cashback earned message | `{amount}` |

**Wallet pass**

The profile block renders a "Save to Google Wallet" entry with a signed link generated per customer. Its appearance and the pass itself (issuer and program name, logo and hero image, background color, and the earned/redeemed push notification texts) are configured in **DollarBack admin → Integrations**, not on the Customization page. See [Google Wallet passes](/dollarback-store-credit/integrations/google-wallet-passes).

## Verify it works

1. Sign in to the storefront as a test customer with some credit and open the account pages.
2. Profile: balance and marketplace render, the referral code shows, the wallet entry appears (when the integration is on).
3. Open a past order that earned credit: the earned message and referral block show on the order status page.
4. Redeem a low-cost reward from the marketplace and confirm the success message and the new code.

## Common issues

* Blocks don't appear: the store is on classic customer accounts, or the blocks weren't added in the account editor. See [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing).
* The marketplace is empty: no active rewards, or the balance is below every reward's cost. See [Set up the reward marketplace](/dollarback-store-credit/spending-store-credit-and-rewards/set-up-the-reward-marketplace).
* The wallet entry is missing: the Google Wallet integration isn't configured. See [Google Wallet passes](/dollarback-store-credit/integrations/google-wallet-passes).

## Related articles

* [Checkout & thank-you widgets](/dollarback-store-credit/widgets-and-storefront/checkout-and-thank-you-widgets)
* [How customers spend their credit](/dollarback-store-credit/spending-store-credit-and-rewards/how-customers-spend-their-credit)
* [How customers share referral links](/dollarback-store-credit/referral-program/how-customers-share-referral-links)
* [Google Wallet passes](/dollarback-store-credit/integrations/google-wallet-passes)


# Translate your widgets

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

\_Translation is demonstrated throughout the video, first at 1:31.\_

Every text field in every DollarBack widget can be translated per language, so a multi-language store shows the loyalty program in each market's own words. This page covers adding a language, using AI translate, and hand-editing individual strings.

## How widget translation works

Each widget's customization page has language tabs across the top. The first tab is your base language (English); each language you add gets its own tab holding a full set of that widget's text fields. The storefront picks the version matching the language the customer is browsing in, with no extra setup per page.

Translations are per widget: translating the floating widget doesn't translate the product page message. Plan a pass over each widget you use.

## Prerequisites

* The extra language published on your store in Shopify (**Settings → Languages**). Only languages your store has appear as options.
* The widgets themselves set up; see [Widget map: what shows where](/dollarback-store-credit/widgets-and-storefront/widget-map-what-shows-where).

## Step 1. Add a language to a widget

1. Go to **DollarBack admin → Customization** and open a widget.
2. Click **Add translation** next to the language tabs and pick a language from the list (your store's published non-English languages).
3. A new tab appears for that language, pre-filled with the base-language strings, ready to translate.

## Step 2. Translate with AI

With the new language tab selected, click **Translate with AI**. DollarBack translates all of the widget's text fields into that language in one pass. A toast confirms when it's done ("Translated to French"). Variables like `{amount}` and `{discountCode}` are preserved; they keep filling in per customer regardless of language.

AI translate is a starting point, not a proofreader. Review the output: loyalty copy is brand voice, and short UI strings ("Redeem", "Copy") sometimes need a human call.

## Step 3. Hand-edit strings

Any field in a language tab can be edited directly, before or after AI translate. Common reasons:

* Fixing tone: formal vs informal address matters in many languages.
* Fitting space: a translated button label can be twice as long as the original; check it in the preview.
* Keeping brand terms untranslated: if your program is called "The Grove Club" in every market, put that back where the AI translated it.

Save the widget as usual; the translation ships with it. To drop a language from a widget, open its tab and use **Remove** for that language.

## Multi-language stores in practice

Say you sell in France with a French storefront at `/fr-fr/` backed by a EUR market. Once you've added French translations to your widgets:

* A customer browsing `/fr-fr/` sees every DollarBack surface (product message, floating widget, loyalty page) in French.
* Prices and cashback amounts show in EUR automatically: currency comes from Shopify Markets, not from translation. `{amount}` renders as a EUR value on the French storefront and USD on the default one.
* The same customer switching back to the default storefront sees English again; the translation follows the storefront language, not the customer.

Language and currency are independent systems that happen to travel together: translations handle the words, Markets handles the money.

## What is and isn't translatable

| Translatable (per widget, via the language tabs)                                   | Not translatable here                                                                                                                                                |
| ---------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| All message templates and state messages (product page, cart, checkout, thank-you) | Colors, typography, spacing, and other styling                                                                                                                       |
| Floating widget labels: tabs, earn forms, tier labels, login prompts               | Custom CSS                                                                                                                                                           |
| Loyalty page copy: hero (both states), sections, FAQ                               | Program data you typed elsewhere: cashback config titles, tier names, reward names; translate-sensitive stores should keep these language-neutral or brand-name them |
| Account and checkout block headings, buttons, empty states, errors                 | Email notifications; they have their own templates, see [Customize email templates](/dollarback-store-credit/notifications/customize-email-templates)                |
| Tooltip text                                                                       | The Google Wallet pass notification texts (set in Integrations)                                                                                                      |

## Verify it works

1. Open the translated storefront path (for example `/fr-fr/`) in a private window.
2. Check a product page, the floating widget, and the loyalty page: all strings should be in the new language, with amounts in the market's currency.
3. Switch to the default storefront and confirm the base language still shows.

## Common issues

* A widget still shows English on the translated storefront: that widget has no translation for the language, or the language isn't published in Shopify.
* One string stayed in English: it's a program-data field (config title, reward name), not a widget string; rename it in its own editor.
* Amounts show the wrong currency: that's a Markets setup question, not translation. Check the market serving that language.

## Related articles

* [Widget map: what shows where](/dollarback-store-credit/widgets-and-storefront/widget-map-what-shows-where)
* [The floating cashback widget](/dollarback-store-credit/widgets-and-storefront/the-floating-cashback-widget)
* [Set up the loyalty page](/dollarback-store-credit/widgets-and-storefront/set-up-the-loyalty-page)
* [Customize email templates](/dollarback-store-credit/notifications/customize-email-templates)


# Notifications

The app's built-in emails, configured on **DollarBack admin → Notifications**: which events email customers, what the templates say, and who the emails come from.

* [Email notifications overview](/dollarback-store-credit/notifications/email-notifications-overview)
* [Customize email templates](/dollarback-store-credit/notifications/customize-email-templates)
* [Sender identity & custom domain](/dollarback-store-credit/notifications/sender-identity-and-custom-domain)

Sending through your own ESP instead? Route events to Klaviyo or Omnisend and build the flows there; see [Integrations](/dollarback-store-credit/integrations).


# Email notifications overview

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

*This article's section starts at 0:00 in the video.*

DollarBack sends five transactional emails to your customers, one for each key moment in the credit lifecycle. This page lists every template, when it fires, its default subject line, and how to turn each one on or off.

## The five templates

Open **DollarBack admin → Notifications** to see all five under the **Email Templates** section. Each template is independent: you can run all five, or only the ones that fit your store.

| Template                     | Sent when                                                                                                                     | Default subject                                                       |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| Store Credit Credited        | A customer earns store credit from an order, a signup or birthday reward, or a bulk import with the notify option enabled     | {firstName}, You Just Earned {formattedAmount} for Shopping with Us!  |
| Store Credit Redeemed        | A customer spends store credit                                                                                                | {firstName}, You Have Redeemed Your Store Credit                      |
| Referral Reward Credited     | A referrer earns a reward because someone ordered with their code                                                             | {firstName}, You Just Earned {formattedAmount} for Referring a Friend |
| Store Credit Expiry Reminder | A customer's credit is approaching its expiry date, at the reminder thresholds you set                                        | {firstName}, Your Store Credit is About to Expire                     |
| Discount Code Earned         | A reward discount code is issued to a customer, either earned through a cashback program or claimed in the reward marketplace | {firstName}, Your Discount Code is Ready!                             |

Subjects are fully editable and accept variables; see [Customize email templates](/dollarback-store-credit/notifications/customize-email-templates) for the complete variable list.

## Enable or disable a template

1. Go to **DollarBack admin → Notifications**.
2. In the **Email Templates** section, find the template you want to change.
3. Use its toggle to enable or disable it. A disabled template never sends, even when its trigger event happens. Credit is still issued or redeemed as normal.

{% hint style="warning" %}
If you reward discount codes (from an earning program or the reward marketplace), keep **Discount Code Earned** enabled: this email is how the customer receives their code.
{% endhint %}

## Expiry reminder scheduling

The **Store Credit Expiry Reminder** template is the only one tied to a schedule rather than a single event. In the **Expiry Notification Schedule** section on the Notifications page, use **Add notification** to define one or more reminder thresholds (for example 14 days and 3 days before expiry). One reminder email goes out at each threshold. The thresholds also drive the expiry events sent to your connected integrations; see [Klaviyo integration](/dollarback-store-credit/integrations/klaviyo-integration) and [Shopify Flow: triggers and actions](/dollarback-store-credit/integrations/shopify-flow-triggers-and-actions).

## Who the emails come from

By default, emails send with your configured sender name, and replies go to your store contact email. You can change both, and on qualifying plans send from your own domain. See [Sender identity and custom domain](/dollarback-store-credit/notifications/sender-identity-and-custom-domain).

Unsubscribes are per-store: a customer who opts out of your emails is only unsubscribed from your store, and every email includes an unsubscribe link.

## Verify it works

1. Open any template with **Edit** and use **Send Test Mail** to deliver a draft with mock data to your own address.
2. For an end-to-end check, place a small test order that earns cashback and confirm the Store Credit Credited email arrives at the customer's address.

## Common issues

* A customer says they never got an email: check the template's toggle first, then see [Emails aren't arriving](/dollarback-store-credit/troubleshooting-and-faq/emails-arent-arriving).
* Expiry reminders aren't going out: confirm you have thresholds in the **Expiry Notification Schedule** and that credit actually has an expiry date set ([Credit expiry and reminders](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders)).
* Emails land in spam: sending from your own verified domain usually fixes this ([Sender identity and custom domain](/dollarback-store-credit/notifications/sender-identity-and-custom-domain)).

## Related articles

* [Customize email templates](/dollarback-store-credit/notifications/customize-email-templates)
* [Sender identity and custom domain](/dollarback-store-credit/notifications/sender-identity-and-custom-domain)
* [Credit expiry and reminders](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders)
* [Emails aren't arriving](/dollarback-store-credit/troubleshooting-and-faq/emails-arent-arriving)


# Customize email templates

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

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

Every DollarBack email can be rebranded to match your store (logo, colors, layout, copy, and subject line) in a visual drag-and-drop editor. When you're done, you'll have on-brand emails that pull in each customer's real amounts and dates through variables.

## Prerequisites

* Know which template you're editing and when it fires; see [Email notifications overview](/dollarback-store-credit/notifications/email-notifications-overview).

## Step 1: Open the template editor

1. Go to **DollarBack admin → Notifications**.
2. In the **Email Templates** section, click **Edit** on the template you want to change.
3. The editor opens with the current design loaded.

## Step 2: Edit the subject

The **Subject** field sits above the body editor. It accepts the same variables as the body, so a subject like `{firstName}, you just earned {formattedAmount}!` renders personalized for every recipient.

## Step 3: Design the body

The body is built from drag-and-drop blocks: logo, banner image, text, buttons, footer. Drag blocks in from the sidebar, click any block to edit its content and styling, and reorder or delete blocks directly on the canvas. Your design is saved as a layout and rendered to HTML at send time, so it stays editable. You never have to touch raw HTML.

Type variables directly into any text region; they're replaced with the customer's real values when the email sends.

## Variables you can use

### Universal variables (all templates, subject and body)

| Variable            | Renders as                                        |
| ------------------- | ------------------------------------------------- |
| `{firstName}`       | Customer's first name                             |
| `{lastName}`        | Customer's last name                              |
| `{amount}`          | The credit or reward amount as a plain number     |
| `{formattedAmount}` | The amount with currency formatting (e.g. $10.00) |
| `{symbol}`          | The currency symbol (e.g. $)                      |
| `{currency}`        | The currency code (e.g. USD)                      |
| `{unsubscribeUrl}`  | The customer's unsubscribe link                   |

### Template-specific variables

| Template                     | Extra variables                                                       |
| ---------------------------- | --------------------------------------------------------------------- |
| Store Credit Credited        | `{balance}`, `{formattedBalance}`, `{expiresAt}`, `{remainingDays}`   |
| Store Credit Redeemed        | `{balance}`, `{formattedBalance}`                                     |
| Referral Reward Credited     | `{refereeFirstName}`, `{refereeLastName}`, `{balance}`, `{expiresAt}` |
| Store Credit Expiry Reminder | `{expiresAt}`, `{remainingDays}`                                      |
| Discount Code Earned         | `{discountCode}`, `{rewardSummary}`                                   |

{% hint style="warning" %}
Variables only resolve in the template they belong to. Putting `{discountCode}` in the credited email, for example, won't produce a code. Check the table above before reusing content across templates.
{% endhint %}

## Step 4: Send a test

1. Click **Send Test Mail** in the editor.
2. In the **Send Test Email** dialog, enter any address in **Test Email Address** and click **Send**.
3. The current draft is delivered with mock data filled in (the customer renders as "John Doe", amounts as $10.00, and the order as TEST-ORDER-12345), so you can check layout and variable placement without triggering a real event.

## Step 5: Save

Click **Save** to publish your changes. From that moment, every email of this type uses the new design.

## Verify it works

Trigger the real email once: place a small test order that earns cashback (for the credited template) and confirm the received email matches your design with real values in place of the variables.

## Common issues

* The test email never arrives: check spam, and see [Emails aren't arriving](/dollarback-store-credit/troubleshooting-and-faq/emails-arent-arriving).
* A variable shows up as literal text like `{expiresAt}`: the credit that triggered the email may have no expiry date, or the variable isn't supported in that template.
* The email looks different in a customer's inbox than in the editor: send a test to that mail provider; some clients render backgrounds and spacing differently.

## Related articles

* [Email notifications overview](/dollarback-store-credit/notifications/email-notifications-overview)
* [Sender identity and custom domain](/dollarback-store-credit/notifications/sender-identity-and-custom-domain)
* [Reward discount codes instead of store credit](/dollarback-store-credit/earning-cashback-programs/reward-discount-codes-instead-of-store-credit)
* [Emails aren't arriving](/dollarback-store-credit/troubleshooting-and-faq/emails-arent-arriving)


# Sender identity & custom domain

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

*This article's section starts at 3:03 in the video.*

Control who your DollarBack emails appear to come from: set the sender name and reply-to address, and on qualifying plans send from your own domain so emails carry your brand and inherit your domain's reputation.

## Prerequisites

* At least one email template enabled ([Email notifications overview](/dollarback-store-credit/notifications/email-notifications-overview)).
* For a custom sending domain: access to your domain's DNS settings (at your registrar or DNS host) and a plan that includes the feature.

## Set the sender name and reply-to

1. Go to **DollarBack admin → Notifications**.
2. In the **Sender** section, set:
   * **Sender name**: the "from" name customers see in their inbox.
   * **Reply-to email**: where customer replies go. This defaults to your store contact email; change it if support mail should land elsewhere.
3. Save your changes.

These apply to all five templates.

## Connect a custom sending domain

{% hint style="info" %}
**Plan:** custom sending domains are available on qualifying plans. If the section is locked, see [Plans, usage and overage billing](/dollarback-store-credit/analytics-data-and-account/plans-usage-and-overage-billing).
{% endhint %}

Without a custom domain, emails send from DollarBack's shared sending infrastructure. Connecting your own domain (say `evermail.example.com` on `example.com`) means emails authenticate as genuinely yours, which improves deliverability and removes third-party naming from the "from" address.

### Step 1: Add the domain

1. In the **Custom Sending Domain** section, enter your **Sending domain**: the domain or subdomain you want mail to come from.
2. Set the **From address**: the mailbox part before the `@`.
3. Click **Connect domain**. DollarBack generates the DNS records your domain needs.

### Step 2: Add the DNS records

The page now lists the records to create, with **Name**, **Target**, **Priority**, and **Value** columns. There are two groups:

| Record group    | Type               | Purpose                                                                                               |
| --------------- | ------------------ | ----------------------------------------------------------------------------------------------------- |
| DKIM            | CNAME records      | Cryptographically signs your emails so inbox providers can verify they really come from your domain   |
| SPF / MAIL FROM | MX and TXT records | Authorizes DollarBack's mail servers to send on behalf of your domain and sets the bounce/return path |

In your DNS provider's dashboard (Cloudflare, GoDaddy, Namecheap, Shopify-managed domains, etc.):

1. Open the DNS management page for your domain.
2. Create each record exactly as shown: copy the **Name** and **Target/Value** fields verbatim, and set the **Priority** on the MX record where your provider asks for one.
3. Save the records.

{% hint style="warning" %}
Copy-paste the record values. A single stray character or trailing dot mismatch will keep verification failing. Some DNS providers automatically append your domain to the record name; if verification fails, check whether the name was doubled (e.g. `record.example.com.example.com`).
{% endhint %}

### Step 3: Verify

Back in DollarBack, click **Check status**. DNS changes can take from a few minutes to several hours to propagate, so re-check later if the records don't verify immediately. Once every record shows verified, your emails start sending from your domain.

To stop using the domain, click **Remove sending domain**. Emails fall back to the default sender.

## The deliverability pre-send guard

Before every send, DollarBack checks the recipient address:

* **Syntax**: malformed addresses are rejected.
* **Disposable domains**: throwaway-email domains are skipped.
* **MX check**: if the recipient's domain has no mail server, the email is not sent.

This protects your sender reputation, but it also means some "missing" emails were never sent at all, which is worth knowing before you debug templates. See [Emails aren't arriving](/dollarback-store-credit/troubleshooting-and-faq/emails-arent-arriving).

## Verify it works

Open any template and use **Send Test Mail** to your own address. Check the received email's from address and, in your mail client's "show original"/headers view, confirm DKIM and SPF pass for your domain.

## Common issues

* Verification keeps failing: re-check each record's name and value against the table, wait for DNS propagation, then **Check status** again.
* Emails still send from the default address: the domain isn't fully verified yet; all records must pass.
* A specific customer never receives emails: their address may be failing the pre-send guard; see [Emails aren't arriving](/dollarback-store-credit/troubleshooting-and-faq/emails-arent-arriving).

## Related articles

* [Email notifications overview](/dollarback-store-credit/notifications/email-notifications-overview)
* [Customize email templates](/dollarback-store-credit/notifications/customize-email-templates)
* [Emails aren't arriving](/dollarback-store-credit/troubleshooting-and-faq/emails-arent-arriving)
* [Plans, usage and overage billing](/dollarback-store-credit/analytics-data-and-account/plans-usage-and-overage-billing)


# Integrations

Everything on **DollarBack admin → Integrations**: event syncs to your marketing stack, Shopify Flow automation, cart drawers, and wallet passes, plus recipe guides for pairing DollarBack with third-party apps.

* [Klaviyo integration](/dollarback-store-credit/integrations/klaviyo-integration)
* [Omnisend integration](/dollarback-store-credit/integrations/omnisend-integration)
* [Shopify Flow: triggers & actions](/dollarback-store-credit/integrations/shopify-flow-triggers-and-actions)
* [Cart drawer integrations](/dollarback-store-credit/integrations/cart-drawer-integrations)
* [Google Wallet passes](/dollarback-store-credit/integrations/google-wallet-passes)

## Recipes

* [Subscription platforms](/dollarback-store-credit/integrations/subscription-platforms): redeem store credit against upcoming renewals.
* [Store credit for submitting review](/dollarback-store-credit/integrations/store-credit-for-submitting-review): reward reviews from Judge.me, Loox, Yotpo, Stamped.io, and seven more review apps.

For the app's own emails (templates, sender domain), see [Notifications](/dollarback-store-credit/notifications).


# Klaviyo integration

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

Connect Klaviyo to receive every DollarBack credit event as a Klaviyo metric and keep each profile's credit balance and referral code in sync, so you can build flows, segments, and campaigns around store credit.

## Prerequisites

* A Klaviyo account with admin access.
* At least one active earning program, so there are events to sync ([Set up purchase cashback](/dollarback-store-credit/earning-cashback-programs/set-up-purchase-cashback)).

## Connect Klaviyo

1. Go to **DollarBack admin → Integrations** and find the **Klaviyo** card.
2. Click **Set up** and approve the OAuth connection in the Klaviyo window that opens. Sign in to the Klaviyo account you want linked.
3. Back on the Integrations page, the card shows **Connected**. Events begin syncing immediately; no API keys to copy.

## Synced events

Each event appears in Klaviyo as a metric under the connected integration, attached to the customer's profile. Use these exact names when building flows:

| Klaviyo event                 | Fires when                                                                                            | Key payload fields                                                                                  |
| ----------------------------- | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| Store Credit Credited         | Credit is issued (order trigger, birthday, signup, bulk import with the integrations toggle on, etc.) | amount, currency, formattedAmount, reason, offerTitle, orderId, orderName, expiresAt, expiryDays    |
| Store Credit Debited          | Credit is removed (refund clawback, manual debit, or a reward-marketplace redemption cost)            | amount, currency, formattedAmount, reason, orderId, orderName, offerTitle                           |
| Store Credit Redeemed         | A customer spends credit                                                                              | amount, currency, formattedAmount, reason, orderId, orderName, offerTitle                           |
| Store Credit Expiry Threshold | Credit crosses a reminder threshold you set in the Expiry Notification Schedule                       | amount, formattedAmount, expiresAt, remainingDays, transactionId                                    |
| Store Credit Expired          | Credit expires                                                                                        | amount, formattedAmount, expiresAt, remainingDays, transactionId                                    |
| Referral Code Generated       | A referral code is created for a customer                                                             | referralCode, reason                                                                                |
| Referral Reward Credited      | A referrer earns a reward                                                                             | amount, currency, formattedAmount, expiresAt, orderId, orderName, refereeFirstName, refereeLastName |
| Discount Code Credited        | A reward discount code is issued, earned through a program or claimed in the marketplace              | discountCode, rewardSummary, offerTitle, reason, orderId, orderName, amount                         |

## Profile properties

Alongside each event, DollarBack updates these custom properties on the Klaviyo profile (matched by email or phone, with the customer ID as fallback):

| Property                 | Contains                                                    |
| ------------------------ | ----------------------------------------------------------- |
| Dollar Balance           | The customer's current store-credit balance as a number     |
| Dollar Currency Code     | The balance's currency code (e.g. USD)                      |
| Dollar Formatted Balance | The balance formatted for display (e.g. $24.50)             |
| Dollar Symbol            | The currency symbol                                         |
| Referral Code            | The customer's referral code (set when a code is generated) |

Because properties update with every event, segments built on them stay current without scheduled exports.

## Flow and campaign ideas

* **Credit reminder flow**: trigger on *Store Credit Credited*, wait 7 days, and email customers who haven't ordered since: "You still have {{ person|lookup:'Dollar Formatted Balance' }} waiting."
* **Expiry winback**: trigger on *Store Credit Expiry Threshold* and send an urgency email/SMS using the `remainingDays` and `formattedAmount` event fields. Pairs with (or replaces) DollarBack's own expiry reminder email.
* **Deliver the code your way**: trigger on *Discount Code Credited* and send the `discountCode` in your own Klaviyo design instead of the DollarBack template.
* **Balance segment**: a segment where *Dollar Balance* is greater than 0 for "has credit to spend" campaigns; include the referral code property in newsletters to promote sharing.

{% hint style="warning" %}
If you rebuild an email in Klaviyo (for example the credited notification), consider disabling the matching DollarBack template under **Notifications** so customers don't receive both.
{% endhint %}

## Verify it works

1. Trigger a credit: place a small test order or credit a customer manually.
2. In Klaviyo, open that customer's profile: the *Store Credit Credited* event should appear in the activity feed within a few minutes, and the *Dollar Balance* properties should match the widget balance.

## Common issues

* Events aren't appearing: confirm the card still shows **Connected**, then trigger a fresh event; historical events from before connection are not backfilled.
* Properties are stale: they update on events only; a profile with no credit activity since connection won't have them yet.
* Bulk-imported credit didn't create events: the import must run with its send-to-integrations toggle enabled ([Bulk import credit (CSV)](/dollarback-store-credit/analytics-data-and-account/bulk-import-credit-csv)).

## Related articles

* [Omnisend integration](/dollarback-store-credit/integrations/omnisend-integration)
* [Shopify Flow: triggers and actions](/dollarback-store-credit/integrations/shopify-flow-triggers-and-actions)
* [Email notifications overview](/dollarback-store-credit/notifications/email-notifications-overview)
* [Credit expiry and reminders](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders)


# Omnisend integration

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

Connect Omnisend to receive every DollarBack credit event and keep contact properties (balance, currency, referral code) in sync, then use them in Omnisend automations across both email and SMS.

## Prerequisites

* An Omnisend account with admin access.
* At least one active earning program, so there are events to sync ([Set up purchase cashback](/dollarback-store-credit/earning-cashback-programs/set-up-purchase-cashback)).

## Connect Omnisend

1. Go to **DollarBack admin → Integrations** and find the **Omnisend** card.
2. Click **Set up** and approve the connection in the Omnisend window that opens.
3. The card shows **Connected**, and events start syncing immediately.

## Synced events

Each event lands in Omnisend as a custom event on the contact. Use these exact names when choosing an automation trigger:

| Omnisend event                | Fires when                                                                                            | Key payload fields                                                                                  |
| ----------------------------- | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| Store Credit Credited         | Credit is issued (order trigger, birthday, signup, bulk import with the integrations toggle on, etc.) | amount, currency, formattedAmount, reason, offerTitle, orderId, orderName, expiresAt, expiryDays    |
| Store Credit Debited          | Credit is removed (refund clawback, manual debit, or a redemption cost)                               | amount, currency, formattedAmount, reason, orderId, orderName, offerTitle                           |
| Store Credit Redeemed         | A customer spends credit                                                                              | amount, currency, formattedAmount, reason, orderId, orderName, offerTitle                           |
| Store Credit Expiry Threshold | Credit crosses a reminder threshold from your Expiry Notification Schedule                            | amount, formattedAmount, expiresAt, remainingDays, transactionId                                    |
| Store Credit Expired          | Credit expires                                                                                        | amount, formattedAmount, expiresAt, remainingDays, transactionId                                    |
| Referral Code Generated       | A referral code is created for a customer                                                             | referralCode, reason                                                                                |
| Referral Reward Credited      | A referrer earns a reward                                                                             | amount, currency, formattedAmount, expiresAt, orderId, orderName, refereeFirstName, refereeLastName |
| Discount Code Credited        | A reward discount code is issued, earned or claimed in the marketplace                                | discountCode, rewardSummary, offerTitle, reason, orderId, orderName, amount                         |

## Contact properties

With each event, DollarBack updates these custom properties on the Omnisend contact (matched by email or phone, with the customer ID as fallback):

| Property                   | Contains                                                    |
| -------------------------- | ----------------------------------------------------------- |
| Dollar\_Balance            | The customer's current store-credit balance as a number     |
| Dollar\_Currency\_Code     | The balance's currency code (e.g. USD)                      |
| Dollar\_Formatted\_Balance | The balance formatted for display (e.g. $24.50)             |
| Dollar\_Symbol             | The currency symbol                                         |
| referral\_code             | The customer's referral code (set when a code is generated) |

## The SMS angle

Omnisend automations can send SMS (and push) from the same triggers, which suits credit moments that are time-sensitive:

* **Expiry SMS**: trigger on *Store Credit Expiry Threshold*: "Your store credit expires in {remainingDays} days. Don't leave {formattedAmount} behind." SMS open rates make this the strongest expiry channel.
* **Instant code delivery**: trigger on *Discount Code Credited* and text the `discountCode` for immediate redemption.
* **Credit-earned nudge**: trigger on *Store Credit Credited* with a short email/SMS split-tested against each other.
* **Balance segment**: segment contacts with *Dollar\_Balance* greater than 0 for spend-your-credit campaigns.

{% hint style="warning" %}
If you rebuild a notification in Omnisend, disable the matching DollarBack template under **Notifications** so customers don't get the message twice. Remember that SMS requires the contact's SMS consent in Omnisend.
{% endhint %}

## Verify it works

1. Trigger a credit: a small test order or a manual credit.
2. In Omnisend, open that contact: the *Store Credit Credited* event should appear on their timeline within a few minutes, with the *Dollar\_Balance* properties matching the widget.

## Common issues

* Events aren't appearing: confirm the card shows **Connected** and trigger a fresh event; events from before the connection are not backfilled.
* An automation didn't fire: check the event name matches exactly (e.g. *Store Credit Expiry Threshold*, not "Expiring").
* Bulk-imported credit didn't create events: the import must run with its send-to-integrations toggle enabled ([Bulk import credit (CSV)](/dollarback-store-credit/analytics-data-and-account/bulk-import-credit-csv)).

## Related articles

* [Klaviyo integration](/dollarback-store-credit/integrations/klaviyo-integration)
* [Shopify Flow: triggers and actions](/dollarback-store-credit/integrations/shopify-flow-triggers-and-actions)
* [Email notifications overview](/dollarback-store-credit/notifications/email-notifications-overview)
* [Credit expiry and reminders](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders)


# Shopify Flow: triggers & actions

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

*This article's section starts at 0:00 in the video.*

DollarBack plugs into Shopify Flow with four triggers (react when credit moves) and two actions (move credit from your own workflows), so you can automate tagging, messaging, and even credit itself without code.

## Prerequisites

* The Shopify Flow app installed on your store.
* The Flow integration enabled on **DollarBack admin → Integrations**. No account connection or authentication is needed; enabling it exposes the triggers and actions inside Flow.

## Triggers

Triggers start a workflow when DollarBack does something. Each carries the customer plus these payload fields you can use in conditions and later steps:

| Trigger                | Fires when                                                                                                      | Payload fields                                                                                                      |
| ---------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| Store Credit Credited  | A customer's store credit is credited                                                                           | Amount, Currency, Formatted Amount, Expires At, Symbol, eventType (order paid, order edited, …), orderId, orderName |
| Store Credit Redeemed  | A customer spends store credit                                                                                  | Amount, Currency, Formatted Amount, Symbol, eventType, orderId, orderName                                           |
| expiryThreshold        | A customer's credit is about to expire; fires at the reminder thresholds from your Expiry Notification Schedule | Amount, Currency, Formatted Amount, Expires At, Remaining Days Before Expiry, Symbol                                |
| Reward Credit Credited | A referrer earns reward credit through a referral                                                               | Amount, Currency, Formatted Amount, Expires At, Referee First Name, Referee Last Name, Symbol                       |

The order fields (`orderId`, `orderName`, `Expires At`, `eventType`) are optional and can be empty; for example, a signup reward has no order.

## Actions

Actions let any Flow workflow move credit, whatever its trigger: an order event, a customer tag change, a schedule.

| Action               | What it does                                      | Fields                                 |
| -------------------- | ------------------------------------------------- | -------------------------------------- |
| Deposit Store Credit | Adds store credit to the customer in the workflow | Amount, Currency, Expires After (days) |
| Deduct Store Credit  | Removes store credit from the customer            | Amount, Currency                       |

Both actions also ship in a **v2** variant with extra fields: **OfferTitle** (the label shown in credit logs and emails), **NotifyCustomer** (send the credited email), and **SendToIntegration** (forward the event to Klaviyo/Omnisend). Prefer the v2 actions in new workflows; the extras make the credit traceable.

{% hint style="warning" %}
Credit deposited through Flow is real store credit: it appears in the customer's balance and your credit logs immediately, and Deduct can take a balance to zero. Test new workflows on a staff account before turning them on.
{% endhint %}

## Worked recipe: tag big earners

Goal: when a customer earns more than $50 of credit in one go, tag them for a VIP segment.

1. In Shopify Flow, click **Create workflow**.
2. **Select a trigger** → choose **Store Credit Credited** (under DollarBack).
3. Add a **Condition**: `Amount` is greater than `50`.
4. On the "then" branch, add an **Action** → **Add customer tags** → enter `vip`.
5. Name the workflow and turn it on.

Now credit a test customer $51 or more (a qualifying order or a manual credit) and watch the tag appear on their customer page.

Other recipes that work well:

* **expiryThreshold → send marketing email/SMS** via your connected platform for a last-chance nudge.
* **Reward Credit Credited → add customer tags** `advocate` to build a referrers segment.
* **Order paid (Shopify trigger) + Deposit Store Credit v2** for one-off promotions DollarBack's programs don't cover, e.g. a flat $5 for orders containing a specific product.
* **Customer tag added → Deduct Store Credit** to zero out balances when you flag abuse.

## Verify it works

Open the workflow's run history in Flow after triggering it. Each run shows the trigger payload and whether every step succeeded. Cross-check against **DollarBack admin → Analytics** credit logs for deposit/deduct actions.

## Common issues

* The DollarBack triggers don't appear in Flow: enable the integration on **DollarBack admin → Integrations**, then reopen the Flow editor.
* A workflow fired but no credit moved: check the run history for the action's error; Currency must be a valid code for the customer.
* The expiry trigger never fires: you need at least one threshold in the **Expiry Notification Schedule** and credit that actually expires ([Credit expiry and reminders](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders)).

## Related articles

* [Klaviyo integration](/dollarback-store-credit/integrations/klaviyo-integration)
* [Omnisend integration](/dollarback-store-credit/integrations/omnisend-integration)
* [Credit expiry and reminders](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders)
* [Credit logs and scheduled rewards](/dollarback-store-credit/analytics-data-and-account/credit-logs-and-scheduled-rewards)


# Cart drawer integrations

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

\_This article's section starts at 5:23 in the video.\_

If your store uses a slide-out cart drawer, DollarBack can show the cashback message right inside it, so customers see what the cart will earn without opening the cart page. Five drawers are supported: Rebuy, Upcart, Monster Cart, AMP Cart, and your theme's native drawer.

## Prerequisites

* The cart cashback message set up and looking the way you want ([Product page and cart cashback messages](/dollarback-store-credit/widgets-and-storefront/product-page-and-cart-cashback-messages)). The drawer shows the same message.
* The DollarBack app embed active in your theme ([Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme)).
* For third-party drawers: the drawer app installed and active on your storefront.

## How it works

These are display integrations: they don't sync any data. When enabled, DollarBack detects the drawer on your storefront and injects the cashback message into it. The message inherits your cart message templates: text per state, goal-progress tiers, colors, and typography all come from the cart message settings in **DollarBack admin → Customization**. There is nothing separate to design.

## Enable a drawer

1. Go to **DollarBack admin → Integrations**.
2. Find the card for your drawer (**Rebuy**, **Upcart**, **Monster Cart**, **AMP Cart**, or **Native theme drawer**) and click **Configure**.
3. Turn on the enablement toggle and save. The card shows the drawer as configured.

Enable only the drawer(s) your store actually uses. If you switch cart apps later, disable the old one and enable the new one here.

| Drawer              | Use when                                                   |
| ------------------- | ---------------------------------------------------------- |
| Rebuy               | Your cart drawer is powered by Rebuy Smart Cart            |
| Upcart              | You use the UpCart drawer cart builder                     |
| Monster Cart        | You use Monster Cart upsell drawer                         |
| AMP Cart            | You use AMP's cart drawer (Slide Cart)                     |
| Native theme drawer | Your theme's built-in drawer, with no third-party cart app |

## Verify it works

1. Open your storefront and add a product to the cart so the drawer slides out.
2. The cashback message should appear inside the drawer with the correct amount for the cart.
3. Change the cart quantity. The message recalculates as the drawer updates.

## Common issues

* No message in the drawer: confirm the right drawer is enabled on the Integrations page and the app embed is on; see [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing).
* The message shows on the cart page but not the drawer: you likely enabled the wrong drawer integration for the cart app you use.
* The message doesn't update when the cart changes: heavily customized drawers can skip the events DollarBack listens for; theme developers can re-trigger rendering via the storefront API ([Storefront window API](/dollarback-store-credit/developer-tools/storefront-window-api)).
* Wrong text or colors: the drawer inherits everything from the cart message; edit it under **DollarBack admin → Customization** ([Product page and cart cashback messages](/dollarback-store-credit/widgets-and-storefront/product-page-and-cart-cashback-messages)).

## Related articles

* [Product page and cart cashback messages](/dollarback-store-credit/widgets-and-storefront/product-page-and-cart-cashback-messages)
* [Widget map: what shows where](/dollarback-store-credit/widgets-and-storefront/widget-map-what-shows-where)
* [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing)
* [Storefront window API](/dollarback-store-credit/developer-tools/storefront-window-api)


# Google Wallet passes

Give customers a loyalty card in Google Wallet that shows their live store-credit balance, name, and tier. It updates automatically every time they earn or spend, with a push notification on their phone.

## Prerequisites

* Customer account blocks active, since customers add the pass from their account profile ([Customer account blocks](/dollarback-store-credit/widgets-and-storefront/customer-account-blocks)).
* Your logo and hero image hosted at HTTPS URLs (your Shopify Files uploads work).

## Set up the pass

1. Go to **DollarBack admin → Integrations**, find the **Google Wallet** card, and click **Configure**.
2. Fill in the general fields:

| Field            | What it is                                 | Limit                          |
| ---------------- | ------------------------------------------ | ------------------------------ |
| Issuer name      | Your business name, shown on the pass      | 255 characters                 |
| Program name     | The loyalty program name, the pass's title | 60 characters                  |
| Logo URL         | Square logo shown on the pass              | HTTPS URL, at least 660×660 px |
| Hero image URL   | Wide banner across the pass                | HTTPS URL, 1032×336 px         |
| Background color | The pass's card color (defaults to green)  | (none)                         |

3. Write the notification texts. There are two notifications, one for **Earned** (credit) and one for **Redeemed** (debit) events, each with a **Header** (up to 35 characters) and **Body** (up to 300 characters). Both accept variables:

| Variable         | Renders as                          |
| ---------------- | ----------------------------------- |
| `{amount}`       | The amount just earned or redeemed  |
| `{balance}`      | The customer's new balance          |
| `{programName}`  | Your program name                   |
| `{customerName}` | The customer's name                 |
| `{tier}`         | The customer's current loyalty tier |

Example earned body: `You just earned {amount}! Your {programName} balance is now {balance}.`

{% hint style="warning" %}
Google's wallet policy does not allow links in pass messages. Any URL you paste into a notification text is stripped before the message is sent. Keep the text self-contained.
{% endhint %}

4. Save. The pass is now offered to customers.

## What the pass shows

The card displays your program and issuer name, the customer's live credit balance, their member name and tier, and a QR code carrying their customer ID, scannable at POS to look the customer up.

The pass currency follows the customer's resolved currency (their last order's presentment currency, falling back to their credit account, then your shop currency), so a customer who shops your store in EUR sees a EUR balance even if your shop currency is USD.

## How customers add it

In their account, on the profile page's wallet block, the customer taps the **Save to Google Wallet** button. The link is signed and generated per customer, and each issued pass is tracked individually. On a phone, the pass lands straight in the Google Wallet app; from a desktop browser, Google prompts them to save it to their account.

## Live updates and the notification quota

Every credit and debit updates the pass balance and pushes a notification using your Earned/Redeemed texts.

{% hint style="warning" %}
Google caps push-notifying updates at **3 per pass per 24 hours**. Beyond that, the pass keeps updating silently: the balance stays correct, but no notification appears on the device until the 24-hour window resets. If a customer reports "wallet notifications stopped working" on a busy shopping day, it's this quota, not a bug. Broadcast messages to all pass holders count against each recipient's cap too.
{% endhint %}

## Apple Wallet

Apple Wallet passes are **not available yet**; the Integrations page lists Apple Wallet as coming soon. Today, iPhone customers can still see their balance in the floating widget and account blocks; only the wallet pass itself is Google-only.

## Verify it works

1. Sign in to your storefront as a test customer, open the account profile block, and add the pass to a real device.
2. Credit the customer (a test order or manual credit): within a few minutes the pass balance updates and the Earned notification arrives, assuming the pass is under its 3-push daily quota.

## Common issues

* The add-to-wallet button doesn't appear: the wallet block isn't active in the customer account editor; see [Customer account blocks](/dollarback-store-credit/widgets-and-storefront/customer-account-blocks).
* Images don't show on the pass: the logo/hero URLs must be HTTPS and publicly reachable, at the minimum sizes above.
* Balance updates but no notification: the pass has hit Google's 3-push per 24h quota; updates continue silently.
* A link in the notification text disappeared: URLs are stripped per Google policy.

## Related articles

* [Customer account blocks](/dollarback-store-credit/widgets-and-storefront/customer-account-blocks)
* [Widget map: what shows where](/dollarback-store-credit/widgets-and-storefront/widget-map-what-shows-where)
* [How customers spend their credit](/dollarback-store-credit/spending-store-credit-and-rewards/how-customers-spend-their-credit)
* [Loyalty tiers overview](/dollarback-store-credit/loyalty-tiers/loyalty-tiers-overview)


# Subscription platforms


# Redeem Shopify Store Credit on upcoming subscription renewal

Enable Shopify Store Credit Redemption on Subscriptions with Dollarback x Recurpay

With our latest integration between **Dollarback** and **Recurpay**, customers can now **redeem their store credits on upcoming subscription renewals** — a feature **not natively supported by Shopify**.

This article will walk you through how to enable this functionality on your store in just a few steps.

{% embed url="<https://youtu.be/qz2WbQaIHLw>" %}

***

### ✅ Prerequisites

Before you begin, make sure:

1. **Shopify’s new Customer Accounts** are enabled\
   (Go to **Settings → Customer accounts** and select the new experience)
2. **Shopify’s Native Store Credit is enabled**\
   (Enable via `Shopify Settings → Customer Accounts → Store credit toggle`)
3. The **Dollarback** app is installed and configured
   * Make sure you’re rewarding store credit via purchases, flows, or manual top-ups
4. You are using **Recurpay** for subscriptions\
   (This integration works **only** with Recurpay)

***

### 🔌 Integration Steps

#### Step 1: Add Store Credit to a Customer

You can either configure your flows to auto-reward credits or manually assign credit for testing:

1. Go to the **Shopify dashboard**
2. Select a customer
3. Add any store credit amount (e.g., `$20`) to their account

***

#### Step 2: Activate the Dollarback Integration in Recurpay

1. Open your **Recurpay dashboard**
2. Navigate to **Settings → Apps → Loyalty**
3. Find **Dollarback** and click **“Activate”**
4. You may be asked to approve additional permissions — go ahead and accept

Once activated, Recurpay will now be aware of store credit balances at the time of renewal.

***

#### Step 3: Test the Redemption Flow

1. Log in as the customer (or use the storefront)
2. Go to the **Manage Subscriptions** page
3. You’ll now see an option to **redeem store credit** against the next renewal
4. Enter the credit amount you'd like to apply (e.g., `$20`)
5. Confirm the redemption — the order total will be updated accordingly

🟢 Example:\
Original Subscription Price: `$23.41`\
Redeemed Store Credit: `$20`\
New Total: `$3.41`

***

### 🧠 Why This Matters

* **Increase LTV:** Customers are more likely to stay subscribed if they feel rewarded
* **Frictionless UX:** Redeem credits *natively*, no need for third-party checkout or API keys
* **All Shopify-native:** Built on Shopify’s own store credit system for compatibility across checkout, POS, and subscriptions

***

### 🔧 Troubleshooting

If you're unable to see store credits in the subscription view:

* Double-check that **Dollarback is awarding credits** and the customer has a non-zero store credit balance.
* Ensure **Recurpay Loyalty integration is activated**
* Verify the customer is using a **new customer account** (not classic)
* Try **logging in again** to refresh session tokens

Still stuck? Reach out to us via chat or email — we’ll help you sort it out quickly!

***

### 🎉 You're All Set!

That’s it — you’ve now successfully enabled store credit redemptions on subscription renewals using **Dollarback + Recurpay**.

Feel free to explore creative use cases like:

* Rewarding credits on each renewal
* Gifting credits to reduce churn
* Offering credits for pausing subscriptions

Need help or want a walkthrough? Just reach out — we're happy to guide you through.


# Store credit for submitting review


# Reward Customers with Store Credit for Reviews using Judge.me

Reward Customers with Store Credit for Reviews using Judge.me + Dollarback (via Shopify Flow)

{% embed url="<https://youtu.be/TigTSp4au8o>" %}

## **Overview**

**Dollarback** allows you to automatically reward customers with store credit after they leave verified reviews—without relying on discount codes. This integration with **Judge.me** and **Shopify Flow** helps merchants boost review rates and increase repeat purchases through seamless automation.

***

## **Use cases and benefits**

Using Dollarback and Judge.me together enables powerful automations to drive customer engagement:

* Automatically reward verified reviews with store credit.
* Eliminate the need for discount codes.
* Drive more repeat purchases and customer loyalty.
* Combine with Klaviyo or Shopify Email to notify users of credit earned.
* Use conditional logic to give different rewards based on rating, product, or more.

***

## **Setup instructions**

### 🛠️ Prerequisites

Before you begin, ensure the following:

* You are on the **Judge.me Awesome Plan** (required for integrations and Shopify Flow).
* The **Shopify Flow** app is installed on your store.
* The **Dollarback** app is installed and configured on your Shopify store.

***

### 🔗 Step 1: Enable Judge.me + Shopify Flow Integration

1. In **Judge.me**, go to **Settings > Integrations**.
2. Search for **Flow** in the list of integrations.
3. Toggle the integration to **Enabled**.
4. Click **Save**.

This allows Judge.me to send trigger events to Shopify Flow.

***

### 🔁 Step 2: Create the Shopify Flow Automation

1. Open the **Shopify Flow** app.
2. Click **Create Workflow**.
3. Set up the following logic:

**Trigger**:

* **When a new review is submitted**\
  *(Important: Only reviews submitted via Judge.me’s email request flow will trigger this event.)*

**Action**:

* **Deposit store credit**\
  → Select **Dollarback** and choose the **Deposit store credit** action.

4. Customize the action:
   * **Amount to deposit** (e.g., $10)
   * **Credit expiry** (optional)
   * **Message to customer** (optional; via email/SMS if configured)
5. Click **Save** and **Enable** the workflow.

***

## **How the integration works**

Once the integration is live:

1. A customer receives a review request email from Judge.me after a purchase.
2. The customer clicks the email and submits a review.
3. Judge.me triggers a **Shopify Flow event**.
4. **Dollarback** deposits store credit into the customer’s account.
5. The customer can immediately use the credit at checkout—no need for coupon codes.

***

## ⚠️ Limitations

This automation **only works for verified reviews** submitted through **Judge.me’s email request flow**.\
It **does not** trigger for:

* Imported reviews
* Manually submitted reviews on your store
* Manual review request emails

You can choose to offer:

* **Non-expiring** store credit (default)
* **Expiring** credit (e.g., expires in 30 days)

***

## ❓ Common Issues & Solutions

| Issue                                | Solution                                                                    |
| ------------------------------------ | --------------------------------------------------------------------------- |
| Review doesn’t trigger store credit  | Ensure it was submitted via Judge.me's email flow.                          |
| Store credit not deposited           | Confirm Dollarback is installed, configured, and the Flow action is active. |
| Customer didn’t receive notification | Integrate with Klaviyo or Shopify Email to send custom messages.            |

***

## 🙋 Need Help?

Have questions or want help with setup?\
Email us at <support@dollarlabs.io> and we’ll assist you with configuration or custom workflows.


# Reward Customers with Store Credit for Reviews using Vitals

How to Reward Product Reviews with Shopify Store Credit Using Dollarback and Vitals Integration

**Want to turn customer reviews into a powerful retention tool?**\
With the integration between Dollarback and Vitals, you can now **reward customers with store credit** every time they leave a product review—encouraging more UGC (user-generated content) without offering one-time discounts.

In this guide, we’ll walk you through how to set up this integration using **Shopify Flow**, and how it benefits both your brand and your customers.

{% embed url="<https://youtu.be/7_SxY77NYRM>" %}

***

### 🧩 What You Need

* Dollarback: Cashback & Store Credit installed and configured
* Vitals: 40+ Shopify Apps in One, specifically the **Product Reviews** module enabled
* Shopify Flow app installed on your store

***

### 💡 Why Use Store Credit Instead of Discounts?

* 💰 **Store credit is account-based** – it ties to the customer, not just a one-time code
* 🔁 **Encourages repeat purchases** – customers return to use their credit
* 🎯 **Personalized rewards** – you control how much, when, and for what actions
* 🚫 **No discount code abuse** – unlike promo codes, credit can't be shared

***

### ⚙️ Step-by-Step Setup Instructions

#### Step 1: Set Up Vitals Product Reviews

1. Open the **Vitals** app on your Shopify admin.
2. Enable the **Product Reviews** module.
3. Under “Automate review requests”, set the email to be sent **7 days after purchase** (or your desired delay).
4. Turn off any built-in discount incentives—we’ll reward customers using store credit instead via Dollarback.

***

#### Step 2: Install & Configure Dollarback

1. Install Dollarback from the Shopify App Store.
2. Configure your default store credit settings and notifications inside the app.
3. Set up how you want store credit to be displayed and redeemed at checkout (a one-click button will appear for the customer at checkout, on POS, and even subscriptions).

***

#### Step 3: Create a Shopify Flow to Reward Reviews

1. Install Shopify Flow if you haven’t already.
2. Open Flow and create a **New Workflow**.
3. Set the **trigger** as `Product Review Created` or `Order Review Created` (Vitals triggers this when a review is left).
4. Add an **Action**: “Run Custom App Action” → Select Dollarback → `Deposit Store Credit`.

**Recommended Setup:**

* **Trigger**: Product Review Created (you can also use Order Review if applicable)
* **Condition**: (Optional) Filter by product, tag, or review rating
* **Action**: Deposit store credit (e.g. ₹100 or $10) into the customer's wallet
  * **Expiry**: Set the credit to expire (e.g., after 30 days) if you want to encourage faster redemption

🎉 Done! Once a review is submitted, the customer will automatically receive store credit and get notified.

***

### 🧪 Sample Use Case

> A customer purchases a product. 7 days later, Vitals sends them an email asking for a review.\
> They submit a product review.\
> Shopify Flow triggers → Dollarback credits $10 into their account.\
> They are notified instantly and can use it at checkout via a single-click redeem button.

***

### 🔧 Common Questions

#### Can I use this with other review apps?

Yes! Dollarback works with any review app that supports Shopify Flow triggers (e.g., Judge.me, Loox, etc.). Reach out to our support team for help configuring a different setup.

#### How is this different from discounts?

Store credit is stored directly on the customer object in Shopify. It can’t be misused like coupon codes, and builds loyalty by staying attached to the customer's account.

***

### 📎 Useful Links

* 👉 [Install Dollarback App](https://apps.shopify.com/dollar-discounts)
* 👉 [Install Vitals App](https://apps.shopify.com/vitals)

***

### 💬 Need Help?

Got stuck? Want help using a different trigger or adding conditions?\
Reach out to us via live chat inside the Dollarback app or email us directly. We’ll help you get set up in no time.


# Reward Customers with Store credit for Reivews using Trustoo.io

How to Reward Product Reviews with Shopify Store Credit Using Dollarback and Trustoo.io Integration

If you’d like to reward your customers with cashback (store credit) when they leave a review using Trustoo.io, this guide will help you set up that integration using **Shopify Flow** and **Dollarback**.

Due to a limitation in how Trustoo handles customer data in its triggers, we’ll use a simple workaround to ensure store credit is deposited correctly.

{% embed url="<https://youtu.be/qi6mfL1MrIo>" %}

***

### 🛠 Prerequisites

Before you begin, make sure:

* You have the **Dollarback app** installed and set up on your Shopify store: [Dollarback on Shopify App Store](https://apps.shopify.com/dollarback)
* You have the **Trustoo Reviews app** installed and configured: [Trustoo on Shopify App Store](https://apps.shopify.com/sealapps-product-review)
* Both apps are functioning as expected on your store.

***

### 🧩 Why a Workaround Is Needed

Trustoo’s "New Review" trigger in Shopify Flow **does not include customer information**. This means you **can’t directly** deposit store credit using that trigger alone.

Instead, we’ll retrieve the customer’s information using the **Order ID** provided in the review trigger.

***

### 🔄 Step-by-Step Setup Using Shopify Flow

1. **Create a New Flow**
   * Go to your **Shopify Admin → Flow**.
   * Click **"Create Workflow"** and choose the **Trustoo: New Review** trigger.
2. **Add a Condition to Check for Order ID**
   * Add a **condition block**:
     * **If**: `{{order_id}}`
     * **Is Not Empty**
   * This ensures we’re only proceeding if the order ID is present.
3. **Get Order Details**
   * Add a **"Get Order Data"** action (Shopify Admin API):
     * Use the order ID from the review trigger.
     * This step fetches all data related to that order, including the customer.
4. **Repeat for Each Order (Loop)**
   * Since the result is an **array**, add a **"Repeat For Each Item"** step.
   * This ensures the next action works with a single customer object.
5. **Deposit Store Credit with Dollarback**
   * Inside the repeat loop, add the **Dollarback: Deposit Store Credit** action.
   * Configure the following:
     * **Amount**: e.g., ₹25 or $5 (your choice)
     * **Expiry**: Set number of days before the credit expires. Use `0` if you want it to never expire.
6. **Save and Test the Workflow**
   * Click **Apply Changes**.
   * Run a test to make sure the flow works correctly.

{% hint style="info" %}
The amount credited by the Dollarback flow action is always in the store's primary currency.
{% endhint %}

***

### 🧪 Troubleshooting

* If the flow doesn't trigger or deposit credit, double-check if:
  * The review submitted has a valid **Order ID**.
  * Trustoo and Dollarback are properly installed and updated.
  * The API permissions for Flow are correctly set up to access orders.

***

### 💬 Need Help?

If you run into issues or have suggestions, reach out to our support team via chat. We’re always happy to help and take your feedback seriously.

Have an integration or use-case you'd like us to cover? Let us know — we’re always adding more guides based on merchant feedback.


# Reward Loox Product Reviews with Store Credit Using Dollarback

How to Reward Product Reviews with Shopify Store Credit Using Dollarback and Loox Integration

Want to reward customers for leaving visual reviews on your store using **Loox**? With **Dollarback**, you can automatically issue store credit whenever a customer submits a review — even though Loox doesn’t directly provide customer data in its Shopify Flow trigger.

This guide walks you through the workaround using Shopify Flow to set this up.

{% embed url="<https://youtu.be/2WNip3kYjbE>" %}

***

#### ✅ Prerequisites

Before getting started, make sure:

* You have installed and set up the Loox – Visual Product Reviews app.
* You have installed and configured Dollarback: Cashback & Loyalty.
* You are on a Loox plan that supports **Shopify Flow** triggers (usually paid).

***

#### 🔄 Step-by-Step Setup in Shopify Flow

**1. Enable Shopify Flow Integration in Loox**

* In your Loox admin, go to **Settings → Integrations**.
* Enable the **Shopify Flow** integration.
* Make sure **“New Review”** trigger is activated.

**2. Create a New Flow**

* Go to **Shopify Admin → Flow → Create Workflow**.
* Select **Loox: New Review** as the trigger.

**3. Add a Condition to Check for Order ID**

* Add a **Condition block**:
  * If `{{order_id}}` is **not empty**, continue the flow.
* This ensures only reviews tied to actual orders proceed to the next step.

**4. Get Order Data Using Order ID**

* Add an **Action**: **Get Order Data**.
* Set to:
  * **Sort by**: ID ascending
  * **Limit**: 1
  * **Query**: Advanced

    ```
    id={{order_id}}
    ```

**5. Loop Through the Returned Data**

* Add a **Repeat For Each Item** action.
  * Object: use the result from **Get Order Data**.
  * Choose **Repeat for each item**.

**6. Deposit Store Credit Using Dollarback**

* Inside the loop, add **Deposit Store Credit** (Dollarback action).
* Set:
  * **Amount**: e.g., ₹25 or $5
  * **Expiry**: `0` (if you don’t want it to expire) or set a number of days.

**7. Save and Test**

* Click **Apply Changes**.
* Submit a test review using Loox tied to an order to verify the setup works.

***

#### ⚠️ Why This Workaround?

Loox’s "New Review" trigger **does not pass customer data or order details directly**, which makes direct crediting impossible. This workaround fetches the order using the order ID passed in the trigger and then finds the associated customer.

***

#### 💬 Need Help?

If you run into any issues, feel free to reach out to our support team via the Dollarback app. We’re happy to assist and welcome any feedback to improve the experience.


# Reward Air Product Reviews with Store Credit Using Dollarback

How to Reward Product Reviews with Shopify Store Credit Using Dollarback and Air Product Review Integration

Want to reward customers for leaving product reviews using the **Air Product Reviews App & UGC**? With **Dollarback**, you can automatically deposit **Shopify-native store credit** into a customer’s wallet instead of using discount codes.

This guide shows you how to set it up using **Shopify Flow** — no app-based coupon dependencies required.

{% embed url="<https://youtu.be/QhF-h0IWFSk>" %}

***

#### ✅ Prerequisites

Make sure the following apps are installed and configured:

* Air Product Reviews App & UGC
* Dollarback: Cashback & Loyalty

***

#### 🔄 Step-by-Step Setup Using Shopify Flow

**1. Enable Shopify Flow in Air Product Reviews**

* Go to **Air Reviews App → Settings → Integrations**.
* Enable the **Shopify Flow Integration**.
* This allows the app to trigger Shopify Flow workflows when a new review is submitted.

**2. Create a New Shopify Flow**

* Open **Shopify Admin → Flow** and click **Create Workflow**.
* **Trigger**: Select **Air Product Reviews – New Review**.

**3. Deposit Store Credit via Dollarback**

* Add an **Action**: **Dollarback – Deposit Store Credit**.
* Set:
  * **Amount**: e.g., ₹100, $10, etc.
  * **Expiry**: Set number of days or `0` for no expiry.

Once the review is submitted, the customer will automatically receive an email notification about the credit deposited into their Shopify wallet.

***

#### 📣 Why Store Credit?

Using store credit over discount codes gives you more control and flexibility. It encourages repeat purchases and stays within Shopify’s ecosystem — no third-party coupon systems or headaches.

***

#### 💬 Need Help?

Have questions or face issues while setting this up? Our support team is always ready to help you out. Reach out via the Dollarback app chat.


# Reward REVIEWS.io reviews Using Dollarback

How to Reward Product Reviews with Shopify Store Credit Using Dollarback and REVIEWS.io Integration

You can easily reward your customers with store credit every time they leave a positive review using REVIEWS.io. This integration uses **Shopify Flow** and requires both **Dollarback: Cashback & Loyalty** and **REVIEWS.io Product Reviews App** to be installed on your Shopify store.

{% embed url="<https://youtu.be/2PvHYiayabc>" %}

***

#### **Step-by-Step Instructions**

**✅ Prerequisites:**

* Dollarback: Cashback & Loyalty app is installed and set up.
* REVIEWS.io Product Reviews App is installed and collecting reviews.
* Shopify Flow app is installed (free from the Shopify App Store).
* You have the “Shopify Flow Integration” enabled in Dollarback.

***

#### 🔧 Setup Instructions

**Step 1: Enable Shopify Flow in Dollarback**

1. Open the **Dollarback** app.
2. Go to **Integrations**.
3. Toggle on **Shopify Flow Integration**.

**Step 2: Create a Flow in Shopify Flow**

1. Open the **Shopify Flow** app.
2. Click **Create Workflow**.
3. Choose the trigger:\
   **“New Positive Review”** from REVIEWS.io *(You may also choose any other trigger that suits your logic)*.

**Step 3: Add a Condition (Optional)**

* You can add a filter to only reward reviews above a certain rating threshold (e.g., 4 or 5 stars).

**Step 4: Fetch Customer Data**

1. Add an action to **Get customer by email**.
2. Use `id: {{reviewerEmail}}` from the trigger as a dynamic variable.

**Step 5: Loop Through Customer Records**

* Use a loop if there are multiple records (usually only one).
* For each customer, add the **“Deposit Store Credit”** action from Dollarback.
  * Set the amount (e.g., ₹50).
  * Set an expiry time (e.g., 30 days or custom).

**Step 6: Save and Enable the Flow**

* Name your flow (e.g., **Reward Positive Review**).
* Click **Turn on Workflow**.

***

#### 🎉 That’s it!

Every time a customer leaves a positive review via REVIEWS.io, they’ll automatically get store credit through Dollarback. If you need help setting this up or want to customize the logic, feel free to reach out to the Dollarback support team.


# Reward Stamped.io reviews Using Dollarback

How to Reward Product Reviews with Shopify Store Credit Using Dollarback and Stamped.io Integration

**Overview:**\
If you’re using [Stamped Product Reviews & UGC](https://apps.shopify.com/product-reviews-addon) but not their loyalty system — and want to offer store credit cashback through [Dollarback: Cashback & Loyalty](https://apps.shopify.com/dollarback) — this guide walks you through setting up a custom flow using Shopify Flow.

{% embed url="<https://youtu.be/n7U1kPKotNM>" %}

***

**🔧 Prerequisites:**

1. **Stamped app installed** and configured (including review requests and workflows).
2. **Dollarback app installed** and setup complete.
3. **Shopify Flow app installed.**
4. Dollarback's **Flow integration is enabled.**
   * Go to the Dollarback dashboard → **Integrations** → Ensure **Shopify Flow** is toggled ON.

***

**🛠 Step-by-Step: Create a Flow to Trigger Cashback on Review Submission**

1. **Open Shopify Flow** and create a new workflow.
2. **Trigger:**
   * Set the trigger to **“New Review”** from **Stamped**.
3. **Get Customer Data (Workaround):**
   * Unfortunately, the “New Review” trigger does **not** include the full Shopify customer object.
   * So, insert an action: **Get Customer Data**.
   * In the query, set:
     * Sort: **ID Ascending**
     * Max results: **1**
     * Advanced Query Filter:

       ```json
       id: {{email}}
       ```
4. **Loop Through the Customer Array:**
   * Add a **For Each** loop to iterate over the array returned from the previous step.
5. **Deposit Store Credit:**
   * Inside the loop, insert the **“Deposit Store Credit”** action.
   * Customize:
     * **Amount**
     * **Expiration time** (e.g., valid for 30 days)

***

**🎯 Additional Notes:**

* You can customize the credit amount and expiry per your marketing goals.
* This setup works even if you **only** use the review component from Stamped, not their loyalty suite.
* Dollarback handles store credit natively via the **Shopify Wallet**, giving you more control and transparency.

***

**💬 Need Help?**

Feel free to reach out via the support chat on [Dollarback](https://apps.shopify.com/dollarback). Whether it's reviews, loyalty, membership, or discount workflows — we’ve got you covered.


# Reward Yotpo reviews Using Dollarback

How to Reward Product Reviews with Shopify Store Credit Using Dollarback and Yotpo Reviews Integration

**Introduction**\
This guide walks you through how to integrate [Yotpo: Product Reviews App](https://apps.shopify.com/yotpo-social-reviews) with [Dollarback: Cashback & Loyalty](https://apps.shopify.com/dollarback) using Shopify Flow. After this setup, your store can automatically reward customers with store credit whenever they leave a product review.

{% embed url="<https://youtu.be/Am99rl8SzN4>" %}

***

#### 🛠️ Prerequisites

* Yotpo: Product Reviews App installed and fully configured
* Dollarback: Cashback & Loyalty App installed
* Shopify Flow installed
* Reviewer email must be collected as part of the review
* Dollarback’s **Shopify Flow integration enabled**

***

#### 🔁 Step-by-Step Setup

**1. Enable Shopify Flow Integration in Dollarback**

* Open the Dollarback app
* Go to **Integrations** → **Shopify Flow**
* Ensure it's **enabled**

***

**2. Create a New Flow in Shopify Flow**

* Go to your Shopify Admin → **Flow**
* Create a new workflow
* Set the **trigger**: `Yotpo - New Review Submitted`

> ⚠️ **Note**: Yotpo does *not* pass customer object directly. We'll fetch customer info manually using the reviewer’s email.

***

**3. Get Customer from Email**

* Add a **Get Customer Data** step
* Use the following settings:
  * Query:

    ```graphql
    id: {{reviewerEmail}}
    ```
  * Max results: `1`
  * Sort by: `ID (ascending)`

***

**4. Flatten and Loop Over Result**

* Add a **For Each** loop over the customer array
* Inside the loop, use **Dollarback: Deposit Store Credit**
  * Customer ID: from the loop variable
  * Amount: ₹100
  * Expiry: 30 days

***

#### 🎉 That’s It!

Now, every time a customer leaves a review via Yotpo, they’ll automatically receive ₹100 in store credit via Dollarback.

***

#### ❓ Need Help?

Reach out via the chat support inside the Dollarback app. We’re happy to assist if you run into setup issues or flow errors.


# Reward TrustShop reviews Using Dollarback

How to Reward Product Reviews with Shopify Store Credit Using Dollarback and TrustShop Reviews Integration

If you're using **Dollarback: Cashback & Loyalty** alongside **TrustShop: Product Reviews**, you can seamlessly reward customers with store credit when they leave a review—automatically. This guide will walk you through integrating both apps using **Shopify Flow**.

{% embed url="<https://www.youtube.com/watch?v=Yd_-9JJJ8mI>" %}

***

**🛠️ Prerequisites**

Before setting up the flow:

* Ensure **both apps are installed**:
  * [Dollarback](https://apps.shopify.com/dollarback)
  * [TrustShop](https://apps.shopify.com/trustshop)
* Enable Shopify Flow Integration in both apps.

***

**🔌 Step 1: Enable Integrations**

**In Dollarback**

1. Go to the **Dollarback app** in your Shopify admin.
2. Navigate to `Settings > Integrations`.
3. Enable **Shopify Flow Integration**.

**In TrustShop**

1. Go to the **TrustShop** app.
2. Navigate to `Settings > Integrations`.
3. Under “Shopify Flow,” click **Integrate Now**.
   * Most stores will find this pre-enabled.

***

**🔁 Step 2: Create a Shopify Flow Automation**

1. Open **Shopify Flow** and create a new flow.
2. Set **trigger**:
   * **TrustShop: New Review Received**
3. Add **Action**:
   * Choose **Get Customer Data**
   * Sort by ID: Ascending
   * Limit results: 1
   * In “Query,” choose **Advanced** and type:

     ```
     id: {{ email }}
     ```
   * (This uses the email sent by TrustShop to identify the customer.)
4. Add a **For Loop**:
   * Input: Output of “Get Customer Data”
   * For each item:
     * Add **Action**: **Deposit Store Credit**
     * Configure:
       * Amount to credit (e.g., ₹50)
       * Expiry (e.g., 30 days from credit)

***

{% hint style="warning" %}
**⚠️ Note:**

TrustShop doesn’t send full customer objects, the workaround using email-based filtering (as shown above) ensures compatibility.
{% endhint %}

***

**✅ That's It!**

Your store is now set up to **automatically issue store credit** whenever a customer leaves a review through TrustShop.

If you face any issues or have questions, reach out to our support team through the Dollarback app dashboard.


# Reward EasyReviews with Store credit Using Dollarback

How to Reward Product Reviews with Shopify Store Credit Using Dollarback and EasyReviews Integration

Reward your customers for leaving product reviews with store credit using the integration between **Dollarback: Cashback & Loyalty** and **EasyReviews ‑ Product Reviews**. This guide will walk you through creating an automated Shopify Flow that deposits store credit when a customer submits a review.

{% embed url="<https://youtu.be/gF89FitiZGA>" %}

***

#### 🔧 **Pre-requisites:**

Before starting:

* Install and configure both apps:
  * [Dollarback: Cashback & Loyalty](https://apps.shopify.com/dollarback)
  * [EasyReviews ‑ Product Reviews](https://apps.shopify.com/easyreviews)
* Shopify Flow must be installed and active on your store.

***

#### 🛠️ **Step-by-Step Integration Guide:**

**Step 1: Enable Shopify Flow Integration in Dollarback**

1. Open the **Dollarback** app.
2. Go to **Integrations**.
3. Under **Shopify Flow**, click **Enable**.

***

**Step 2: Setup Flow in Shopify Flow Using EasyReviews**

1. Open **Shopify Flow**.
2. Create a new flow and choose the **trigger**:
   * **“Product review received”** (this is from EasyReviews).
3. Add the **“Get customer data”** action:
   * Since the trigger doesn’t provide full customer/order data, use the email address to fetch it.
   * Use the advanced query:

     ```
     id: {{customerEmail}}
     ```
   * Sort by `id` in ascending order.
4. Add a **"For Each"** loop:
   * Loop over the returned customer data (e.g., `item in customerData`).
5. Add the **"Deposit store credit"** action from **Dollarback** inside the loop:
   * Set the **amount** (e.g., 100 store credits).
   * Choose the **expiration** duration (e.g., 30 days).

***

#### ✅ **Optional Enhancements:**

* Add filters such as:
  * Only reward reviews with a rating above 4 stars.
  * Only reward VIP customers.
  * Cap the number of credits per month.

***

#### 🧠 **Need Help?**

For custom workflows or advanced logic, reach out to the Dollarback team through the in-app support chat.

***

#### 🔗 **Related Links**

* [Dollarback App on Shopify](https://apps.shopify.com/dollarback)
* [EasyReviews App on Shopify](https://apps.shopify.com/easyreviews)


# Reward Junip Reviews with Store credit Using Dollarback

How to Reward Product Reviews with Shopify Store Credit Using Dollarback and Junip Integration

This guide explains how to integrate the **Junip – Product Reviews App** with **Dollarback: Cashback & Loyalty** to automatically reward customers with store credit when they leave a product review on your Shopify store.

{% embed url="<https://youtu.be/_B0SeTP07ZA>" %}

***

**Steps to Set Up the Integration**

**Step 1: Install Both Apps**

Make sure both of these apps are installed and set up on your Shopify store:

* [Dollarback: Cashback & Loyalty](https://apps.shopify.com/dollarback)
* [Junip – Product Reviews App](https://apps.shopify.com/junip)

**Step 2: Enable Shopify Flow in Junip**

1. Open the **Junip** app from your Shopify Admin.
2. Click into the **Junip Admin** panel.
3. Navigate to the **Flows** section.
4. Look for **“Send messages through your preferred third party app”**.
5. Enable the **Shopify Flow integration** and ensure it shows as *Connected* to your store.

**Step 3: Enable Shopify Flow Integration in Dollarback**

1. Go to the **Dollarback** app dashboard.
2. Head to **Settings > Integrations**.
3. Find the **Shopify Flow integration** and ensure it is *Enabled*.
   * ⚠️ This may be disabled by default, so make sure to toggle it on to allow event handling through Flow.

**Step 4: Create the Flow in Shopify Flow**

1. Open the **Shopify Flow** app.
2. Create a new Flow with the following logic:
   * **Trigger**: *Customer leaves a review (via Junip)*
   * **Action**: *Issue store credit using Dollarback*
3. Set:
   * Amount: ₹100 (or any amount of your choice)
   * Expiry: 30 days (optional, configurable)

**Step 5: Test the Integration**

Submit a test review through Junip and verify that store credit is deposited into the customer’s account via Dollarback.

***

**Need Help?**\
If you run into any issues or need support setting up the integration, don’t hesitate to reach out to the **Dollarback** team via in-app chat or support email.


# Analytics, Data & Account

Metrics, the activity ledger, exports, bulk import, and billing.

* [Understand your analytics](/dollarback-store-credit/analytics-data-and-account/understand-your-analytics)
* [Activity: credit logs & scheduled rewards](/dollarback-store-credit/analytics-data-and-account/credit-logs-and-scheduled-rewards)
* [Referral analytics](/dollarback-store-credit/analytics-data-and-account/referral-analytics)
* [Export balances & reports](/dollarback-store-credit/analytics-data-and-account/export-balances-and-reports)
* [Bulk import credit (CSV)](/dollarback-store-credit/analytics-data-and-account/bulk-import-credit-csv)
* [B2B store credit](/dollarback-store-credit/analytics-data-and-account/b2b-store-credit)
* [Admin blocks on the customer & order pages](/dollarback-store-credit/analytics-data-and-account/admin-blocks-customer-and-order-pages)
* [Plans, usage & overage billing](/dollarback-store-credit/analytics-data-and-account/plans-usage-and-overage-billing)

Building on the API instead? See [Developer Tools](/dollarback-store-credit/developer-tools).


# Understand your analytics

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

This page explains every number on the Analytics page: what each card and chart measures, the exact definitions behind the stats, and why some figures can legitimately disagree with each other.

Open **DollarBack admin → Analytics**. The page has four tabs: **Overview**, **Campaigns**, **Referrals**, and **Activity**. This article covers the page-level controls plus the **Overview** and **Campaigns** tabs. The Referrals tab is covered in [Referral analytics](/dollarback-store-credit/analytics-data-and-account/referral-analytics) and the Activity tab in [Activity: credit logs & scheduled rewards](/dollarback-store-credit/analytics-data-and-account/credit-logs-and-scheduled-rewards).

## Page controls

* **Date range picker**: presets for **Today**, **Yesterday**, **Last 7 days**, **Last 30 days**, **Last 90 days**, **Last 365 Days**, and **Custom**. The default is the last 30 days, and a range can span up to a year. Every card and chart respects it.
* **Currency switcher**: scopes all figures to one currency. Multi-currency stores should check each currency separately; figures are never mixed across currencies.
* **Freshness note**: the header shows "Latest activity processed" with how recently data landed. New orders and credits flow into analytics within a few minutes; if a test order isn't showing yet, check this note before investigating anything else.

{% hint style="info" %}
If you see a banner reading "Analytics is getting an upgrade", the historical backfill for the new analytics is still running on your store. Numbers may look empty or incomplete until it finishes; nothing is lost.
{% endhint %}

## Overview: the headline cards

Each card shows the value for the selected range, a small trend sparkline, and a percentage badge comparing against the previous period of the same length.

| Card                        | What it measures                                                                                                                                                                                    |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Cashback issued**         | Store credit issued from cashback rules in this period. **Excludes bulk imports.**                                                                                                                  |
| **Credit redeemed**         | Store credit customers spent on orders in this period.                                                                                                                                              |
| **Return per $1 redeemed**  | Order revenue on orders where credit was spent, per $1 of credit. The headline "is this program paying for itself" number: $8 means every dollar of redeemed credit sat inside $8 of order revenue. |
| **Effective discount rate** | Credit redeemed as a share of total order revenue. Lower is better; it's what your cashback program costs you expressed like a discount.                                                            |

## Overview: the adoption row

| Card                        | What it measures                                                                                                                                                       |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Orders earning cashback** | Share of orders that earned store credit. Counted against the day the order was placed, so it may update as delayed rewards finalize.                                  |
| **Orders paid with credit** | Share of orders where a customer spent store credit.                                                                                                                   |
| **AOV with credit**         | Average order value when credit is spent, with the all-orders average shown underneath for comparison. Credit-spending customers typically order more.                 |
| **Redemption rate**         | Credit redeemed this period as a share of all credit added this period, including imports. Can exceed 100% when customers spend credit they earned in earlier periods. |

## Overview: Issued vs redeemed

A daily chart with three series: **Issued**, **Redeemed**, and **Recovered**. A widening gap between issued and redeemed means credit is being earned faster than it's spent; that credit isn't wasted, but it is accumulating as liability (see the next section).

## Overview: Outstanding liability

This section answers "how much credit is out there?"

* **Outstanding store credit**: the estimated total of unspent, unexpired credit across all customers. This is a nightly snapshot (the card shows "Estimated · as of" a date), not a range-filtered figure.
* **Expiring in 30 / 60 / 90 days**: how much of that outstanding credit expires in each window. A large 30-day number is a re-engagement opportunity; see [Credit expiry & reminders](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders).
* **Scheduled credits (next 8 weeks)**: committed cashback waiting on a delay (holding periods, birthdays) before it is issued, grouped by week. See [Activity: credit logs & scheduled rewards](/dollarback-store-credit/analytics-data-and-account/credit-logs-and-scheduled-rewards) for the row-level queue.
* If any scheduled credits failed to issue, a banner appears here with a **Review in Activity** button.

## Overview: Cashback recovered

When orders are edited, refunded, or cancelled, DollarBack automatically claws back the cashback they earned. This section shows what that automation saved you: the total recovered, a badge expressing it as a share of issued cashback (low single digits is healthy), and a breakdown by cause: **Order edits**, **Refunds**, and **Cancellations**.

**Pending recovery** shows customers whose credit was already spent when the clawback hit, leaving a balance DollarBack still needs to recover. It's recovered automatically from each customer's next cashback. This figure is a current total, not limited to the selected dates.

## Overview: Customer behavior

* **Repeat earners**: share of earning customers who earned cashback on more than one order in the period.
* **Earners who redeem**: share of earning customers who also spent store credit in the period.
* **Median days to first redemption**: the typical gap between a customer's first credit and their first spend, for customers who did both.
* A **Customers** table lists your top customers by amount **Earned** and **Spent**, linked to their Shopify admin profiles. On very large stores the stats are based on the 50,000 most active customers.

## The Campaigns tab

Campaigns is the per-program view: every cashback config and discount-code program, what it costs, and what it brings in.

| Card                       | What it measures                                                                                                                                                                                            |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Campaign cost**          | Total credit and discount-code value across all campaigns in this period.                                                                                                                                   |
| **Attributed order value** | Order revenue attributed to store-credit campaigns in this period. Orders touched by multiple campaigns count once, and attribution follows the order's date, so it may update as delayed rewards finalize. |
| **Code conversion**        | Discount codes used as a share of codes issued.                                                                                                                                                             |
| **Discount value given**   | Total discount amount applied by used codes in this period.                                                                                                                                                 |

Two charts follow: **Cost per campaign** (your top 10 campaigns by cost) and **Credit issued by campaign over time** (daily issuance for the top 5 campaigns, with the rest grouped as Other).

The campaign table lists every program with **Type** (Store credit or Discount code), **Cost**, **Attributed order value**, **Revenue per $1**, and the code columns (**Codes issued**, **Codes used**, **Conversion**). Click a campaign name to jump to the [Activity log](/dollarback-store-credit/analytics-data-and-account/credit-logs-and-scheduled-rewards) filtered to that campaign's transactions.

## Why the numbers can differ

* **Bulk imports**: [imported credit](/dollarback-store-credit/analytics-data-and-account/bulk-import-credit-csv) is real liability, but it wasn't generated by any campaign and has no order behind it. So it appears in the Activity log, in Outstanding store credit, and in the **Redemption rate** denominator, but it is excluded from **Cashback issued** and from all campaign figures.
* **Revenue is net of refunds**: order revenue in these analytics deducts refunded amounts. If you compare against a gross-sales report in Shopify, expect the analytics figure to be a little lower.
* **Delayed rewards**: holding periods mean an order can earn its credit days after it was placed. Order-cohorted stats (Orders earning cashback, Attributed order value) backfill onto the order's date as rewards finalize.

## Common issues

* A test order isn't showing: check the "Latest activity processed" note in the header and give it a few minutes.
* Everything shows zero: check the currency switcher; you may be viewing a currency with no data in the selected range.
* Numbers look incomplete after an app update: the "Analytics is getting an upgrade" backfill hasn't finished yet.
* Cashback issued looks lower than the credit you know you've added: bulk imports are excluded from that card (see above).
* Credit was issued but the customer says they never got it: see [A customer didn't receive cashback](/dollarback-store-credit/troubleshooting-and-faq/customer-didnt-receive-cashback).

## Related articles

* [Activity: credit logs & scheduled rewards](/dollarback-store-credit/analytics-data-and-account/credit-logs-and-scheduled-rewards)
* [Referral analytics](/dollarback-store-credit/analytics-data-and-account/referral-analytics)
* [Export balances & reports](/dollarback-store-credit/analytics-data-and-account/export-balances-and-reports)
* [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated)


# Activity: credit logs & scheduled rewards

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

*This article's section starts partway into a longer walkthrough video.*

The **Activity** tab is your audit trail: every credit and debit, every clawback, every discount code your programs have issued, every referral, and every reward waiting to be paid out, all in one ledger.

Open **DollarBack admin → Analytics → Activity**. The [date range and currency pickers](/dollarback-store-credit/analytics-data-and-account/understand-your-analytics) apply here too, with one exception: the **Scheduled** view is an all-time queue, because pending rewards have credit dates in the future.

## The activity types

Filter the ledger with the type tabs: **Credits earned**, **Credit spent**, **Scheduled**, **Discount codes**, **Referrals**, and **Clawbacks**. Each type shows the columns that matter for it:

| Type               | Columns                                                               |
| ------------------ | --------------------------------------------------------------------- |
| **Credits earned** | Customer, Order, Campaign, Cashback, Type, Order total, Date, Expires |
| **Credit spent**   | Customer, Order, Campaign, Spent, Order total, Date                   |
| **Scheduled**      | Customer, Order, Amount, Status, Credit date                          |
| **Discount codes** | Customer, Order, Campaign, Code, Reward, Event, Date                  |
| **Referrals**      | Date, Referrer, Reward, Referee, Order, Order total, Type, Campaign   |
| **Clawbacks**      | Customer, Order, Campaign, Amount, Reason, Date                       |

Customers and orders are linked to Shopify admin throughout, and clicking any row opens an **Activity detail** panel with the full record.

## Working the ledger

* **Search**: by customer, order ID, or code (the field reads "Search by customer, order ID, code...").
* **Sort**: **Newest first**, **Oldest first**, **Amount: high to low**, **Amount: low to high**.
* **Campaign filter**: scope any view to a single campaign. The Campaigns and Referrals tabs deep-link here already filtered, so clicking a campaign or referrer elsewhere lands you on its transactions.

This is where you verify the engine's math: find the order, compare the amount against what you expected, and check the Campaign column to see which program won.

## Credits earned and Credit spent

**Credits earned** lists every credit issued: cashback from orders, signup and birthday rewards, manual credits, and bulk imports, with the expiry date where one was set. **Credit spent** lists every user-initiated debit: credit spent at checkout and reward-marketplace redemptions. Between the two, a customer's full history is reconstructable.

## Clawbacks

Clawbacks are automatic recoveries, each with a **Reason**: **Order edited**, **Order refunded**, **Order cancelled**, or **Referral order edited**. The Overview tab's [Cashback recovered section](/dollarback-store-credit/analytics-data-and-account/understand-your-analytics) totals these up; this view has the row-level detail.

## Scheduled

The **Scheduled** view lists credits that exist but haven't been paid out yet. Entries are created by:

* **Holding periods**: credit earned on an order but held until the holding period elapses.
* **Birthday rewards**: queued when a customer submits their birthday, and paid out on the day.

Filter by status with the **Status** menu: **All statuses**, **Pending**, **Processing**, **Sent**, **Credited**, **Completed**, **Denied**, or **Failed**. A **Pending** row is normal: it's a holding period or a birthday that hasn't arrived, and the **Credit date** column shows when it's due. A **Failed** row means the payout didn't complete; check the customer still exists and contact support if it doesn't self-resolve.

## Discount codes

If any of your programs pay out discount codes (either a cashback config set to reward a code instead of credit, or the reward marketplace), the **Discount codes** view tracks them. The **Event** column is badged:

* **Earned**: the code was issued by a cashback config.
* **Redeemed**: the code was minted from the reward marketplace (credit was debited for it).
* **Used**: the code was applied at checkout on an order.

One code typically produces two rows over its life: an Earned or Redeemed row when it's issued, and a Used row when it's spent. Aggregate code stats (issuance, conversion, discount value given) live on the [Campaigns tab](/dollarback-store-credit/analytics-data-and-account/understand-your-analytics).

## Referrals

Every referred order gets a row: referrer, referee, the reward paid, and the campaign that matched. Reversed commissions (from refunded or edited referred orders) are badged **Reversal**. Aggregates live on the [Referrals tab](/dollarback-store-credit/analytics-data-and-account/referral-analytics).

## Export balances

The **Export balances** button above the ledger emails you a CSV of every customer's current balance; see [Export balances & reports](/dollarback-store-credit/analytics-data-and-account/export-balances-and-reports).

## Common issues

* A transaction from moments ago isn't listed: analytics data lands within a few minutes; check the "Latest activity processed" note in the header.
* A customer's credit shows under Scheduled but not in their balance: that's a holding period doing its job; see [When credit is issued](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued).
* An issued code was never used and the customer says it doesn't work: see [A reward discount code isn't working](/dollarback-store-credit/troubleshooting-and-faq/reward-discount-code-isnt-working).
* A customer expected credit but there's no row at all: see [A customer didn't receive cashback](/dollarback-store-credit/troubleshooting-and-faq/customer-didnt-receive-cashback).

## Related articles

* [Understand your analytics](/dollarback-store-credit/analytics-data-and-account/understand-your-analytics)
* [When credit is issued](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued)
* [Reward discount codes instead of store credit](/dollarback-store-credit/earning-cashback-programs/reward-discount-codes-instead-of-store-credit)
* [Refunds, cancellations & order edits](/dollarback-store-credit/spending-store-credit-and-rewards/refunds-cancellations-and-order-edits)


# Referral analytics

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

*This article's section starts partway into a longer walkthrough video.*

The **Referrals** tab shows what your referral program is earning you: revenue from referred orders, who your best referrers are, and what you're paying out in commissions.

Open **DollarBack admin → Analytics** and switch to the **Referrals** tab. The [date range and currency pickers](/dollarback-store-credit/analytics-data-and-account/understand-your-analytics) at the top of the page apply here too.

## The cards

Each card shows a percentage badge comparing against the previous period of the same length.

| Card                       | Definition                                                                                                          |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| **Referred revenue**       | Order revenue from orders that used a referral in the range, with the average per referred order shown underneath.  |
| **Referred orders**        | Orders placed through a referral, with the average per day underneath.                                              |
| **Active referrers**       | Distinct referrers who drove at least one order in the range, with the average orders per referrer underneath.      |
| **Referral payout**        | Commissions paid to referrers in the range.                                                                         |
| **Cost per referred $1**   | Referrer commissions paid per $1 of referred revenue. Lower is better; this is what each referred dollar costs you. |
| **Share of store revenue** | Referred revenue as a share of total store revenue in the range.                                                    |

## The charts

* **Referred revenue**: referred-order revenue by day.
* **Revenue by referral program**: your top 10 referral programs by attributed order revenue, useful when you [run multiple referral configs](/dollarback-store-credit/referral-program/run-multiple-referral-configs).

## Top referrers

The **Top referrers** table ranks referrers by the range's results: **Orders**, **Revenue**, and **Commission** per referrer. Click a referrer to jump to the [Activity log](/dollarback-store-credit/analytics-data-and-account/credit-logs-and-scheduled-rewards) filtered to their referrals.

## The referral log

The row-level log of every referred order lives in the **Activity** tab, under its **Referrals** filter: date, referrer, reward, referee, order, order total, and the campaign that matched, with each customer and order linked to Shopify admin. Referral clawbacks (from refunded or edited referred orders) appear there with a **Reversal** badge. See [Activity: credit logs & scheduled rewards](/dollarback-store-credit/analytics-data-and-account/credit-logs-and-scheduled-rewards).

## Scoping

* **Date range**: defaults to the last 30 days; widen it before concluding your program is quiet.
* **Currency**: figures are scoped to one currency at a time, like the rest of analytics. A referrer can earn commission in a different currency than the referee paid in (rewards convert to the referrer's currency), so check each currency your store sells in.
* **Freshness**: a referral that just completed can take a few minutes to appear; check the "Latest activity processed" note in the header.

## Common issues

* A referral you just tested isn't showing: give it a few minutes, and check the date range and currency.
* An order you expected to be attributed isn't in the log: the referral code wasn't on the order; see [A referral wasn't tracked](/dollarback-store-credit/troubleshooting-and-faq/referral-wasnt-tracked).
* Commission amounts look "wrong" across currencies: rewards convert to the referrer's own currency; see [How referral rewards are calculated & tracked](/dollarback-store-credit/referral-program/how-referral-rewards-are-calculated-and-tracked).

## Related articles

* [How referral rewards are calculated & tracked](/dollarback-store-credit/referral-program/how-referral-rewards-are-calculated-and-tracked)
* [Run multiple referral configs](/dollarback-store-credit/referral-program/run-multiple-referral-configs)
* [Understand your analytics](/dollarback-store-credit/analytics-data-and-account/understand-your-analytics)
* [Referral conditions & limits](/dollarback-store-credit/referral-program/referral-conditions-and-limits)


# Export balances & reports

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

*This article's section starts partway into a longer walkthrough video.*

When you're done, you'll have a CSV of every customer's store-credit balance in your inbox. It's the report you need for accounting, migration audits, or a pre-uninstall snapshot.

## Send the export

1. Open **DollarBack admin → Analytics** and switch to the **Activity** tab.
2. Click **Export balances** above the ledger. The **Export store credit balances** dialog opens.
3. Enter the destination in the **Email address** field; it can be any address, not just the store owner's.
4. Click **Send report**. A confirmation appears: "We'll send the report once it's ready."
5. The export is generated in the background and emailed as a CSV attachment. Large customer bases take longer; the email arrives when generation finishes, not instantly.

## What the export contains

The report is a full customer balance export: every customer with store credit, with their current balance and currency. It reflects live balances at the moment of generation: pending (held) credit that hasn't been released yet is not spendable balance.

## When to use it

* **Reconciliation**: your total outstanding credit is a liability; accountants will ask for this file. For a quick on-screen figure, the Overview tab's [Outstanding liability section](/dollarback-store-credit/analytics-data-and-account/understand-your-analytics) shows the estimated total and what's expiring soon.
* **Migration audits**: after a [bulk import](/dollarback-store-credit/analytics-data-and-account/bulk-import-credit-csv) (for example when [migrating from another loyalty app](/dollarback-store-credit/getting-started/migrating-from-another-loyalty-app)), export and spot-check that balances landed as expected.
* **Before uninstalling**: take a snapshot of balances first; see [What happens when I uninstall?](/dollarback-store-credit/troubleshooting-and-faq/what-happens-when-i-uninstall).
* **Sharing**: the export goes to any email address, so you can send it straight to a bookkeeper or agency without giving them admin access.

## Verify it works

Send a report to your own address and open the attachment. You should recognize your test customers and their balances. If the email doesn't arrive within a reasonable time, check spam, then confirm the address was typed correctly and send again.

## Common issues

* The email never arrived: check spam and the address spelling; then see [Emails aren't arriving](/dollarback-store-credit/troubleshooting-and-faq/emails-arent-arriving).
* A balance looks lower than expected: held (pending) credit isn't spendable balance; check the customer's rows in [Activity: credit logs & scheduled rewards](/dollarback-store-credit/analytics-data-and-account/credit-logs-and-scheduled-rewards).

## Related articles

* [Understand your analytics](/dollarback-store-credit/analytics-data-and-account/understand-your-analytics)
* [Bulk import credit (CSV)](/dollarback-store-credit/analytics-data-and-account/bulk-import-credit-csv)
* [Migrating from another loyalty app](/dollarback-store-credit/getting-started/migrating-from-another-loyalty-app)
* [What happens when I uninstall?](/dollarback-store-credit/troubleshooting-and-faq/what-happens-when-i-uninstall)


# Bulk import credit (CSV)

{% hint style="info" %}
**Plan:** bulk import is a plan-gated feature; check your plan's feature list. It is also blocked entirely on development stores.
{% endhint %}

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

*This article's section starts at 0:00 in the video.*

When you're done, you'll have credited (or debited) store credit for a whole list of customers from one CSV file. It's the tool for migrations, compensation batches, and B2B credit. This article is the full contract: the exact file format, how jobs run, and how errors are handled.

## Prerequisites

* A plan that includes bulk import (see [Plans, usage & overage billing](/dollarback-store-credit/analytics-data-and-account/plans-usage-and-overage-billing)).
* A live store; imports are blocked on development stores.
* Your customers already exist in Shopify; the import matches rows to existing customers, it doesn't create them.

## The CSV format

| Header              | Required                  | Notes                                                                                                                            |
| ------------------- | ------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `Amount`            | Yes                       | Positive number. Quoted fields and thousand separators are handled: `"8,260.90"` parses fine.                                    |
| `Currency`          | Yes                       | The currency code for the row's amount.                                                                                          |
| `Email`             | One of Email / CustomerId | Matches the Shopify customer by email.                                                                                           |
| `CustomerId`        | One of Email / CustomerId | Matches by Shopify customer ID. **When both are present, CustomerId wins**: a wrong ID fails the row even if the email is right. |
| `CompanyLocationId` | B2B mode only             | Required on every row when the job runs in B2B mode; the credit attaches to the company location instead of a customer.          |

Additional constraints:

* **File size:** 5 MB maximum. Split larger files into multiple jobs.
* **Amounts are always positive.** Whether the job credits or debits is set on the job, not per row.
* **Duplicates are not deduped.** Two rows for the same customer credit that customer twice. Clean your file before importing.

## Run an import

1. Open **DollarBack admin → Bulk import**.
2. In the **Upload CSV File** section, click **Choose CSV File** and select your file.
3. Set **Action Type**: **Credit** or **Debit**.
4. For credits, set **Expiry Days**: how many days until the imported credit expires. `0` (the default) means never expires. The field is disabled for debits; expiry applies to credits only.
5. Choose your toggles:
   * **Notify Customers**, "Send notification email to customers": each credited customer gets the store-credit-credited email.
   * **Send to Integrations**, "Send event integrations": emits the credited/debited events to Klaviyo, Omnisend, and Shopify Flow, exactly as an organic credit would.
   * **B2B Mode**, "Apply store credit to a company location. CSV must include a CompanyLocationId column." See [B2B store credit](/dollarback-store-credit/analytics-data-and-account/b2b-store-credit).
6. Click **Import CSV**.

{% hint style="warning" %}
Think before enabling **Notify Customers** on a large migration import: every row sends an email. For silent migrations, leave it off.
{% endhint %}

## How jobs run

A job moves through: **pending → processing → completed / failed / stopped**.

* **Rows commit individually**, in small batches. There is no all-or-nothing transaction: a job that fails halfway has still applied everything it processed.
* **Stop Import** halts the job but **keeps all rows already processed**. Don't re-run the same file after a stop; the processed customers would be credited again.
* **There is no automatic per-row retry.** A failed row stays failed until you fix it and import a corrected file containing only those rows.
* **Unknown customers don't kill the job.** A row whose Email/CustomerId matches no customer is logged as "Customer not found" and processing continues with the next row.

## Read the job log

Each job in the history keeps a downloadable log with one entry per row:

| Log column     | Contents                                                   |
| -------------- | ---------------------------------------------------------- |
| Customer ID    | The row's resolved (or attempted) customer ID.             |
| Customer Email | The row's email.                                           |
| Action Type    | Credit or debit.                                           |
| Amount         | The row's amount.                                          |
| Currency       | The row's currency.                                        |
| Status         | Whether the row succeeded or failed.                       |
| Message        | The per-row reason on failure (e.g. "Customer not found"). |
| Timestamp      | When the row was processed.                                |

## Verify it works

Run a tiny test file first: two or three rows including yourself. After the job completes, check the customers' balances, then confirm the rows also appear in **Analytics → Activity**, under the **Credits earned** view. Remember that imports count toward outstanding liability but are excluded from the Overview's **Cashback issued** card and all campaign figures; see [Understand your analytics](/dollarback-store-credit/analytics-data-and-account/understand-your-analytics).

## Common issues

* Rows failed with "Customer not found", the upload was rejected, or a job stopped early: see [My bulk import failed](/dollarback-store-credit/troubleshooting-and-faq/bulk-import-failed) for the full diagnosis checklist.
* A customer was credited twice: the file contained two rows for them, or the same file was imported twice; duplicates are not deduped.
* The page says bulk import isn't available: plan gate or development store; see the hint at the top.

## Related articles

* [My bulk import failed](/dollarback-store-credit/troubleshooting-and-faq/bulk-import-failed)
* [B2B store credit](/dollarback-store-credit/analytics-data-and-account/b2b-store-credit)
* [Migrating from another loyalty app](/dollarback-store-credit/getting-started/migrating-from-another-loyalty-app)
* [Export balances & reports](/dollarback-store-credit/analytics-data-and-account/export-balances-and-reports)


# B2B store credit

{% hint style="info" %}
**Plan:** B2B store credit is a plan-gated feature; check your plan's feature list.
{% endhint %}

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

\_This article's section starts at 3:13 in the video.\_

When you're done, your B2B buyers' orders will earn store credit for their **company location** instead of the individual buyer, so the credit belongs to the business, whoever places the order.

## Prerequisites

* A plan that includes B2B store credit (see [Plans, usage & overage billing](/dollarback-store-credit/analytics-data-and-account/plans-usage-and-overage-billing)).
* Shopify B2B set up: companies with company locations, and buyers ordering on those locations.

## How B2B credit works

With the setting enabled, an order placed by a B2B buyer on a company location earns credit on the **location**, not on the buyer's personal customer record. Any buyer purchasing on that location can then spend the shared balance at checkout, the same way individual customers spend theirs. Everything else about earning (configs, calculation, triggers, holding periods) behaves as described in [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated).

## Enable it

1. Open **DollarBack admin → Settings** and find the **Advanced** section.
2. Turn on **Give store credit to B2B buyers on company locations**. The help text reads: "B2B buyers placing orders on a company location will earn store credit."
3. Save.

## Credit locations in bulk

The [bulk import](/dollarback-store-credit/analytics-data-and-account/bulk-import-credit-csv) has a dedicated B2B mode for crediting or debiting company locations directly:

1. Open **DollarBack admin → Bulk import**.
2. Turn on **B2B Mode**: "Apply store credit to a company location. CSV must include a CompanyLocationId column."
3. Your CSV needs the standard columns plus `CompanyLocationId` on **every** row: `CustomerId,Email,CompanyLocationId,Amount,Currency`. Rows missing a `CompanyLocationId` fail in B2B mode.
4. Run the import as usual. You'll find each location's ID on the company's location in Shopify admin.

## Where location balances live

B2B credit is Shopify-native store credit held on the company location. Look it up in **Shopify admin → Customers → Companies**, on the location itself, not on any individual buyer's customer profile. The location's transactions also appear in **DollarBack admin → Analytics → Activity** like any other credit movement.

## Verify it works

Place a test B2B order as a buyer on a company location (a draft order on the location works too). After the credit trigger fires, check the location in Shopify admin. The balance should be on the location, and a matching row should appear in the transaction logs. Then start a new checkout on that location and confirm store credit is offered as a payment option.

## Common issues

* A B2B buyer earned personal credit instead of location credit: the Advanced setting was off when the order was placed; enabling it isn't retroactive.
* B2B bulk import rows fail: missing or wrong `CompanyLocationId`; see [My bulk import failed](/dollarback-store-credit/troubleshooting-and-faq/bulk-import-failed).
* Credit doesn't show at checkout for a buyer: confirm the checkout is on the company location that holds the balance; see [Store credit isn't available at checkout](/dollarback-store-credit/troubleshooting-and-faq/store-credit-isnt-available-at-checkout).

## Related articles

* [Bulk import credit (CSV)](/dollarback-store-credit/analytics-data-and-account/bulk-import-credit-csv)
* [Exclude customers from earning](/dollarback-store-credit/earning-cashback-programs/exclude-customers-from-earning)
* [Advanced settings](/dollarback-store-credit/settings/advanced-settings)
* [Plans, usage & overage billing](/dollarback-store-credit/analytics-data-and-account/plans-usage-and-overage-billing)


# Admin blocks on the customer & order pages

DollarBack puts two cards directly inside Shopify admin, so you can answer "what did DollarBack do on this order?" and "why did this customer earn less than expected?" without opening the app. Both are installed with the app; there is nothing to enable.

## "DollarBack summary" on the order page

Open **Shopify admin → Orders** and pick any order. The **DollarBack summary** card sits among the app blocks on the order detail page and shows every way DollarBack touched that order:

| Row                | What it shows                                                                                                                                                                                               |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Cashback**       | Store credit issued for this order, with a **Pending** badge while the credit is still scheduled and **Credited** once it lands. A badge like "2× tier" appears when a loyalty tier multiplier was applied. |
| **Redeemed**       | Store credit the customer spent paying for this order.                                                                                                                                                      |
| **No cashback**    | Shown instead of Cashback when the order earned nothing, with the reason recorded at calculation time.                                                                                                      |
| **Discount codes** | Earn-side reward codes issued from this order, with "(revoked)" appended if a code was later revoked.                                                                                                       |
| **Referral**       | The referrer this order was attributed to, and the commission they earned.                                                                                                                                  |
| **Edited**         | How many times cashback or the referral reward was recalculated after order edits.                                                                                                                          |

Orders DollarBack never touched show "No DollarBack activity on this order."

The card is a read-only view of the data DollarBack writes to the order itself; see [Metafields & data storage reference](/dollarback-store-credit/developer-tools/metafields-and-data-storage) if you want to consume the same data in Flow or your own tooling.

## "Store credit owed" on the customer page

Open **Shopify admin → Customers** and pick a customer. The **Store credit owed** card tracks store credit the customer owes you, per currency. As the card's own help text puts it: "Store credit this customer owes you. It's taken back from their future cashback. Set it to 0 to clear it."

### Where owed credit comes from

When a refund, cancellation, or order edit claws back credit the customer has **already spent**, their Shopify balance can't go below zero. DollarBack records the shortfall as owed instead, and automatically deducts it from the customer's **next cashback** before crediting: they earn less until the debt is paid down. See [Refunds, cancellations & order edits](/dollarback-store-credit/spending-store-credit-and-rewards/refunds-cancellations-and-order-edits) for when clawbacks happen.

### Clear or reduce an owed balance

1. Edit the amount next to the currency. Set it to **0** to write the debt off entirely, or lower it to forgive part of it.
2. Click **Save**. The customer's next cashback is no longer reduced (or reduced less).

### Add an owed balance manually

Use the bottom row to record a debt yourself, for example after settling something off-platform:

1. Pick a **Currency**. The picker only lists currencies that don't already have an owed amount; to change an existing one, edit its row instead.
2. Enter an **Amount** above 0 and click **Add**.

Every manual change is written into the underlying record as an "admin\_override" entry with a timestamp, so support can always reconstruct who changed what.

## Verify it works

1. Set a test customer's owed amount to 0 and save; the card should confirm with "Saved."
2. Trigger a qualifying order for that customer and check **DollarBack admin → Analytics → Activity**: the full cashback amount should be credited, with no recovery deduction.

## Common issues

* **Card doesn't load** ("Couldn't load. Refresh to try again."): a transient admin error; refresh the page.
* **"Didn't save. Try again."**: the write to Shopify failed; retry, and check the staff account has permission to edit customers.
* **"Enter an amount above 0."**: the Add row needs a positive amount; to zero out an existing debt, edit its row and save instead.
* **Customer keeps earning less than the program promises**: check this card first; an owed balance silently reduces every payout until cleared.

## Related articles

* [Refunds, cancellations & order edits](/dollarback-store-credit/spending-store-credit-and-rewards/refunds-cancellations-and-order-edits)
* [Metafields & data storage reference](/dollarback-store-credit/developer-tools/metafields-and-data-storage)
* [Activity: credit logs & scheduled rewards](/dollarback-store-credit/analytics-data-and-account/credit-logs-and-scheduled-rewards)
* [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated)


# Plans, usage & overage billing

This page explains how DollarBack billing works: what counts against your plan's order limit, when the counter resets, what happens when you go over, and how upgrades, trials, and legacy plans behave.

Open **DollarBack admin → Plans** to see the plan cards, your current usage, and your billing period.

## What plans differ by

Each plan card lists its price, its included order volume, and its feature checklist. The gated features you'll see marked included or excluded per plan:

| Feature          | What it unlocks                                                                                                          |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------ |
| Orders per month | The included order volume (see counting rules below).                                                                    |
| Bulk import      | [Bulk import credit (CSV)](/dollarback-store-credit/analytics-data-and-account/bulk-import-credit-csv).                  |
| Integrations     | Klaviyo, Omnisend, Flow, and the other connections.                                                                      |
| Cashback tiers   | [Loyalty tiers](/dollarback-store-credit/loyalty-tiers/loyalty-tiers-overview).                                          |
| Order editing    | [Order-edit tracking](/dollarback-store-credit/spending-store-credit-and-rewards/refunds-cancellations-and-order-edits). |
| B2B store credit | [B2B store credit](/dollarback-store-credit/analytics-data-and-account/b2b-store-credit).                                |

Prices are shown per month or per year depending on the plan's billing interval.

## How orders are counted

* **Every order created on your store counts once**, whether or not it earned cashback, and regardless of your cashback trigger setting. Usage measures store volume, not program activity.
* Each order is **deduplicated by its order ID**, so an order can never count twice.
* Usage accrues against your **billing period**; the Plans page shows the current period's date range and a usage meter (`current / limit`). The counter resets when a new billing period starts.
* Plans with unlimited volume show **"Unlimited orders."**

## Overage

When your orders exceed the plan's included limit, additional orders bill as **usage charges** at a per-order rate shown on the plan card (for example "$X per order"). Where the plan defines one, overage is **capped** at a maximum per month ("capped at $X/mo"). You'll never pay more than the cap in overage for that period, and orders keep processing normally. Cashback never stops being earned because you crossed the limit; you're billed for the extra volume instead.

If you're paying overage regularly, compare it against the next plan up. A higher included limit is usually cheaper than sustained overage.

## Trials

Plans that include a free trial show an "X-day free trial" badge, and the button reads **Start free trial** instead of a plain subscribe. Charges are handled by Shopify billing and begin when the trial ends; cancelling or downgrading before then means you're not charged for that plan.

## Upgrades & downgrades

Choosing a plan opens Shopify's billing confirmation. Approve it there and the new plan takes effect. Feature gates apply immediately with the plan switch: downgrading below a feature (say, bulk import or tiers) removes access to it, though nothing already earned by customers is taken away. Balances, tiers already assigned, and issued codes remain.

## Custom pricing

High-volume stores, agencies, and platforms can get a custom plan. Use the **Chat with sales** button on the Plans page, which opens a chat pre-filled with a custom-plan request.

## Legacy plans

If you subscribed before the current plan lineup:

* **Yearly legacy plans keep working**. The page shows: "You're already subscribed to a yearly plan, so it'll keep working as-is — no action needed for now."
* **Discontinued plans** show a critical banner ("Your plan is no longer offered…") with the discontinuation date. Pick a current plan before that date to avoid interruption.

## Verify it works

After subscribing, the Plans page should show your plan as active with the usage meter against the new limit, and previously gated pages (for example **Bulk import**) should load without an upgrade banner.

## Common issues

* A feature page shows "Upgrade required": your plan doesn't include that feature; check its row on the plan cards.
* Usage looks higher than your cashback activity: every created order counts, not just orders that earned cashback.
* You expected the counter to reset: it resets with your billing period, shown as a date range on the Plans page, not on calendar months.

## Related articles

* [Choose a plan & start your trial](/dollarback-store-credit/getting-started/choose-a-plan-and-start-your-trial)
* [Bulk import credit (CSV)](/dollarback-store-credit/analytics-data-and-account/bulk-import-credit-csv)
* [B2B store credit](/dollarback-store-credit/analytics-data-and-account/b2b-store-credit)
* [Loyalty tiers overview](/dollarback-store-credit/loyalty-tiers/loyalty-tiers-overview)


# Settings

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

\_The settings page tour starts at 2:34 in the video.\_

Everything on **DollarBack admin → Settings**, the page that "Configure\[s] how cashback is calculated and distributed". These settings are **global**: they apply to all cashback programs at once, and (where noted) to referral rewards too. Per-program options (values, dates, targeting, frequency, sales channels) live in the program editor instead; see [Set up purchase cashback](/dollarback-store-credit/earning-cashback-programs/set-up-purchase-cashback).

The page is organized as collapsible cards. Changes only take effect when you click **Save Settings** (a save bar also appears as soon as anything is dirty), and they apply to orders processed *after* the change; issued credits are never rewritten.

## The cards, in page order

| Card                        | What it controls                                                      | Article                                                                              |
| --------------------------- | --------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| **Cashback Calculation**    | The order amount cashback is based on, caps, shipping, rounding       | [Cashback Calculation](/dollarback-store-credit/settings/cashback-calculation)       |
| **Trigger & Timing**        | Which order event awards cashback and the holding period              | [Trigger & Timing](/dollarback-store-credit/settings/trigger-and-timing)             |
| **Store Credit Visibility** | When store credit appears as a payment option at checkout             | [Store Credit Visibility](/dollarback-store-credit/settings/store-credit-visibility) |
| **Special Order Types**     | Cashback behavior when orders involve store credit or gift cards      | [Special Order Types](/dollarback-store-credit/settings/special-order-types)         |
| **Advanced**                | Order edit tracking, B2B credit, tag exclusions (plan-gated features) | [Advanced](/dollarback-store-credit/settings/advanced-settings)                      |

## Developer API

Not a setting but a shortcut: the **Developer API** card ("Generate an API key to read configs and submit birthday / social rewards programmatically") opens the Merchant API page via **Manage**. Full reference: [Merchant API: keys & endpoints](/dollarback-store-credit/developer-tools/merchant-api-keys-and-endpoints).

## The "More" sidebar

The **More** card links to three pages that live outside Settings:

* **Notifications**: "Email alerts for credits, expiry, and birthdays"; see [Email notifications overview](/dollarback-store-credit/notifications/email-notifications-overview).
* **Plans & Billing**: your subscription; see [Plans, usage & overage billing](/dollarback-store-credit/analytics-data-and-account/plans-usage-and-overage-billing).
* **Suggest a feature**: the public roadmap, where you can tell us what to build next.

## Settings that live elsewhere

Merchants often look on this page for these; they're configured on other pages:

* **Credit expiry and reminder emails**: see [Credit expiry & reminders](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders).
* **Email templates and sender identity**: **DollarBack admin → Notifications**.
* **Per-program options**: reward value and kind, dates, frequency limits, product targeting, "give cashback when discount codes are used", and sales-channel restrictions are set per program in **DollarBack admin → Cashback**.
* **Reward marketplace stacking rules**: the Combinations card on the **Reward marketplace** page; see [Discount combination rules](/dollarback-store-credit/spending-store-credit-and-rewards/discount-combination-rules).


# Cashback Calculation

The first card on **DollarBack admin → Settings** defines "what order amount cashback is based on" and sets "any caps or rounding rules". Everything here applies to every cashback program at once, and the same base feeds percentage referral rewards.

## Base cashback on

| Option                    | Effect                                                            |
| ------------------------- | ----------------------------------------------------------------- |
| **Order Total** (default) | "Calculate cashback from the full order amount, including taxes." |
| **Order Subtotal**        | "Calculate cashback from the subtotal before taxes and shipping." |

This is usually the single most impactful setting on the page: switching between the two changes every program's payout on tax-charging stores.

## Maximum cashback per order

A hard cap on the total cashback one order can earn, in your store currency. "Cap the total cashback awarded per order. Set to 0 for no limit." Default: 0 (no limit).

When the cap is hit, all matching programs and lines are **scaled down proportionally**; nothing is dropped outright. That keeps the per-line attribution intact, which matters later for refund clawbacks.

## Options

* **Include shipping costs in cashback calculation** (default: on): adds shipping charges into the base. "When unchecked, shipping charges are excluded from the calculated amount." Only meaningful in Order Total mode, since Order Subtotal excludes shipping by definition.
* **Round up cashback to the nearest whole number** (default: off): rounds the final credit up as the last step of the calculation (e.g. $8.19 becomes $9.00). Popular for keeping widget messaging clean ("Earn $9 back").

## Verify it works

Place a test order with tax and shipping, then compare the credited amount in **Analytics → Activity** against your base choice. If it looks off, walk the full pipeline in [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated); discounts, gift cards, and competing programs are the usual suspects, not this card.

## Related articles

* [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated)
* [Special Order Types](/dollarback-store-credit/settings/special-order-types)
* [Set up purchase cashback](/dollarback-store-credit/earning-cashback-programs/set-up-purchase-cashback)


# Trigger & Timing

The **Trigger & Timing** card on **DollarBack admin → Settings** lets you "choose when cashback is awarded and whether to delay it". These two settings together decide when a customer actually sees spendable credit.

## Give cashback when

Which order event triggers calculation and issuance, for every program at once:

| Option                      | Effect                                                         |
| --------------------------- | -------------------------------------------------------------- |
| **Order Created** (default) | "Award cashback immediately when an order is placed."          |
| **Order Fulfilled**         | "Award cashback once the order has been shipped or fulfilled." |
| **Order Paid**              | "Award cashback once payment is confirmed."                    |

Pick **Order Paid** if you take manual payments or see failed captures; **Order Fulfilled** if you want credit to appear only after shipping (a natural fraud buffer for high-risk categories).

## Holding period

A delay, 0 to 365 days, before issued credit becomes spendable. "Delay before the customer receives their store credit. Set to 0 to award immediately." Default: 0.

During the hold, credits sit in a **pending** state: customers see them coming in the widgets, and you can review the queue in **Analytics → Activity**, under the **Scheduled** view. When the hold elapses the credit is released automatically.

{% hint style="info" %}
Trigger and holding period **stack**. With Order Fulfilled + a 14-day hold, credit is calculated at fulfillment and becomes spendable 14 days later. Use the hold to outlast your return window, so most clawbacks resolve against pending credit instead of an already-spent balance.
{% endhint %}

## Verify it works

Place a test order and watch **Analytics → Activity**: the credit row should appear at your chosen trigger event, in Pending status if a hold is set, then flip to credited when released. The full lifecycle, including what happens on refunds during the hold, is in [When credit is issued](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued).

## Related articles

* [When credit is issued](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued)
* [Refunds, cancellations & order edits](/dollarback-store-credit/spending-store-credit-and-rewards/refunds-cancellations-and-order-edits)
* [Activity: credit logs & scheduled rewards](/dollarback-store-credit/analytics-data-and-account/credit-logs-and-scheduled-rewards)


# Store Credit Visibility

The **Store Credit Visibility** card on **DollarBack admin → Settings** "control\[s] when store credit appears as a payment option at checkout". Behind the scenes it drives a Shopify payment-customization function, so the hiding happens natively at checkout.

## The setting

| Option                    | Effect                                                             |
| ------------------------- | ------------------------------------------------------------------ |
| **Always show** (default) | "Store credit is always available as a payment option."            |
| **Show on condition**     | "Only show store credit when the cart meets a specific threshold." |

## Visibility condition

Choosing **Show on condition** reveals a three-part rule builder:

* **Amount type**: **Cart Total** or **Cart Subtotal**
* **Operator**: `>` `<` `>=` `<=`
* **Value**: the threshold amount

Example: Cart Total `>=` 50 shows store credit only on carts of $50 or more, a common way to protect margins on small orders. Switching back to **Always show** resets the rule to its neutral default (total > 0).

Setup walkthrough, storefront demos, and the fine print (what the customer sees, gift-card interplay): [Hide store credit at checkout](/dollarback-store-credit/spending-store-credit-and-rewards/hide-store-credit-at-checkout).

## Need richer rules?

The card also surfaces our companion app, **Dollarlabs: Ultimate Discounts**, for "advanced visibility rules": per-product, per-collection, or per-customer-segment visibility beyond a single cart threshold. If it's installed you'll see an **Installed** badge here; otherwise an **Install App** button.

## Verify it works

Build a cart just below your threshold and start checkout: store credit should be absent as a payment option. Add an item to cross the threshold and refresh: it should appear. If it doesn't behave as expected, walk [Store credit isn't available at checkout](/dollarback-store-credit/troubleshooting-and-faq/store-credit-isnt-available-at-checkout).

## Related articles

* [Hide store credit at checkout](/dollarback-store-credit/spending-store-credit-and-rewards/hide-store-credit-at-checkout)
* [Store credit isn't available at checkout](/dollarback-store-credit/troubleshooting-and-faq/store-credit-isnt-available-at-checkout)
* [How customers spend their credit](/dollarback-store-credit/spending-store-credit-and-rewards/how-customers-spend-their-credit)


# Special Order Types

The **Special Order Types** card on **DollarBack admin → Settings** "fine-tune\[s] cashback behaviour when orders involve store credit or gift cards". Three settings, all independent of each other, and the source of most "why did this order earn less?" questions.

## When a customer pays with store credit

The "no cashback on cashback" control. How the credit-paid portion of an order counts toward new cashback:

| Option                                           | Effect                                                                     |
| ------------------------------------------------ | -------------------------------------------------------------------------- |
| **No cashback** (default)                        | "Skip cashback entirely if store credit was used."                         |
| **Cashback on full order amount**                | "Award cashback on the total order value regardless of store credit used." |
| **Cashback on amount paid with real money only** | "Award cashback only on the portion paid outside of store credit."         |

With the third option, the credit-paid amount is deducted **proportionally from every line** before calculation, so per-line attribution (and later refund clawbacks) stays fair. Scoped order-goal programs only lose the share that falls on their matching lines.

## When a customer pays with gift cards

The same three-way choice for the gift-card-paid portion, independent from the setting above:

| Option                                      | Effect                                                                   |
| ------------------------------------------- | ------------------------------------------------------------------------ |
| **No cashback**                             | "Skip cashback entirely if gift cards were used."                        |
| **Cashback on full order amount** (default) | "Award cashback on the total order value regardless of gift cards used." |
| **Cashback on non-gift card items only**    | "Award cashback only on the portion paid outside of gift cards."         |

## Give cashback when customers purchase gift card products

Whether gift-card **product lines** earn cashback at all. "When enabled, buying a gift card product earns cashback like any other item." Default: on.

When off, gift-card lines are filtered out of the calculation entirely: they earn nothing themselves and don't count toward order-goal thresholds. Note the distinction from the setting above: this one is about *buying* a gift card, that one about *paying with* one.

{% hint style="info" %}
The referral reward base follows the same store-credit and gift-card deductions, so a generous setting here also raises referral commissions; see [How referral rewards are calculated & tracked](/dollarback-store-credit/referral-program/how-referral-rewards-are-calculated-and-tracked).
{% endhint %}

## Verify it works

Pay for a test order partly with store credit and check the credited amount in **Analytics → Activity** against your choices. The order metafield `no-credit-reason` (visible in the [DollarBack summary admin block](/dollarback-store-credit/analytics-data-and-account/admin-blocks-customer-and-order-pages)) records when one of these settings zeroed out an order.

## Related articles

* [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated)
* [How referral rewards are calculated & tracked](/dollarback-store-credit/referral-program/how-referral-rewards-are-calculated-and-tracked)
* [Cashback Calculation](/dollarback-store-credit/settings/cashback-calculation)


# Advanced

The **Advanced** card on **DollarBack admin → Settings** holds "plan-gated features for order lifecycle management and B2B", plus the global tag exclusion list. The two toggles show a lock icon with "Upgrade your plan to use this feature" when your plan doesn't include them.

## Enable order edit tracking

"Recalculate cashback automatically when orders are edited, refunded, or cancelled." Default: off. Plan-gated.

When on, every edit is reconciled as a **diff**: pending credit is offset first, then the live balance, and any shortfall becomes owed credit recovered from future cashback. The full mechanics, including the clawback order and the immutable audit trail, are in [Refunds, cancellations & order edits](/dollarback-store-credit/spending-store-credit-and-rewards/refunds-cancellations-and-order-edits).

When off, awarded cashback simply stays as issued when orders change; you can still adjust balances manually.

## Give store credit to B2B buyers on company locations

"B2B buyers placing orders on a company location will earn store credit." Default: off. Plan-gated.

Credit is issued to the B2B **company location** rather than the individual buyer, so any buyer on that location can spend it. Setup, eligibility rules, and how it appears in checkout: [B2B store credit](/dollarback-store-credit/analytics-data-and-account/b2b-store-credit).

## Exclude customers by tag

A comma-separated list of Shopify customer tags (placeholder: "e.g. wholesale, employee, vip"). "Customers with any of these tags will not earn cashback. Separate multiple tags with commas."

This is the **global** kill switch: a tagged customer never earns from any program, purchase or otherwise. Per-program include/exclude tag targeting is separate and set in the program editor; the interplay between the two is covered in [Exclude customers from earning](/dollarback-store-credit/earning-cashback-programs/exclude-customers-from-earning).

{% hint style="warning" %}
Exclusion applies at earn time. Tagging a customer doesn't remove credit they already have; it only stops new cashback going forward.
{% endhint %}

## Verify it works

Tag a test customer with one of your excluded tags, place a qualifying order, and confirm no credit row appears in **Analytics → Activity**. Then remove the tag and repeat; credit should flow again.

## Related articles

* [Refunds, cancellations & order edits](/dollarback-store-credit/spending-store-credit-and-rewards/refunds-cancellations-and-order-edits)
* [B2B store credit](/dollarback-store-credit/analytics-data-and-account/b2b-store-credit)
* [Exclude customers from earning](/dollarback-store-credit/earning-cashback-programs/exclude-customers-from-earning)
* [Plans, usage & overage billing](/dollarback-store-credit/analytics-data-and-account/plans-usage-and-overage-billing)


# Troubleshooting & FAQ

Symptom-first fixes for the most common issues.

* [A widget isn't showing on my store](/dollarback-store-credit/troubleshooting-and-faq/widget-isnt-showing)
* [A customer didn't receive cashback](/dollarback-store-credit/troubleshooting-and-faq/customer-didnt-receive-cashback)
* [Store credit isn't available at checkout](/dollarback-store-credit/troubleshooting-and-faq/store-credit-isnt-available-at-checkout)
* [A referral wasn't tracked](/dollarback-store-credit/troubleshooting-and-faq/referral-wasnt-tracked)
* [Emails aren't arriving](/dollarback-store-credit/troubleshooting-and-faq/emails-arent-arriving)
* [My bulk import failed](/dollarback-store-credit/troubleshooting-and-faq/bulk-import-failed)
* [A reward discount code isn't working](/dollarback-store-credit/troubleshooting-and-faq/reward-discount-code-isnt-working)
* [What happens when I uninstall?](/dollarback-store-credit/troubleshooting-and-faq/what-happens-when-i-uninstall)


# A widget isn't showing on my store

Work through these checks in order; the first two cover the vast majority of cases.

## 1. Check the extensions status card on the dashboard

**Look at:** **DollarBack admin → Dashboard**, the extensions status card. It lists each storefront surface and whether it's active in your published theme.

**You'll see:** any inactive surface flagged, with a deep link into the Shopify theme editor for that exact surface.

**Fix:** click the deep link and enable the missing widget (see check 2 for which kind of switch you're looking for). Back on the dashboard, confirm the card now shows it active.

## 2. Know whether it's an app embed or an app block (they're different)

**Look at:** the Shopify theme editor, but in two different places:

* **App embeds** are site-wide toggles in the theme editor's app embeds panel. The floating cashback widget and the cashback window variable are embeds. If the window-variable embed is off, *no* DollarBack widget can load its data, so turning it on can fix several "missing" widgets at once.
* **App blocks** are placed per template: open the specific template (product page, cart) and add the DollarBack block to a section. The product page and cart cashback messages are blocks.

**You'll see:** an embed shows an on/off toggle; a block either appears in the template's section list or is absent entirely.

**Fix:** toggle the embed on, or add the block to the template, then save. Enabling an embed does not add blocks, and adding a block does not enable embeds. A block must be added on every template where you want it.

## 3. Confirm you edited the published theme

**Look at:** the theme name in the editor's top bar.

**You'll see:** if you enabled the widget on a draft or duplicate theme, the live store won't change.

**Fix:** repeat the change on the currently published theme, or publish the theme you edited.

## 4. Rule out a theme conflict

**Look at:** the storefront in an incognito window. If the block is added but invisible, your theme's CSS or a section setting may be hiding it.

**You'll see:** in the browser's developer tools, the widget's element present in the page but hidden or zero-height.

**Fix:** move the block to a different section position, or remove custom CSS targeting it. If it renders in a default Shopify theme but not yours, the conflict is theme-side; share the finding with your theme developer.

## 5. Clear the browser cache

**Look at:** the storefront in a private/incognito window or another browser.

**You'll see:** the widget appears there but not in your normal browser: a cached page.

**Fix:** hard-refresh or clear the cache. Ask customers reporting the issue to do the same before you dig further.

## Related articles

* [Activate widgets in your theme](/dollarback-store-credit/getting-started/activate-widgets-in-your-theme)
* [Widget map: what shows where](/dollarback-store-credit/widgets-and-storefront/widget-map-what-shows-where)
* [Understanding the dashboard](/dollarback-store-credit/getting-started/understanding-the-dashboard)
* [The floating cashback widget](/dollarback-store-credit/widgets-and-storefront/the-floating-cashback-widget)


# A customer didn't receive cashback

Run this checklist top to bottom, most common cause first. Keep the order open in Shopify admin and the credit log (**DollarBack admin → Analytics**) beside it.

## 1. Is the customer excluded by tag?

**Look at:** the customer's tags in Shopify admin, against the excluded tags list in **DollarBack admin → Settings**.

**You'll see:** a tag on the customer (e.g. `wholesale`) that matches your exclusion list. Excluded customers never earn; nothing appears in the credit log.

**Fix:** remove the tag from the customer, or from the exclusion list, for future orders. Past orders can be credited manually.

## 2. Has the trigger event happened yet?

**Look at:** your trigger setting in **Settings**: cashback issues when the order is *created*, *paid*, or *fulfilled*.

**You'll see:** for example, trigger = fulfilled and the order still unfulfilled. No credit is expected yet.

**Fix:** nothing is wrong. Complete the fulfillment (or payment) and the credit issues.

## 3. Is the credit pending, not missing?

**Look at:** your holding period in **Settings** (0–365 days), and the scheduled rewards tab in **Analytics**.

**You'll see:** the credit listed as pending/scheduled. During the holding period it exists but isn't spendable, so the customer's checkout balance won't include it.

**Fix:** none needed; it releases automatically when the hold ends. Tell the customer the date.

## 4. Did the customer hit a frequency limit?

**Look at:** the cashback config's frequency limit, and the customer's earlier credits from that config in the credit log.

**You'll see:** the customer already earned from this config the maximum number of times in the window.

**Fix:** expected behavior. Raise the limit on the config if it's too strict, or credit manually as a goodwill gesture.

## 5. Was the order inside the config's date window?

**Look at:** the config's start and end dates.

**You'll see:** the order placed before the start or after the end date, so the config didn't apply.

**Fix:** extend or reopen the config's dates for future orders.

## 6. Does the sales channel qualify?

**Look at:** the order's sales channel versus your channel filters (web, draft orders, POS).

**You'll see:** e.g. a draft order while draft orders are excluded.

**Fix:** enable the channel in settings if it should earn.

## 7. Was the order paid with store credit or gift cards?

**Look at:** the order's payment breakdown, and the "pays with store credit" / "pays with gift cards" settings.

**You'll see:** an order fully covered by store credit or gift cards while the setting is "no cashback" (or "real money only" / "non-gift-card portion" with nothing left over). The cashback base is $0 by design.

**Fix:** expected under your settings. Change them only if you *want* credit- or gift-card-paid amounts to earn.

Still unexplained after all seven checks? Contact support with the order ID.

## Related articles

* [When credit is issued](/dollarback-store-credit/earning-cashback-programs/when-credit-is-issued)
* [How cashback is calculated](/dollarback-store-credit/earning-cashback-programs/how-cashback-is-calculated)
* [Settings](/dollarback-store-credit/settings)
* [Exclude customers from earning](/dollarback-store-credit/earning-cashback-programs/exclude-customers-from-earning)


# Store credit isn't available at checkout

The customer has a balance, but checkout doesn't offer store credit as a payment option. Check these in order.

## 1. Is a conditional visibility rule hiding it?

**Look at:** **DollarBack admin → Settings**, the store credit visibility setting. It's either *always show* or *show on condition*, a cart total/subtotal threshold enforced by a payment-customization function at checkout.

**You'll see:** visibility set to a condition like "cart total ≥ $50" while the customer's cart is below the threshold. This is the most common cause: the credit isn't gone, the payment option is deliberately hidden for that cart.

**Fix:** if the rule is intended, no action; the option reappears once the cart crosses the threshold. Otherwise switch the setting back to always show (it applies to new checkouts immediately).

## 2. Is the customer logged in?

**Look at:** how the customer reached checkout.

**You'll see:** store credit is tied to the customer's account. A guest checkout, or a checkout under a different email/account, shows no store credit option.

**Fix:** have the customer sign in to the account that holds the balance before checking out.

## 3. Does the balance currency match the checkout currency?

**Look at:** the currency of the customer's credit versus the market/currency they're checking out in. Credit is issued in the customer's resolved currency, and Shopify offers a store-credit balance only when it matches the checkout currency.

**You'll see:** for example, a USD balance while the customer browses your EUR market, so checkout won't offer the USD credit.

**Fix:** have the customer switch back to the market/currency their credit was issued in. For stores selling in several currencies, expect balances to be usable only in their own currency.

## 4. Are Shopify's store-credit prerequisites met?

**Look at:** your Shopify admin settings. DollarBack issues Shopify-native store credit, so checkout only shows it where Shopify supports it: store credit must be enabled as a payment method in your Shopify payment settings, and the customer experience must support it (it isn't available on every checkout type or accelerated wallet flow).

**You'll see:** store credit missing for every customer, not just one, which points to a store-level prerequisite rather than a DollarBack setting.

**Fix:** enable store credit in Shopify's payment settings and re-test with a normal web checkout.

## 5. Is the balance actually available?

**Look at:** the customer's entry in the credit log and the scheduled rewards tab.

**You'll see:** the credit still pending under a holding period, or already expired.

**Fix:** pending credit releases automatically at the end of the holding period; expired credit is gone unless you re-issue it manually.

## Related articles

* [Hide store credit at checkout](/dollarback-store-credit/spending-store-credit-and-rewards/hide-store-credit-at-checkout)
* [How customers spend their credit](/dollarback-store-credit/spending-store-credit-and-rewards/how-customers-spend-their-credit)
* [Credit expiry and reminders](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders)
* [A customer didn't receive cashback](/dollarback-store-credit/troubleshooting-and-faq/customer-didnt-receive-cashback)


# A referral wasn't tracked

A referrer says a friend ordered, but no reward landed. One rule explains most cases, so start there.

## 1. Was the referral code actually on the order?

**Look at:** the referee's order in Shopify admin, specifically the discounts applied to it.

**You'll see:** whether the referrer's code appears as a discount on the order. This is decisive: **attribution is code-based**. A referral counts only when the referee's order used the referrer's discount code. There is no cookie or link-only attribution. Sharing a link, visiting the store from it, or mentioning a friend at checkout does nothing by itself; the code must be applied to the order.

**Fix:** if the code isn't on the order, the referral can't be tracked automatically; credit the referrer manually if you wish. Going forward, remind customers their friend must enter the code at checkout.

## 2. Did the order meet the minimum order value?

**Look at:** the referral config's minimum order value condition.

**You'll see:** the referee's order total below the minimum; the code either wouldn't apply at checkout or the reward was skipped.

**Fix:** expected behavior; lower the minimum if it blocks too many orders. An order paid entirely with store credit and gift cards is also skipped; the reward base is calculated after those deductions.

## 3. Is the referee a new customer?

**Look at:** the "new customers only" condition on the config, and the referee's order history in Shopify.

**You'll see:** a referee with previous orders while the config requires new customers.

**Fix:** expected behavior. The condition exists to stop existing customers cycling codes. Disable it on the config if you want to reward all referred orders.

## 4. Has the code hit its max uses?

**Look at:** the config's max-uses limit and the referral logs (**DollarBack admin → Analytics**, referral section) for earlier orders with that code.

**You'll see:** the code already used the maximum number of times.

**Fix:** raise or remove the limit for future referrals; past over-limit orders won't be rewarded retroactively.

## 5. Is the config expired or inactive?

**Look at:** the referral config's status and expiration date in **DollarBack admin → Referral**.

**You'll see:** the config expired or paused at the time of the order; its codes stop attributing rewards.

**Fix:** reactivate or extend the config. Also check config priority if you run several: the reward comes from the first config matching the referrer's tags, which may not be the one you expect.

One more nuance: each referee order is rewarded at most once, so a duplicate complaint about the *same* order is expected behavior, not a bug.

## Related articles

* [How referral rewards are calculated and tracked](/dollarback-store-credit/referral-program/how-referral-rewards-are-calculated-and-tracked)
* [Referral conditions and limits](/dollarback-store-credit/referral-program/referral-conditions-and-limits)
* [Run multiple referral configs](/dollarback-store-credit/referral-program/run-multiple-referral-configs)
* [How customers share referral links](/dollarback-store-credit/referral-program/how-customers-share-referral-links)


# Emails aren't arriving

A customer earned credit (or a code) but never got the email. Check in this order.

## 1. Is the template enabled?

**Look at:** **DollarBack admin → Notifications**. Each of the five templates (credited, redeemed, referral reward, expiry reminder, discount code earned) has its own enable/disable toggle.

**You'll see:** the relevant template switched off. Disabled templates send nothing, silently.

**Fix:** enable the template. Past events won't be re-sent, but the next trigger will. While you're there, use the test-send option in the template editor to mail yourself a draft with mock data and confirm delivery end to end.

## 2. Has the customer unsubscribed?

**Look at:** the customer's subscription status for *your store's* DollarBack emails.

**You'll see:** the customer previously clicked the unsubscribe link in one of your notification emails. Unsubscribes are **per store**: opting out of your emails doesn't affect other merchants, and vice versa.

**Fix:** the customer must opt back in; you can't override an unsubscribe. Their credit still accrues normally; only the notification is suppressed.

## 3. Did the deliverability guard block the send?

**Look at:** the recipient's email address itself. Before every send, three checks run: address syntax, disposable-domain detection, and an MX-record lookup on the domain.

**You'll see:** an address that's malformed (typo like `name@gmail,com`), uses a throwaway domain, or belongs to a domain with no mail server. Any of these blocks the send before it leaves.

**Fix:** correct the customer's email address in Shopify admin. Future notifications send normally; nothing queues retroactively.

## 4. Check the spam folder

**Look at:** the customer's spam/junk folder, and your own after a test send.

**You'll see:** the email delivered but filtered, most likely when you're sending from the default shared identity rather than your own domain.

**Fix:** ask the customer to mark it "not spam". For a lasting fix, connect a custom sending domain (next check) so your emails authenticate as coming from you.

## 5. Is your custom sending domain verified?

**Look at:** the sender identity section in **DollarBack admin → Notifications**: the verification status of your custom domain's DNS records (DKIM and SPF/MAIL FROM).

**You'll see:** records pending or failing verification. An unverified or misconfigured domain hurts deliverability or prevents sending as that domain.

**Fix:** re-check the DNS records at your DNS provider against the values shown in the app (exact host names and values, no extra spaces) and wait for DNS propagation before re-verifying. Until it verifies, sends fall back to the default identity.

Still nothing after all five checks? Note the customer email, the template, and the trigger time, and contact support so we can trace the individual send.

## Related articles

* [Email notifications overview](/dollarback-store-credit/notifications/email-notifications-overview)
* [Customize email templates](/dollarback-store-credit/notifications/customize-email-templates)
* [Sender identity and custom domain](/dollarback-store-credit/notifications/sender-identity-and-custom-domain)
* [Credit expiry and reminders](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders)


# My bulk import failed

{% hint style="info" %}
**Plan:** bulk import is a plan-gated feature.
{% endhint %}

An import job shows failed rows, stopped early, or won't start at all. Start with the job log. It tells you exactly which rows failed and why.

## 1. Read the job log first

**Look at:** **DollarBack admin → Bulk import**, open the job and download its log. Every row gets an entry: customer ID, email, action, amount, currency, status, and a message.

**You'll see:** which rows succeeded and which failed, with a per-row reason. Rows commit individually in small batches, so a job with some failed rows has still applied all its successful rows. Don't re-import the whole file, or successful customers will be credited twice (duplicates are **not** deduped).

**Fix:** build a corrected CSV containing *only* the failed rows, then re-run. The same applies if you stopped a job manually: everything processed before the stop is kept.

## 2. "Customer not found" rows

**Look at:** the failed rows' Email / CustomerId values against your Shopify customers.

**You'll see:** the log message "Customer not found": a typo'd email, a customer that doesn't exist yet, or a CustomerId from a different store. When both Email and CustomerId are present, CustomerId wins, so a wrong ID fails the row even if the email is right. Processing continues past these rows; only they fail.

**Fix:** correct the identifier (or create the customer in Shopify first) and re-run just those rows.

## 3. Malformed amounts or currency

**Look at:** the Amount and Currency columns. Amount and Currency headers are required; amounts must be positive numbers (quoted fields and thousand separators like "8,260.90" are handled).

**You'll see:** rows failing with negative or non-numeric amounts, or a currency code your store doesn't use. Remember: whether the job credits or debits is the job's mode. Amounts stay positive either way, and expiry days apply to credits only.

**Fix:** clean the offending values and re-run the failed rows.

## 4. B2B rows missing CompanyLocationId

**Look at:** whether the job was run in B2B mode, and whether every row has a CompanyLocationId column value.

**You'll see:** B2B-mode rows without a CompanyLocationId fail, because B2B credit attaches to a company location, not an individual buyer.

**Fix:** add the correct CompanyLocationId to each row (find it on the company's location in Shopify admin) and re-run.

## 5. File over 5 MB

**Look at:** the CSV file size.

**You'll see:** the upload rejected past the 5 MB limit.

**Fix:** split the file into parts under 5 MB and import them as separate jobs.

## 6. Development store

**Look at:** your store type.

**You'll see:** bulk import blocked entirely on development stores.

**Fix:** run imports on a live (non-development) store.

## Related articles

* [Bulk import credit (CSV)](/dollarback-store-credit/analytics-data-and-account/bulk-import-credit-csv)
* [B2B store credit](/dollarback-store-credit/analytics-data-and-account/b2b-store-credit)
* [Migrating from another loyalty app](/dollarback-store-credit/getting-started/migrating-from-another-loyalty-app)
* [Credit logs and scheduled rewards](/dollarback-store-credit/analytics-data-and-account/credit-logs-and-scheduled-rewards)


# A reward discount code isn't working

A customer's reward code is rejected at checkout. Check the shared discount first. Deleting it is the single most damaging (and most common) cause.

## 1. Was the shared discount `RDM-(DO NOT DELETE)` deleted?

**Look at:** the discounts page in Shopify admin. Search for a discount whose code is `RDM-(DO NOT DELETE)`.

**You'll see:** every reward code DollarBack issues (earn-side codes *and* marketplace redemptions) hangs off this **one** shared Shopify discount. If it's missing, **every issued code stops working at once**. That's the tell: all codes failing simultaneously means this is your cause; one customer's code failing means skip ahead.

{% hint style="warning" %}
Do **not** recreate the discount manually. A hand-made discount with the same code is an empty shell: it isn't connected to the app, and previously issued codes will not attach to it. **Contact support** and we'll re-provision the shared discount and re-link outstanding codes.
{% endhint %}

**Fix:** contact support for re-provisioning, then warn your team the discount must never be deleted; the name is the warning.

## 2. Has the code expired?

**Look at:** the code's issue date and expiry. Expiry is baked into each code from the reward's **Expires after (days)** setting; check the Activity row that issued it.

**You'll see:** checkout rejecting the code with your "Expired code" rejection message.

**Fix:** expected behavior. Issue a replacement manually if you want to honor it; consider a longer expiry on the reward.

## 3. Does the cart fail the reward's redemption rules?

**Look at:** the reward's cart groups and redemption rules on the **Reward marketplace** page, versus what's in the customer's cart.

**You'll see:** checkout refusing the code with one of your [rejection messages](/dollarback-store-credit/spending-store-credit-and-rewards/cart-groups-and-redemption-rules): a minimum spend, minimum quantity, or eligible-items requirement that isn't met. The message itself usually says what's missing ("Spend $20 more from Skincare to use...").

**Fix:** expected behavior; the customer needs to meet the condition. If a rule is stricter than intended, edit it on the reward. Editing affects all outstanding codes for that reward.

## 4. Do combination rules exclude another discount in the cart?

**Look at:** what else is applied at checkout: another code, or an automatic discount.

**You'll see:** the reward code refused *in combination*, even though it works alone. Combination settings (order / product / shipping classes) live on the shared discount node and are **store-wide**: every outstanding reward code shares the same stacking rules, and changes affect all codes immediately.

**Fix:** have the customer remove the other discount, or update the **Combinations** card on the **Reward marketplace** page. You can't allow stacking for just one reward.

## 5. Was the code already used?

**Look at:** the discount-codes view in **DollarBack admin → Analytics**; each code shows issued/used status.

**You'll see:** the code marked used on an earlier order. Reward codes are single-use.

**Fix:** expected behavior. If a code's value exceeded the cart total, the remainder is not banked; the unused value is lost.

## 6. Double-submit minted a duplicate

**Look at:** the customer's redemption history for two nearly identical codes seconds apart.

**You'll see:** the redeem button was clicked twice; two codes were minted and the credit cost may have been charged twice. Credit is charged at claim time, not at checkout, and it is not auto-refunded for unused codes.

**Fix:** contact support to void the duplicate and restore the credit; corrections here are a manual support action.

## Related articles

* [Reward discount codes instead of store credit](/dollarback-store-credit/earning-cashback-programs/reward-discount-codes-instead-of-store-credit)
* [Cart groups, redemption rules & rejection messages](/dollarback-store-credit/spending-store-credit-and-rewards/cart-groups-and-redemption-rules)
* [Set up the reward marketplace](/dollarback-store-credit/spending-store-credit-and-rewards/set-up-the-reward-marketplace)
* [Discount combination rules](/dollarback-store-credit/spending-store-credit-and-rewards/discount-combination-rules)
* [Credit logs and scheduled rewards](/dollarback-store-credit/analytics-data-and-account/credit-logs-and-scheduled-rewards)


# What happens when I uninstall?

Answers to the questions merchants ask before (and after) removing DollarBack.

## Do my customers keep their store credit?

**Yes.** DollarBack issues **Shopify-native store credit**: the balances live on your customers' Shopify accounts, not in the app. Uninstalling DollarBack does not remove them: customers can still spend their existing balances at checkout (wherever Shopify offers store credit as a payment option), and you can still see and adjust balances from Shopify admin.

## What stops working immediately?

* **Earning stops.** No new cashback, signup, birthday, social, referral, or custom rewards are calculated or issued.
* **Scheduled and pending credits stop.** Credits waiting on a holding period, queued birthday rewards, and other scheduled rewards will not be released; the app that releases them is gone.
* **Widgets disappear.** All storefront, checkout, thank-you, and customer-account surfaces are removed with the app. Your theme doesn't need cleanup: app blocks and embeds deactivate automatically.
* **Reward discount codes stop working.** Every reward code hangs off the app's shared discount (`RDM-(DO NOT DELETE)`); when the app is uninstalled, outstanding unused codes stop applying at checkout. Consider honoring recent codes manually if customers ask.
* **Emails and integration events stop.** No more notification emails, and no further events to Klaviyo, Omnisend, Shopify Flow, or Google Wallet passes (passes stop updating).

## Is my configuration deleted?

Not immediately. Your programs, settings, templates, and logs are retained for a period after uninstall so reinstalling doesn't mean starting over. Shopify mandates deletion of shop data after uninstall on its own schedule, so treat retention as a grace window and export anything you need (balance CSV, analytics) *before* uninstalling.

## What happens if I reinstall?

If you reinstall within the retention window, your configurations and history are still there, but everything restarts in a safe state: re-check that your programs are active, re-enable app embeds and blocks in the theme editor (the extensions status card on the dashboard will guide you), and contact support about re-provisioning the shared discount so reward codes can be issued again. Credit that was scheduled or held when you uninstalled will not release itself retroactively; support can help reconcile it.

## Can I request full data erasure?

Yes. Uninstalling triggers Shopify's standard data-removal process automatically. If you want your store's data erased sooner, or a customer exercises a GDPR/CCPA erasure request, contact support. Customer data-erasure requests forwarded by Shopify are honored automatically. Shopify-native store credit balances are your store's data in Shopify, not ours; erasing app data doesn't remove them.

## A short checklist before you uninstall

1. Export a customer balance CSV (**DollarBack admin → Analytics**).
2. Note pending/scheduled credits and decide whether to issue them manually first.
3. Warn customers holding unused reward codes.

## Related articles

* [How DollarBack works](/dollarback-store-credit/getting-started/how-dollarback-works)
* [Export balances and reports](/dollarback-store-credit/analytics-data-and-account/export-balances-and-reports)
* [Credit logs and scheduled rewards](/dollarback-store-credit/analytics-data-and-account/credit-logs-and-scheduled-rewards)
* [A reward discount code isn't working](/dollarback-store-credit/troubleshooting-and-faq/reward-discount-code-isnt-working)




---

[Next Page](/llms-full.txt/1)

