Shopify
Turn every Shopify order into automatic WhatsApp updates, audience filters, and follow-up journeys.
Connect Shopify and every order that comes in becomes a contact automatically, with WhatsApp updates sent at each step — order confirmed, Cash on Delivery confirmed, shipped, delivered — plus the customer data you need to filter, retarget, and build abandoned-cart follow-ups.
Every message type below is off by default. Turn on only what you need in Settings → Shopify.
Connect your store
- Go to Settings → Shopify
- Enter your store domain (
your-store.myshopify.com) - Click Connect Shopify and approve the request on Shopify's own screen
- You're back on the Shopify settings page, now showing Connected
If the connection ever shows Needs reconnecting, click Reconnect. If orders stop arriving after you change something on the Shopify side (a new domain, an app permission), use Refresh connection — it re-registers the webhooks without you having to reconnect from scratch.
Automatic WhatsApp order messages
Under Order messages, turn on any combination of:
| Message | Sent when |
|---|---|
| Order confirmation | The order is paid |
| Cash on Delivery confirmation | The order's payment method is COD — SalesByte detects this automatically and asks the customer to confirm, which cuts down failed/refused deliveries |
| Order has shipped | Shopify marks the order as fulfilled |
| Order delivered | Your courier reports delivery back to Shopify — many local/COD couriers don't report this, so this one won't fire for every order |
Each needs its own approved WhatsApp utility template (text-only header, or no header — no image/video/document headers).
Choosing what fills each variable
Once you pick a template, SalesByte shows one dropdown per {{n}} placeholder the template actually has, and you choose what fills each one:
| Source | Fills with |
|---|---|
| Customer name | The contact's name |
| Order number | e.g. #1234 |
| Order total | Amount and currency |
| Product name(s) | Up to 3 product names, "& N more" beyond that |
| Tracking link | Shopify's tracking URL (shipping/delivery messages only) |
| Shipping address | One-line address |
This mapping is remembered per template — if you switch to a different template with a different number of placeholders, SalesByte resets the mapping to match rather than leaving a stale choice behind.
Cart recovery
A single reminder for anyone who starts checking out and doesn't finish:
- Turn on Remind customers who left items in their cart
- Set how many minutes to wait before sending
- Pick a template
The reminder links back to the customer's own cart, pre-filled with what they were buying.
If you build a Shopify cart abandoned journey (below) for the same purpose, turn this toggle off — otherwise a customer gets both the single reminder and your journey's messages for the same abandoned cart.
Add customers to a Sequence or Journey
Turn on Add customers to a Sequence or Journey when they order and pick one. This fires once per real order, on top of any messages above — useful for a longer follow-up flow beyond a single confirmation.
For branching, multi-step follow-ups (send after 1 hour, a stronger nudge after 6 hours, stop early if they've already bought), build a Journey instead — see below.
Bring in your existing data
Under Setup:
| Action | What it does |
|---|---|
| Import existing customers | Brings in everyone who was already a customer before you connected Shopify, as contacts |
| Sync order history | Brings in orders placed before you connected, so filters like "ordered more than 90 days ago" or "total spent" see your full history, not just orders from today onward |
| Sync products | Populates the product list used by product-based journey triggers and filters |
None of these three send any messages — they only backfill data, so your automatic order messages never fire retroactively for old orders.
Review link
Set a Review link (your Judge.me, Loox, or similar review page) once, and it becomes available to any journey message as a "Review link" variable — see Journey message variables below.
Filter your audience by Shopify data
Once orders are flowing in, these become available anywhere you already filter contacts — the Contacts page, a campaign's audience builder, and a journey's If/else step, since all three share the same filter panel:
| Filter | Example |
|---|---|
| Number of orders | 3 or more orders |
| Total spent | More than ₹5,000 |
| Last order | In the last 30 days, or more than 90 days ago (including customers who've never ordered) |
| Product purchased | Bought "Night Cream" |
| Shipping state / country | State is Karnataka |
| Traffic source / medium / campaign | Came from a Meta ad |
See Audience Filters for how to combine these with your other filters.
Journeys built for Shopify
Two journey triggers exist specifically for Shopify stores, plus template variables that pull from a real order or cart. Full journey concepts are covered in Journeys — this section covers what's Shopify-specific.
"A Shopify order is placed"
Starts a journey when an order comes in. Configure:
- When: as soon as it's placed, once it's paid, or once it's delivered
- Cash on Delivery only — narrow to just COD orders
- Specific products — only orders containing the products you pick, so a night-cream journey doesn't fire for a sunscreen order
"A Shopify cart is abandoned"
Starts a journey when someone begins checking out on your store and doesn't finish — before Shopify's cart even becomes an order. Unlike the single Cart recovery reminder above, a journey lets you build a real sequence: a nudge after an hour, a stronger one after 6 hours, and so on, using ordinary Wait steps.
Turn off Cart recovery's toggle if you use this trigger for the same store, or a customer can receive both.
The "Check cart status" step
Drop this logic step into a cart-abandoned journey to check whether the cart it's following up on has already been bought. It branches into:
- Already bought — skip the remaining follow-up messages
- Still abandoned — continue the sequence
This is what lets a 3-step nudge sequence stop early the moment someone actually checks out.
Shopify variables in journey messages
Inside a journey's message step, these are available alongside the usual {{name}}-style variables:
| Variable | Resolves to |
|---|---|
| Track order link | The order's Shopify order-status page |
| Reorder link | A pre-filled cart with what was in that order |
| Cart recovery link | The abandoned cart itself, pre-filled |
| Review link | Your configured review page |
| Shopify: customer name | The customer's name on the order or cart |
| Shopify: product name(s) | What was ordered or is in the cart |
| Shopify: address | One-line shipping address |
| Shopify: order number | e.g. #1234 (order-triggered journeys only — an abandoned cart has no order number yet) |
| Shopify: order/cart total | The amount, whichever the journey was triggered from |
Troubleshooting
Orders stopped coming in — try Refresh connection first (Settings → Shopify). If that doesn't help, Reconnect.
A filter shows an empty result for older orders — run Sync order history first; filters only see orders that have actually reached SalesByte, and webhooks only cover orders placed after you connected.
Connection shows "Needs reconnecting" — Shopify expired or revoked the connection. Click Reconnect.
Still stuck? Contact support or email support@salesbyte.app.