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

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

## Connect Omnisend

1. Go to **DollarBack admin → Integrations** and find the **Omnisend** card.
2. Click **Set up**. The Omnisend page opens.
3. Click **Connect with Omnisend** and approve the connection in the Omnisend window that opens.
4. Omnisend shows **Successfully Connected to Omnisend!** and the window closes by itself. The Omnisend page reloads and shows **Connected**, and events start syncing immediately.
5. Click **Sync Balance** once, so customers who already have credit get their balance properties in Omnisend (see [Sync Balance](#sync-balance)).

{% hint style="info" %}
Omnisend needs a plan that includes **Klaviyo, Omnisend, Mailchimp and Flow integrations**. On other plans the Omnisend page shows **Upgrade to Connect** instead of **Connect with Omnisend**, with the banner "Integrations aren't available on your current plan." Click it to compare plans on the **Billing** page ([Choose a plan and start your trial](/dollarback-store-credit/getting-started/choose-a-plan-and-start-your-trial.md)).
{% endhint %}

<figure><img src="https://2844543096-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcVBfwy7Yj4tU8TsxkHEr%2Fuploads%2Fgit-blob-a8dd768cf1af9993eec75747350b9d87d09634e1%2Fdb-integrations-hub-marketing-annotated.png?alt=media" alt="The Integrations page in DollarBack. The Marketing and automations section shows cards for Klaviyo and Omnisend (both Connected) and Shopify Flow (Enabled), each with a Manage button, and cards for Mailchimp and Judge.me (Not Connected) with a Set up button."><figcaption><p>Every integration starts on the Integrations page. Click Set up on the card you need. Once it is connected, the button reads Manage.</p></figcaption></figure>

<figure><img src="https://2844543096-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcVBfwy7Yj4tU8TsxkHEr%2Fuploads%2Fgit-blob-b3b66b9dc3f39567d428d5819117e4a84f3fb062%2Fdb-omnisend-connected-annotated.png?alt=media" alt="The Omnisend integration page with a Connected badge and the buttons Disconnect Omnisend, Sync Balance and Send Demo Events. Below, the Synced Properties and Synced Events panels each have Current and Deprecated tabs. The events are grouped into Store credit, Referral, Discount codes and Tiers."><figcaption><p>The Omnisend page confirms the connection and lists the contact properties and events DollarBack sends. The Deprecated tabs list the old names, which are still sent.</p></figcaption></figure>

## Synced events

Each event lands in Omnisend as a custom event on the contact.

DollarBack sends every event **twice**: first under its old Title Case name, then under its new name. The old names are deprecated. They still go out with their old values, so automations built on them keep running, but build new automations on the new names. The Omnisend page in DollarBack lists both, on its **Current** and **Deprecated** tabs.

| Omnisend event            | Old name (deprecated)          | Fires when                                                                                                                               | Key fields                                                                                                                                             |
| ------------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `store_credit_credited`   | Store Credit Credited          | Credit is issued: order cashback, a signup, newsletter, social, review or custom reward, a merchant API or CSV credit, or a Flow deposit | amount, formattedAmount, currency, symbol, reason, expiresAt, formattedExpiresAt, expiryDays, offerTitle, orderId, orderName                           |
| `birthday_reward`         | Birthday Reward Credited       | A birthday reward is issued as store credit                                                                                              | amount, formattedAmount, currency, symbol, reason, expiresAt, formattedExpiresAt, expiryDays, offerTitle                                               |
| `store_credit_debited`    | Store Credit Debited           | Credit is removed: a refund, cancellation or order-edit clawback, a merchant API or CSV debit, or a Flow deduction                       | amount, formattedAmount, currency, symbol, reason, offerTitle, orderId, orderName                                                                      |
| `store_credit_redeemed`   | Store Credit Redeemed          | A customer spends credit at checkout                                                                                                     | amount, formattedAmount, currency, symbol, reason, orderId, orderName                                                                                  |
| `store_credit_expiring`   | Store Credit Expiry Threshold  | Credit crosses a reminder threshold you set in the Expiry Notification Schedule                                                          | amount (the part of that credit still unspent), formattedAmount, currency, symbol, reason, expiresAt, formattedExpiresAt, remainingDays, transactionId |
| `referral_code_generated` | Referral Code Generated        | A referral code is created for a customer                                                                                                | referralCode, reason                                                                                                                                   |
| `referral_rewarded`       | Referral Reward Credited       | A referrer earns a reward                                                                                                                | amount, formattedAmount, currency, symbol, reason, expiresAt, formattedExpiresAt, expiryDays, orderId, orderName, refereeFirstName, refereeLastName    |
| `discount_code_credit`    | Discount Code Credited         | A reward discount code is issued, earned through a program or claimed in the reward marketplace                                          | discountCode, rewardSummary, offerTitle, reason, orderId, orderName, amount, formattedAmount, currency, symbol                                         |
| `discount_code_expiring`  | Discount Code Expiry Threshold | An unused reward discount code crosses a reminder threshold                                                                              | discountCode, rewardSummary, offerTitle, reason, expiresAt, formattedExpiresAt, remainingDays                                                          |
| `tier_upgraded`           | Customer Tier Upgraded         | A customer moves up a tier, or reaches their first tier                                                                                  | tier, previousTier, reason                                                                                                                             |
| `tier_downgraded`         | Customer Tier Downgraded       | A customer moves down a tier, or loses their tier                                                                                        | tier, previousTier, reason                                                                                                                             |

Some fields are left out when they don't apply: a signup reward has no `orderId`, and credit that never expires has no `expiresAt`. In the new events:

* `expiresAt` is the date in your store's time zone (`March 5, 2027`), and `formattedExpiresAt` adds the time and zone (`March 5, 2027 at 3:07 AM EST`).
* `formattedAmount` uses the same money format as your DollarBack emails: `$36.85`, `CA$10.33`. `symbol` follows it, so it's `CA$` for Canadian dollars.
* `reason` says why the event happened, for example `Order Cashback`, `Signup Bonus`, `Order Refund` or `Manual Debit`.

Claiming a reward-marketplace reward sends only `discount_code_credit`. The store credit it costs doesn't send a debited event.

## Contact properties

With each event, DollarBack updates these custom properties on the Omnisend contact. Each one is written under its new name and, deprecated, under its old name:

| Property           | Old name (deprecated)      | Contains                                                    |
| ------------------ | -------------------------- | ----------------------------------------------------------- |
| dbBalance          | Dollar\_Balance            | The customer's current store-credit balance as a number     |
| dbFormattedBalance | Dollar\_Formatted\_Balance | The balance formatted for display (e.g. $24.50)             |
| dbCurrency         | Dollar\_Currency\_Code     | The balance's currency code (e.g. USD)                      |
| dbSymbol           | Dollar\_Symbol             | The currency symbol                                         |
| dbReferralCode     | referral\_code             | The customer's referral code (set when a code is generated) |

DollarBack finds the Omnisend contact by the first of these that the Shopify customer has:

1. Email address
2. Phone number
3. First and last name
4. Shopify customer ID

## Sync Balance

Events only update the contacts of customers who have credit activity after you connect. To fill in everyone else, click **Sync Balance** on the Omnisend page. It queues a bulk sync that sends your customers' current store-credit balances to their Omnisend contacts (*dbBalance* and the other balance properties). Use it right after you connect, and again if balance properties look out of date.

While the sync runs, the page shows **Omnisend Sync In Progress** and **Sync Balance** is disabled. A sync can take a few minutes, depending on the number of customers. If you click **Disconnect Omnisend** during a sync, it stops, and the next sync starts from the beginning.

Omnisend has no referral-code sync button. *dbReferralCode* is set when a referral code is generated for the customer.

## 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_expiring`: "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_credit` 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 *dbBalance* 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* and `store_credit_credited` events should appear on their timeline within a few minutes, with the *dbBalance* properties matching the widget.

To build automations before a real customer earns anything, click **Send Demo Events** on the Omnisend page in DollarBack. It sends every event, under its new name with sample values, to a demo contact. DollarBack also does this once when you connect.

## Common issues

* Events aren't appearing: confirm the card shows **Connected** and trigger a fresh event; events from before the connection are not backfilled.
* Contact properties are missing: they update on events, and when you click **Sync Balance**. A contact with no credit activity since you connected won't have a balance until you run a sync.
* The page shows **Upgrade to Connect**: your plan does not include integrations. Upgrade on the **Billing** page.
* An automation didn't fire: check the event name matches exactly (e.g. `store_credit_expiring`, or the old *Store Credit Expiry Threshold*).
* Each event shows up twice: that's expected. One is the old name and one is the new name (see [Synced events](#synced-events)). Trigger each automation on only one of them.
* 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.md)).

## Related articles

* [Klaviyo integration](/dollarback-store-credit/integrations/klaviyo-integration.md)
* [Shopify Flow: triggers and actions](/dollarback-store-credit/integrations/shopify-flow-triggers-and-actions.md)
* [Email notifications overview](/dollarback-store-credit/notifications/email-notifications-overview.md)
* [Credit expiry and reminders](/dollarback-store-credit/spending-store-credit-and-rewards/credit-expiry-and-reminders.md)
