Find lapsed BigCommerce customers and win them back in Klaviyo
Every month, spot the customers who quietly stopped buying, load them into your Klaviyo win-back list with their spend history, and get the top ten in Slack.
On the first Monday of every month at 8am, find the customers who used to buy from my BigCommerce store but have gone quiet, push them into my Klaviyo win-back list with the context my flow needs, and post a summary to my marketing channel in Slack.
Start by pulling my customer list from BigCommerce with Get All Customers (V2), then pull order history with Get All Orders. Both paginate with page and limit, with a maximum limit of 250 per page. The V2 order endpoint returns 204 No Content with an empty body when a page has no results, so keep requesting pages until you get a 204 rather than waiting for an empty array. Pull the full order history rather than only the last year: the lapsed decision only needs recent orders, but lifetime spend needs everything. Orders placed at guest checkout are not tied to a customer record, so skip them when matching orders to customers. Money values come back as decimal strings in my store currency, not integer cents.
A customer qualifies if their most recent valid order was between 90 and 365 days ago. Skip anyone who has ordered in the last 90 days, they are still active and I do not want them getting a win-back email. Treat orders that were refunded, partially refunded, cancelled, declined or never completed as invalid, and ignore them when working out both the last order date and the spend totals. Drop any customer whose only orders fall into those buckets. Resolve the status names for my store with Get All Order Statuses rather than hardcoding status IDs. Also require a minimum lifetime spend of $100 so I am not chasing people who bought one cheap item once, and skip customers with no email address on file.
For the customers that pass those filters, use List Order Products to get the line items on their valid orders. From that work out, for each customer: the date of their last valid order, lifetime spend across all valid orders, how many valid orders they placed, their average order value, days since the last order, and the product they bought most often across those orders. Break ties on the most frequent product by whichever they bought most recently. That product is the repeat-purchase recommendation.
Cap each run at 300 customers. If more than that qualify, rank by lifetime spend descending and take the top 300, so the most valuable customers always make it in and the rest get picked up on a later run. Note in the Slack summary when the cap trimmed the list.
For each qualifying customer, call Klaviyo Create or Update Profile (Upsert) matched on email address so I do not create duplicates of profiles I already have. Write custom properties for last order date, lifetime spend, order count, average order value, days since last order, and the recommended repeat-purchase product, and set first and last name where BigCommerce has them. Keep those property names identical run to run so my Klaviyo flow conditions and email templates can rely on them. Then take the profile IDs that come back and call Add Profiles to List against my win-back list, batching the profiles into grouped calls rather than one call per profile. Klaviyo needs a revision header on every request and rate limits profile writes, so pace the calls and back off on a 429 using the Retry-After header.
Finish with a Slack Send a Message to my marketing channel. Tell me how many customers went into the list, the total lifetime revenue that group represents, the average lifetime spend per customer, and a numbered list of the ten highest-value lapsed customers showing name, lifetime spend, days since their last order, and their recommended product. Use Slack mrkdwn formatting, so single asterisks for bold rather than double. If nobody qualified this month, post a short note saying so rather than staying silent.
Treat the 90 to 365 day lapsed window, the $100 minimum lifetime spend, the 300 per run cap, and the destination Klaviyo list as settings I will want to adjust, so keep them clearly defined at the top of the workflow rather than scattered through the logic.
What does this prompt do?
- Looks across your whole store and works out who last bought between three and twelve months ago, so you are only chasing customers who have genuinely gone quiet
- Works out what each one is worth: total lifetime spend, how many times they ordered, and the product they buy most often
- Adds them to your Klaviyo win-back list with all of that attached, so the win-back emails you already built start going out on their own
- Posts a Slack summary with the size of the group, what it is worth in past revenue, and your ten biggest lapsed spenders by name
What do I need to use this?
- A BigCommerce store you can connect
- A Klaviyo account with a list for your win-back audience, and the win-back email flow you want that list to feed
- A Slack workspace and a channel where the monthly summary should land
How can I customize it?
- Change the lapsed window. Three to twelve months is the default, but you can widen either end if your products have a longer or shorter repurchase cycle
- Set a minimum lifetime spend so only customers actually worth chasing get added
- Point it at a different Klaviyo list, post the summary to a different channel, or move the run off the first Monday of the month
- Raise or lower the cap on how many customers can be added in a single run
FAQs
How does it decide someone has lapsed?
Will it email customers who just bought something?
What about orders that were refunded or cancelled?
Does this send the win-back emails itself?
Will it flood my list the first time it runs?
Related templates
See how your brand's news coverage and sentiment stack up against four competitors, then let an assistant write the weekly report for you.
One screen showing every social post waiting on approval, sorted by deadline, so reviewers can approve or reject without leaving the page.
Every Monday, find the past champions and closed-won contacts who changed jobs, update Attio, and get the moves worth chasing in Slack.
Staff submit what happened, your social manager edits the copy, picks the accounts and puts it on the calendar without a single spreadsheet.
Open one board each morning, see which voice calls went badly, replay the exact moment the caller got frustrated, and file the fix.
A personal queue of every overdue Guru card, sorted by how late it is, with one-click verify, reassign, comment, and an agent that drafts the refresh for you.
Stop letting good customers drift away quietly.
Set this up once and every month your most valuable lapsed buyers land in the win-back flow you already built.