E-commerce

How to set up an AI chatbot for repurchasing: timing, triggers, and recommendations?

How to set up an AI chatbot for repurchasing: timing, triggers, and recommendations?

June 30, 2026

Offering a replenishment at the wrong time means losing the customer twice: they ignore the message, and then they buy from Amazon because your reminder arrived too early or too late. An effective repurchase chatbot does not rely on "do you want to reorder?" every time the widget is opened, but on when to propose, what to suggest, and when to keep quiet.

Replenit estimates that individual predictive timing converts at 2.4× the rate of fixed 30-day interval reminders (Replenit, Shopify replenishment 2026). SubSummit distinguishes between reorder agents (no commitment) and Subscribe & Save: the bot must serve both profiles without confusing them (SubSummit, Replenishment Playbook 2026).

This guide #310 covers the AI repurchase chatbot: timing windows, triggers, suppression, and flows. It complements the recurring sales support (#309) with a focus on the AI automation of the reorder proposal timing.

Summary

Why does timing matter more than copywriting on a repurchase bot?

Two clients buy the same 50 ml serum. One uses it in 35 days, the other in 52 days. A fixed D+30 reminder annoys the second and arrives too late for the first, who has already switched to a competitor.

Cost of Poor Timing

  • Too early: spam perception, snooze, replenishment flow unsubscriptions

  • Too late: customer has already repurchased elsewhere, window closed

  • Out of context chat: reorder proposal during a delivery dispute → loss of trust

How AI Changes Things

Bitontree describes the retention agent: week 7 reminder on an 8-week stock, not a generic day 30 (Bitontree, retention agent 2026). reOtter segments reorder reminder, at-risk, and winback based on deviation from the predicted date (reOtter, reorder prediction 2026).

Principle #310

The repurchase bot = window engine + guardrails. The recommendation only appears if the timing score exceeds the threshold and no suppression rule is active.

How does it differ from support #309, history #258, and cross-sell #152?

Five neighboring pieces of content, five bot responsibilities.

Recurring Support (#309)

Recurring Sales (#309): REORDER-INTENT, REORDER macros, human REORDER-POLICY. #310 automates timing and the decision to offer / wait / snooze.

Purchase History (#258)

Bot History (#258): auth, whitelist, trust. #310 uses history to calculate predicted_runout, not just WISMO lookup.

Cross-sell (#152)

Cross-sell (#152): session cart complement. #310: same SKU or consumable routine at run-out time.

Routine / refill

Routine Rec: product intervals. #310: proactive + reactive chat orchestration with suppressions.

Bot AOV (#305)

Bot AOV (#305): bundles, free shipping threshold. #310: reorder first, format upgrade or Subscribe only during peak window and with consent.

Promise #310

REORDER-TIMING model, REPEAT-BOT-INTENT, NO-REORDER-PRESSURE guardrails, triggers, REPEAT-BOT-01 prompt, KPIs.

What REPEAT-BOT-INTENT mapping for the repurchase chatbot?

The REPEAT-BOT-INTENT taxonomy separates customer requests, proactive suggestions, and refusal management.

12 bot repurchase intents

  • repeat_reorder_request: customer asks to reorder

  • repeat_suggest_proactive: bot suggests proactive reorder (peak window)

  • repeat_timing_question: “when should I repurchase?”

  • repeat_not_yet: “I still have some left” → snooze

  • repeat_snooze_chat: postpone reminder from chat

  • repeat_variant_change: same line, other variant

  • repeat_need_change: SKU pivot (evolving need)

  • repeat_subscribe_offer: Subscribe upgrade after 2+ reorders

  • repeat_complement: routine complement (post-reorder only)

  • repeat_decline_stop: stop proposing this SKU

  • repeat_multi_sku: multiple products due in same window

  • repeat_handoff: dispute, recurring B2B, wholesale

Routing priority

Active customer service intent (WISMO, return, complaint) blocks repeat_suggest_proactive. repeat_reorder_request is always served, even outside the window.

How to build the REORDER-TIMING model to decide when to propose?

The REORDER-TIMING model calculates a window per customer × SKU replenishment pair.

Calculation inputs

  • last_order_date + line item SKU

  • days_supply: product metafield or category median (e.g., 42 days)

  • velocity_adjust: deviation vs median if 2+ orders of the same SKU (actual interval)

  • quantity_multiplier: purchasing 2 units = +100% days_supply

Lifecycle windows

  • pre_window: runout - 14 days to - 8 days (no proactive chat, soft email only)

  • peak_window: runout - 7 days to runout + 3 days → repeat_suggest_proactive allowed

  • late_window: runout + 4 days to + 21 days → winback tone, no aggressive upsell

  • dormant: + 21 days without purchase → at-risk, marketing handoff, no 3rd chat nudge

Timing score

Score 0-100: 80+ peak eligible proactive. Replenit: "not too early, not too late" window (Replenit, replenishment agent 2026). Simple formula without ML: score = 100 - abs(today - predicted_runout) × 5, capped at 0-100.

What deletion rules apply before any proactive suggestion?

The reorder suppression guardrails prevent the bot from offering at the wrong time.

10 mandatory suppressions

  1. Same SKU order < 14 days: customer has just purchased

  2. Active subscription on SKU: redirect to sub portal

  3. snooze_until Klaviyo profile not expired

  4. repeat_decline_stop on SKU: 180-day blacklist

  5. Open customer service ticket with dispute / return tag

  6. Recent return of same SKU 60 days

  7. Timing score < 60: no proactive offering

  8. Unauthenticated visitor: no "you often buy..." messages

  9. Non-replenishment SKU: fashion, durable, one-shot

  10. 2 proactive repeat / 30 days max per customer: frequency cap

NO-REORDER-PRESSURE

Guardrails extension #305: never offer reorder after refusal in the same session. Never mix reorder + cross-sell in the same message. Always keep the "not now" option visible. Insider One: customer 51+ days without purchase (30-day cycle) = at-risk, soft nudge, no product reminder (Insider One, lifecycle chatbot 2026).

Which chat triggers to activate for repeat purchases: proactive vs. reactive?

The repurchase trigger orchestrator maps session context to bot action.

Proactive triggers (peak_window + suppressions OK)

  • Customer account /account: "Reorder {sku}" chip if score ≥ 80

  • Return visit D+35-50 post-purchased consumable: 1-line message after 15 s dwell

  • Post-WISMO resolved: if delivered + replenishment SKU + peak → "Need restock soon?"

Reactive triggers (always active)

  • "Reorder my last order" chip for any auth session

  • Incoming repeat_reorder_request intent

  • Replenishment email deep link → pre-filled SKU chat

rePete pattern

rePete sends an SMS/email/on-site nudge when the prediction is ready, with one-click cart (rePete, reorder agent 2026). Chat #310 uses the same SKU and timing, without duplicating the message at the same time as Klaviyo (min 4 h delay between channels).

What conversational flow can be used to offer a repeat purchase without pressure?

The repurchase bot flow follows a fixed sequence of up to 4 steps.

repeat_suggest_proactive flow

  1. Context: "You ordered {product} on {date}. Based on typical usage, you might run out soon."

  2. Choice: buttons [Reorder] [Not yet] [Other product]

  3. Reorder: pre-filled cart link + price + live stock

  4. Not yet → repeat_snooze_chat 2 weeks / 1 month

repeat_reorder_request flow

Skip step 1 if requested by the customer. Lookup last order → confirm SKU → add-to-cart. If variant OOS: repeat_variant_change or substitute.

Conditional Subscribe Upgrade

If SKU orders_count ≥ 3 and not subscribed: after clicking Reorder, non-blocking "Auto-delivery -10%?" footer. Ecommerce Circle: 15% convert on the 3rd reorder (Ecommerce Circle 2026).

How should the REPEAT-BOT-01 prompt and the data signals be structured?

System prompt block REPEAT-BOT-01 250-350 words, extension #163.

Prompt blocks

  1. Role: repurchase assistant, not a pushy salesperson

  2. Signals: predicted_runout, timing_score, window_name, snooze_until

  3. REORDER-POLICY #309: SKU durations, sub upgrade, need_change pivot

  4. Suppressions: list section 5, verify before proactive

  5. NO-REORDER-PRESSURE: max 1 proactive suggestion / session

  6. Handoff: repeat_handoff if wholesale or 3 cart link failures

Shopify sync bot Metafields

replenishment_days, replenishment_eligible, pairs_with_sku. AeroChat: post-purchase bot = usage tips + reorder reminders in the same support thread (AeroChat, repeat sales 2026).

See guidelines (#163), Shopify data (#20).

How to synchronize the chatbot with Klaviyo and replenishment agents?

The sync bot ↔ ESP prevents double nudging and snooze inconsistency.

Data Architecture

  • Shopify orders → predicted_runout calculation (daily cron or Replenit/reOtter webhook)

  • Klaviyo Profile: predicted_reorder_date, timing_score, snooze_until

  • Bot reads the same properties via API or customer sync metafield

  • repeat_snooze_chat → webhook updates Klaviyo + cancels pending flow send

Channel Rule

Email peak D-5 → proactive chat only if email is unopened at D-2 AND score ≥ 85. Stormy AI: sequence T-5 email, T-3 SMS, T-1 push (Stormy AI, replenishment 2026). Chat = fallback channel or inquiry response, not parallel spam.

Subscriber Exclusion

Segment active_subscriber excluded from repeat_suggest_proactive triggers. Bot redirects to subscription support skip/pause intents.

Which edge cases should be handled: multi-SKU, gift, pivot need?

Repurchase bot edge cases require explicit branches in the orchestrator.

Multi-SKU same window

repeat_multi_sku : 2+ products due ± 5 days → one consolidated cart, one "Your complete routine" message. reOtter rollup single event.

Gift purchase

Shipping address ≠ billing or gift tag: do not proactive reorder. Ask "are you buying for yourself?" before suggesting (#258 edge case).

repeat_need_change

Use pivot tree #309 section 7. Bot: 2 questions → new SKU → update replenishment_sku profile → snooze old.

Stock OOS

SKU due but stock is 0: documented substitute + back-in-stock alert, no dead cart link. Replenit pauses OOS triggers automatically.

Which KPIs should be measured for the repurchase bot?

Measure timing and conversion, not the volume of suggestions.

Monthly KPIs

  • repeat_proactive_accept_rate: Recommend clicks / proactive suggestions

  • repeat_chat_cvr: chat repeat attributed orders / auth peak sessions

  • snooze_from_chat_rate: repeat_not_yet + snooze (timing signal to recalibrate if > 30%)

  • repeat_decline_stop_rate: SKU opt-out (suggestion quality)

  • subscribe_upgrade_from_chat: repeat_subscribe_offer conversions

  • suppression_hit_rate: % of sessions where proactive is blocked (rules audit)

  • second_purchase_rate_60d: overall impact of active bot cohort

W+4 Review

Compare repeat_chat_cvr peak vs. late window. Adjust pre/peak boundaries if snooze_rate is high in peak = predicted_runout too early.

How does Qstomy decide when to suggest a repurchase?

Qstomy runs REORDER-TIMING, REPEAT-BOT-INTENT and NO-REORDER-PRESSURE in real time.

Capabilities

  • Calculation of predicted_runout per SKU from Shopify history

  • Orchestrator for 10 rules of deletions in section 5

  • repeat_suggest_proactive and repeat_reorder_request flows

  • Snooze chat → sync Klaviyo profile

  • Pre-filled cart + live stock API

  • Non-blocking Subscribe CTA post-reorder

Quantified DTC Scenario

DTC pet care brand, 8 replenishment SKUs. Before Qstomy: fixed chat reminder at D+30, repeat_proactive_accept_rate 4.2%, repeat_decline_stop_rate 9%. After REORDER-TIMING + deletions: accept_rate 11.8%, repeat_chat_cvr +62%, snooze_from_chat 14% (vs 38%), second_purchase_rate_60d +11 pts over 10 weeks.

See sales agent, Shopify, demo.

Enzo

June 30, 2026

Convert over 2,000 customers on average per month with Qstomy.

The world’s 1st Shopify AI dedicated to customer conversion

Empowering 200+ e-commerce merchants

Subscribe to the newsletter and get a personalized e-book!

No-code solution, no technical knowledge required. AI trained on your e-shop and non-intrusive.

*Unsubscribe at any time. We do not send spam.

Subscribe to the newsletter and get a personalized e-book!

No-code solution, no technical knowledge required. AI trained on your e-shop and non-intrusive.

*Unsubscribe at any time. We do not send spam.