Skip to main content

Loyalty Wallet Events, Now Reaching Your Marketing Stack

Wallet credit and debit events from Shopflo's loyalty programs now flow downstream to LimeChat and other customer engagement platforms — enabling earn confirmations, expiry reminders, and win-back journeys.

Written by Swapnil Sangal

A shopper earns 200 points on an order. Their balance is about to expire in a week. They just crossed the threshold where a win-back campaign would make sense. Until now, none of that reached the merchant's marketing tools — loyalty wallet activity stayed locked inside Shopflo, so a merchant running a points programme couldn't send a single message about it.

That's changed. Wallet credit and debit events now go out on the same pipe that already carries your Meta and GA4 events — enriched with the details that make a campaign possible: days to expiry, whether it's the shopper's first time earning, and whether their balance just crossed a threshold.


What It Does

Every time a shopper earns or spends loyalty points on your store, Shopflo fires one of two events — shopflo_wallet_credit or shopflo_wallet_debit — downstream to your connected marketing or CRM tool.

LimeChat is wired up directly — turn it on and events start flowing. For WebEngage, MoEngage, and CleverTap, events go out through a generic webhook to an endpoint you provide.

→ Apps & Integrations → Rewards & Loyalty → LimeChat (or Webhook) → Configure → Activate


The Two Events

If you're wiring up a webhook, these are the two events to listen for. event_type is what tells them apart.

shopflo_wallet_credit fires when a shopper earns points. Its transaction_type is CREDIT.

Useful fields: shopper.is_first_time_earner is true on a shopper's very first earn, which is your onboarding trigger. wallet.balance_crossed_threshold is true when their balance just crossed a threshold, which is your win-back trigger. expiry.expires_at and expiry.days_to_expiry are what you schedule reminders off. transaction.amount and wallet.balance_after are what you put in the message copy.

shopflo_wallet_debit fires when a shopper spends points. Its transaction_type is DEBIT.

Useful fields: transaction.amount is what they just redeemed. wallet.balance_after is what you compare against a floor to trigger a top-up journey. expiry here describes the shopper's remaining balance, not the points they just spent.

Dedupe on event_id. It's the same value as transaction_id, and delivery is at-least-once, so the same event can arrive more than once.


What You Can Build With It

Earn confirmation — fires within minutes of the credit. "You just earned ₹825. Balance: ₹1,200. Expires 12 Mar."

Expiry reminder cascade — T-7, T-3, and T-1 day nudges before points lapse, so breakage doesn't happen silently.

First-time earner onboarding — the shopper's balance was zero before this order, so walk them through how redeeming actually works.

High-balance win-back — balance crosses a threshold and a re-engagement journey fires. "You have ₹1,000+ sitting in rewards."

Redemption confirmation and top-up — on the burn side, confirm what a shopper spent, and nudge them to earn more if their balance drops below a floor.

Next-expiry surface — tell a shopper when their remaining points expire, not just the ones they just used.

Discount suppression — keep shoppers who already hold a large wallet balance out of discount campaigns, protecting margin.

Segments and attribution — build cohorts like has_active_wallet_balance, expires_in_30d, or dormant_earner, and measure how a wallet nudge turns into an order.


Why This Matters

Points are one of the strongest reasons a shopper comes back — but only if someone reminds them the points exist. A wallet balance a shopper never hears about is a discount that never gets redeemed and a message that never gets sent. This is the first release where a merchant can actually act on wallet activity, instead of it sitting silently in the background.


A Few Things to Keep in Mind

Two events, two destinations, for now. Only shopflo_wallet_credit and shopflo_wallet_debit, and only LimeChat and the generic webhook are supported — more destinations are expected to follow.

Shopflo doesn't schedule your reminders. The event carries expiry context (days to expiry, both as a readable date and a timestamp), but the T-7/T-3/T-1 cascade is built and scheduled inside your own marketing platform — that's deliberate, since that's where you already invest in journey building.

It's forward-only. Historical wallet events aren't backfilled — you'll start seeing events from the point this is turned on for your account.

Retries, then a dead letter queue. If a delivery fails, Shopflo retries three times with exponential backoff before it lands in a DLQ, so a transient outage on your end shouldn't mean a lost event.


Related Articles

How to Configure and Integrate Google Analytics (GA4) with Shopflo? — another destination on the same event pipe

How to integrate Omnisend with Shopflo — sync checkout events to power email and SMS automation

How to setup Reward Rally with Shopflo — one of the loyalty programs whose wallet activity this covers


Need help? Reach out to us at support@shopflo.com and we'll be happy to assist.

Did this answer your question?