# LoyalFlow > Practical insights on customer loyalty programs, retention strategy, and lifecycle marketing. --- # Omnichannel Loyalty Identifier Linking: Merge Accounts Without Ledger Chaos https://loyalflow.cc/blog/omnichannel-loyalty-identifier-linking The short version: Merging loyalty accounts across retail POS and e-commerce platforms requires an immutable, double-entry points ledger and strict separation between deterministic identity merges and probabilistic marketing attribution. Key takeaways Never mutate balances or change points ledger rows based on probabilistic matches like IP address or fuzzy name. Migrate points balances using zero-sum transfer entries rather than updating foreign keys on historical ledger rows. Isolate payment card token hashes to prevent household card sharing from combining distinct member accounts. Resolve post-purchase guest orders with idempotent link events that enforce earn ceilings and preserve historical tier qualification windows. Design an explicit identity unlinking protocol before enabling account merges so support teams can reverse false matches cleanly. Deterministic vs. Probabilistic Matching: Never Merge Balances on a Guess Engineering teams frequently confuse identity resolution for marketing attribution with identity resolution for currency ledgers. Marketing teams rely on probabilistic models—fuzzy name scoring, shared IP subnets, browser canvas fingerprints, and matching delivery street addresses—to measure campaign reach. Using those same probabilistic heuristics for omnichannel loyalty identifier linking guarantees balance corruption, legal liabilities, and accounting discrepancies. Deterministic linking requires an exact key drop; probabilistic guesses miss the tolerance. A points balance is an accrued financial obligation. Mutating that obligation requires deterministic verification: an exact, authenticated match against verified properties. A verified phone number confirmed via SMS OTP, an authenticated email address confirmed via magic link or password login, or an OAuth federated identity token qualify as deterministic keys. Device cookies, shipping address matches, and name strings do not. Probabilistic signals belong exclusively in an attribution graph used by CRM tools to track purchase journeys. The points engine must interface only with a deterministic identity graph. When an incoming order matches a known member solely on probabilistic signals, link the transaction to the customer profile for reporting, but leave points balance mutations in an unverified holding queue until the customer authenticates. The classic failure: A retailer ran nightly jobs linking guest checkouts to registered loyalty accounts using normalized names and postal codes. Two family members sharing a household and last name had their distinct loyalty profiles merged automatically. The combined account awarded tier status based on pooled spend, allowed one user to redeem the other's points balance without consent, and left engineering with hundreds of tangled ledger entries requiring manual database intervention. The POS Tender Hash Trap: Turning In-Store Payment Cards into Identifiers Retail point-of-sale systems frequently capture credit card authorization tokens, and product teams often attempt to treat this payment token as a persistent loyalty identifier. While tokenized cards allow zero-click identification at the physical counter, relying on them as an account merge key causes severe data integrity failures. Tender tokens dock for payment attribution but stay electrically isolated from core identity. Card networks and payment processors issue tokens that are specific to merchant IDs, but cards are shared across people. Spouses carry cards tied to the same bank account; corporate expense cards pass through multiple employees; consumers regularly cancel lost cards and receive newly numbered plastics. If your service automatically executes omnichannel loyalty identifier linking simply because a payment token appears on two profiles, you create unintended shared pools. To maintain clean isolation while complying with security boundaries outlined in our guide to loyalty program data privacy controls , observe strict rules for payment tokens. Never store raw Primary Account Numbers (PAN); store only a non-reversible cryptographic hash of the processor's terminal token along with the last four digits. Treat a payment token as an identifier hint, never an authoritative account claim. When an unrecognized card token is swiped at POS, prompt the customer on the terminal screen to enter their verified mobile number (in E.164 format). Only when the terminal-entered phone matches the existing profile should the payment token be appended to that customer's payment_methods table as a recognized secondary lookup key. The classic failure: An operator treated payment processor card fingerprints as deterministic identity keys. When an executive handed a corporate card to an assistant for an office supply run, the POS system matched the card token, automatically merged the assistant’s guest profile into the executive’s loyalty account, and exposed the executive’s personal profile details on the printed receipt. Post-Purchase Identity Resolution: The Guest Checkout Link Workflow Shoppers frequently check out as guests using an email address that matches an existing registered member profile. Resolving these guest orders requires an asynchronous, idempotent linking pipeline that prevents duplicate rewards and maintains ledger integrity. When an e-commerce webhook emits an order_completed event for a guest session, the loyalty ingestion worker must evaluate the payload through explicit state checks: First, verify whether the guest email matches an existing member_id in the deterministic identity table. If an active member exists, do not immediately mutate the ledger if the program rewards registration or profile activation milestones. Instead, check the target order ID against the points_ledger table to ensure the transaction has not already issued points. Second, calculate earn points based on the order timestamp, not the reconciliation timestamp. If an order occurred during a temporary multiplier promotion (for example, a 2x holiday weekend campaign), the link workflow must look up the point multiplier active at order.created_at rather than the execution time of the background job. Third, apply fraud caps before writing rows. As documented in our playbook on loyalty program customer service missing-points workflows , unauthenticated claims must be bound by velocity controls. Calibrate your review trigger using your own transaction history: flag any member submitting retroactive claims exceeding twice your 95th-percentile weekly order frequency (or a hard cap of 3 claims per 7-day window if your purchase cycle exceeds 14 days) and route them to manual review. The classic failure: A brand built a "Claim Past Purchases" self-service portal that accepted raw order numbers and postal codes. Attackers scraped sequential order IDs from confirmation URL patterns, ran a brute-force script linking unauthenticated orders to a freshly created member profile, and extracted thousands of dollars in rewards from orders they never paid for. Ledger-Safe Merging: How to Combine Balances Without Mutating History When two distinct profiles (for instance, usr_source and usr_target ) are confirmed to represent the same individual, never execute a database update that modifies historical foreign keys on the ledger. Running UPDATE points_ledger SET member_id = usr_target WHERE member_id = usr_source destroys auditability, breaks past balance snapshot checks, and makes financial reconciliation across past reporting periods impossible. Merging points uses a balancing transfer stroke, never rewriting source history. Maintain an append-only, double-entry ledger. To combine two account balances, execute two explicit clearing entries within a single atomic database transaction: Calculate the settled balance of usr_source . Insert a debit row into points_ledger for that balance with event_type = 'MERGE_DEBIT' and reference usr_target . Concurrently insert a credit row into points_ledger for usr_target with event_type = 'MERGE_CREDIT' and reference usr_source . Finally, set status = 'merged' and merged_into_id = usr_target on usr_source . Route all subsequent lookups on usr_source to usr_target . The zero-sum transfer preserves every historical receipt, earn event, redemption, and return associated with the original profiles. If finance audits the ledger balance for a past quarter, the historical debits and credits balance to the cent without missing references. The classic failure: An engineering team merged accounts by updating foreign keys on historical ledger records. Three weeks later, finance discovered that the previous quarter’s reconciled liability report no longer matched the database. Re-running historical queries against modified account IDs produced conflicting liability totals, requiring an expensive external forensic audit. Handling Merge Conflicts: Tier Demotions, Returns, and Reversals Consolidating profiles introduces non-financial state collisions: overlapping tier statuses, divergent spend progression counters, and post-merge product returns. Inspect our breakdown on loyalty points and return rules to align refund deductions with your core returns policy. For tier status, apply the higher status between the two profiles, setting the tier expiration date to whichever profile held the longer runway. Do not recalculate tier qualifications retroactively across the combined spend history unless your program rules explicitly state that qualifying spend combines during an in-flight evaluation period. If combining qualified spend pushes the merged account over a tier threshold, emit a standard tier-upgrade event idempotently. When a customer returns items from an order placed under usr_source after it has been merged into usr_target , the POS or OMS will submit the return using the original order ID. The returns worker must inspect the referenced order, trace it through the merged_into_id relationship, and deduct points directly from usr_target . If the target's current balance is lower than the refund deduction amount, allow the balance to go negative rather than rejecting the return webhook. Balance recovery must occur naturally against future purchases. Always build an unlinking workflow before shipping account merges. If support determines that an account merge was executed incorrectly (such as an erroneous merge of roommates sharing a landline number), the engine must reverse the clearing entries. Post a debit entry against usr_target equal to the transferred amount, post an offsetting credit back to usr_source , reset the profile statuses, and sever the identity graph link. If either account spent points in the interim, freeze both accounts and flag them for tier-two customer support review. The classic failure: A member returned an expensive item originally purchased under a guest profile that had been merged into their primary account. The returns service looked for the order ID, found an inactive customer record marked as merged, threw an unhandled null-reference exception, and dropped the return webhook. The customer received their monetary refund at the till, but retained the loyalty points on their active profile. Frequently asked questions What should happen if two merged accounts both had an active points expiration countdown? Assign the merged balance to the points expiration window that is most favorable to the consumer (the furthest expiration date), or calculate expiry using the original earn timestamps per lot if your system uses first-in, first-out (FIFO) expiration buckets. Maintain the original batch timestamps within the transfer metadata to prevent points from expiring prematurely right after a merge. How do you handle merge attempts when an account has a negative points balance? Transfer the negative balance using the same zero-sum mechanism. Issue a credit row to clear the negative balance on the source account to zero, and apply an identical debit row to the target account. If combining balances results in an aggregate negative balance on the target account, retain the negative total so points earned on future purchases offset the liability deficit. How should the member profile display historical transactions after a merge? The profile transaction activity feed should query both the target account's native records and all records from profiles listed in its merge history tree. Present merged transactions chronologically in the interface, adding an informational indicator that the activity originated from an associated linked account. --- # B2B Customer Advisory Boards: Run CABs for Renewal Commitments, Not Feature Requests https://loyalflow.cc/blog/b2b-customer-advisory-boards-retention The short version: Most B2B customer advisory boards fail because product teams run them as glorified roadmap focus groups. Treat your advisory board as commercial governance: select budget owners, calendar sessions ahead of contract notice windows, and tie strategic roadmap commitments to multi-year renewal terms. Key takeaways Seat economic buyers with discretionary budget authority, never day-to-day power users or product administrators. Schedule advisory meetings against customer contract renewal dates rather than your internal sprint cycles. Require a named deputy seat in every board charter to prevent renewal collapse when an executive sponsor departs. Trade strategic engineering investment directly for multi-year contract renewals using formal bilateral follow-up memos. Charter the room for commercial governance, not roadmap voting The standard B2B customer advisory board collapses into an unmanageable complaint desk within two meetings. Product teams prepare sixty slides of interface updates, customer leads bring user-level bug lists, and the executive sponsors who actually control the master services agreement stop attending. When a contract renewal lands nine months later, procurement executes an RFP because the commercial leadership never built strategic buy-in. Authority cannot be delegated: seat the signature, not the user. A retention-focused board charter admits only participants with profit-and-loss responsibility or direct contract signing authority. Set clear eligibility thresholds based on your contract tiers: for example, require members to represent enterprise accounts billed at your top contract band (such as accounts over $100,000 annual recurring revenue, replacing this illustrative cutoff with your own top-decile floor). If an invited executive attempts to delegate attendance to an operations manager or functional administrator, decline the proxy and leave the seat empty for that session. An empty chair protects the seniority of the room; a diluted room guarantees the remaining executives disengage. The classic failure: Treating seat invitations as customer appreciation awards. Inviting the friendliest account contact rather than the economic decision-maker creates a council that cannot commit commercial capital, leaving your retention pipeline blind to pending budget cuts. Structure the agenda around market problems and operating economics rather than feature requests. Dedicate the first third of every meeting to macro industry disruptions affecting member balance sheets. Spend the middle block reviewing joint operating efficiencies your software delivered over the preceding two quarters. Reserve the final block for strategic validation, where executives advise on high-level capabilities in exchange for commercial priority. Calendar the council around contract renewal cycles Engineering release cadences and fiscal quarters are the wrong anchors for advisory calendars. If your enterprise customer contracts mandate 60-day or 90-day non-renewal notification windows, holding a council session 30 days before year-end achieves nothing; procurement has already initiated vendor reviews or drafted termination letters. Calibrate your meeting dates against the actual notice periods written into your customer agreements. Timing the council after the notice period fires a mechanism that has already tripped. Map every board member’s contract expiration on a master timeline. A board session must take place at least 120 to 180 days before the earliest notice window of its cohort. If account terms require 90 days written notice to terminate, an executive who experiences your roadmap summit at day 150 remains an active co-designer of your solution when renewal paperwork hits their desk at day 90. To isolate accounts showing operational friction well before this window, pair your board schedule with the predictive indicators outlined in B2B customer health scoring . The classic failure: Presenting prototype demonstrations without economic context. When operators showcase early-stage features without pricing, security impact, or deployment costs, enterprise sponsors default to treating the session as an informal critique session rather than a binding capital commitment. Use a strict pre-meeting delivery rule: distribute the briefing pack exactly five business days prior, containing no more than three operational decisions requiring member counsel. Require attendees to review the materials ahead of time. This eliminates presentation read-outs and protects meeting hours for strategic alignment that makes switching vendors commercially disruptive for the buyer. Neutralize sponsor turnover before departure day Executive sponsor turnover frequently triggers unbudgeted enterprise churn: an incoming leader audits unchosen software, questions historical spend, and issues an immediate cancellation notice. Because the new executive has no equity in your shared roadmap, they view the tool purely as an operational line item ripe for consolidation. Incorporate a formal co-seat provision directly into your customer advisory board charter. When an enterprise executive accepts a board seat, the charter stipulates that their organization also designates an operational successor or vice-chair—such as a senior director or VP-level direct report. This co-sponsor attends working breakout groups, participates in prep sessions, and attends full meetings alongside the primary sponsor. When the primary executive departs, your contract retains institutional memory and an active internal advocate. The classic failure: Scrambling for an introduction after an executive announces their exit. Attempting to build an executive relationship during an interim leadership period almost always fails; procurement controls the account narrative while you lack an internal sponsor. Track organizational movement deliberately. When an executive sponsor transitions to a new enterprise, their existing co-seat assumes the current board seat, preserving the renewal baseline. Meanwhile, your executive team helps the departing leader settle into their new role. When churn does occur despite structural safeguards, document the technical and political breakdowns using the system described in our B2B churn post-mortem workflow to keep product roadmaps from repeating the failure. The post-meeting commitment protocol: Convert feedback into lock-in An advisory board meeting that ends with general applause and vague action items wastes thousands of dollars in executive time. Within 72 hours of adjournment, send each attending executive an individual bilateral summary memo. This document is not a generic meeting minutes email; it is a strategic alignment agreement between your executive sponsor and theirs. Structure the memo with two explicit ledgers: “Requested Strategic Direction” and “Required Deployment Prerequisites.” If a board member advised prioritizing a specific enterprise compliance protocol or ERP integration, record that priority alongside their organization’s commitment to pilot the release, designate testing resources, and evaluate a multi-year agreement upon delivery. For example, if engineering allocates $80,000 in dedicated capacity to build a custom data connector requested by three board members, each participating enterprise commits in writing to run the pilot and begin multi-year extension discussions upon successful acceptance testing. The classic failure: Building board-requested features on open-ended timelines. Engineering ships a complex integration six months later, only to find the requesting client has frozen procurement or consolidated vendors because no mutual milestone bound the work. Store these signed follow-up memos in your customer relationship system under the renewal governance profile. When contract negotiations open, your customer success leadership can reference the specific strategic commitments fulfilled over the preceding cycle. Enterprise buyers cannot credibly demand price concessions or threaten non-renewal when your team has delivered custom-aligned roadmap items under an active bilateral agreement. Frequently asked questions What should you do if an advisory board member consistently pushes tactical bug fixes during sessions? Intervene immediately during the meeting to protect executive peer engagement. Have your moderator acknowledge the issue, assign it explicitly to an offline technical follow-up ticket, and steer the dialogue back to the strategic agenda topic. After the meeting, have your VP of Customer Success call the sponsor privately to reinforce that the council evaluates long-term commercial and operational strategy, directing day-to-day tickets to standard support escalation channels. How many enterprise accounts belong on an effective advisory board? Target an operating cohort of 8 to 12 enterprise member organizations as a baseline rule of thumb for effective roundtable moderation. An assembly larger than a dozen fragments into passive listening, while a room under eight risks stalled discussions if executive travel causes last-minute absences. Calibrate this group size against your executive facilitator’s ability to hold every attendee accountable for active contributions, and split larger client bases into separate regional or industry cohorts. How do you handle direct competitors who qualify for the same council? Never place direct market competitors in the same advisory cohort. Executive sponsors will not speak candidly about capital expenditure, vendor consolidation, or internal bottlenecks in front of a rival. Split competitive accounts into alternating cohorts, or organize boards by complementary, non-competing industry verticals so members share operational challenges freely. --- # B2B Churn Post-Mortem Workflow: Five Product Action Triggers https://loyalflow.cc/blog/b2b-churn-post-mortem-workflow The short version: A B2B churn post-mortem workflow fails when account managers log polite non-answers into CRM dropdowns. For accounts in your top ARR quartile, run neutral, product-led exit interviews and escalate root causes into engineering sprint backlogs using objective revenue-concentration triggers. Key takeaways Exclude sales and customer success managers from the exit interview to eliminate relationship bias and expose structural defects. Replace generic CRM picklists with a five-category failure taxonomy grounded in system logs and technical requirements. Trigger an engineering sprint ticket whenever churned ARR for a single root cause exceeds 1.5× your average contract value or 10% of quarterly churn. Maintain root-cause account IDs to fire deterministic, feature-ship notification loops when bug fixes and capabilities deploy. The post-mortem protocol: Keep account managers out of the room When an enterprise contract cancels, the assigned account team has structural conflicts of interest. Account executives often cite missing features to defend sales execution, while customer success leads cite external budget cuts or leadership turnover to protect retention metrics. Neither role can run an impartial forensic debrief. Forensic isolation: filtering commercial relationship noise to record clean structural truth. Run cancellation interviews using a product manager, technical writer, or dedicated operations lead whose compensation is detached from net retention quotas. Qualify accounts systematically: pull your ARR distribution and interview every departing customer whose contract exceeds your median customer acquisition cost (CAC), or falls into your top quartile of contract values. Frame the session as retrospective architecture discovery: "Your offboarding is complete and commercial terms are closed. Our product team needs to understand where our architecture failed your production workflow." Buyers share precise constraints once commercial friction ends. The standard failure mode: letting the account manager join as an observer. Departing buyers reliably soften criticism to protect personal rapport, masking critical defects behind polite answers like "our strategic priorities shifted." That protective instinct shields engineering teams from the operational failure that drove the cancellation. A contract-level taxonomy: Replace vague exit drop-downs Most CRM configurations rely on generic exit values: Competitor , Budget , Champion Left , or Missing Feature . These labels provide zero actionable telemetry for an engineering sprint. Replace them with five structural failure categories: Replacing subjective exit forms with five deterministic failure channels. 1. Scale breaking points: The platform failed under customer volume limits, such as query timeouts on large tables, concurrency bottlenecks, or batch ingestion delays. 2. Integration failures: Data pipelines failed to synchronize reliably, demanding continuous manual intervention or violating internal audit trails. 3. Workflow mismatch: The tool solved the core problem on paper but imposed operational friction on daily operators, prompting teams to revert to spreadsheets. 4. Governance and security gaps: A non-negotiable compliance, role-based access control, or data residency constraint was absent, blocking enterprise compliance sign-off. 5. Pricing structure misalignment: The commercial model penalized legitimate usage expansion (such as punitive API tiers or rigid seat floors) rather than scaling with realized value. Document every lost account under one primary category. Store the hard technical telemetry alongside the record: error logs, API response payloads, and verbatim debrief quotes. Five triggers that force product action Monthly retention review slide decks rarely change software priorities. An operational post-mortem workflow requires programmatic escalation rules. File an engineering sprint ticket tagged churn-root-cause when an exit profile satisfies any of these conditions: The revenue concentration trigger: A single product root cause accounts for churned ARR equal to 1.5× your average annual contract value (ACV), or more than 10% of your total quarterly churned revenue, whichever is lower. Calculate this threshold from your trailing twelve-month contract ledger. The recurring workflow trigger: Three independent accounts cite the identical integration or interface failure within a rolling 90-day window, regardless of individual contract size. The security compliance blocker: A customer terminates explicitly due to a missing compliance attestation, permissioning boundary, or audit log requirement verified by their security team. The unmonitored silent failure: Forensic review proves a customer departed because of an unalerted platform failure, such as persistent background sync drops that internal monitoring failed to surface. The negative service margin trap: An account's custom workarounds and technical support tickets consumed more internal engineering hours than the gross margin produced by the contract. The typical operational breakdown is filing post-mortem tickets without revenue context. A ticket titled "Support bulk webhook retries" gets delayed across quarters. A ticket titled "Support bulk webhook retries ($92k churned ARR across two accounts)" immediately changes backlog priority. Closing the loop: Recontact churned logos on ship date A rigorous exit workflow doubles as an automated reactivation pipeline. When engineering resolves a ticket flagged with churn-root-cause , query your churn ledger for all customer accounts tied to that failure ID. Re-closing the loop: code ship events mechanically trigger dormant account pathways. Have the original product interviewer reach out with a direct changelog notice: "When you offboarded last year, our API rate limits prevented your nightly data sync. We deployed asynchronous batch endpoints in our latest release. The documentation is here." This message delivers proof of engineering velocity without asking for an immediate sales meeting. Catching operational friction early reduces the volume of post-mortems your product team must run. Pairing this forensic framework with operational signals—such as B2B customer health scoring to build an early warning system —ensures engineering resolves friction before accounts initiate cancellation. Frequently asked questions When should you schedule the exit interview with a departing enterprise account? Send the invitation during the formal offboarding period, calibrated to your access termination schedule—specifically between the contract cancellation notice and the final day of technical tenant access. Sending requests after credentials expire sharply degrades response rates. How do you set an interview target without relying on arbitrary response rates? Establish a coverage baseline grounded in your contract ledger: require completed exit debriefs for any account representing more than 5% of quarterly churned ARR. For accounts below that threshold, send an asynchronous technical exit questionnaire during workspace de-provisioning. How should product managers handle cancellations attributed entirely to price? Compare contract volume against actual telemetry data: pull the ratio of active seats to paid seats, or API consumption against provisioned bandwidth. High price sensitivity in enterprise accounts typically indicates low feature utilization relative to the contracted tier, rather than an arbitrary budget cut. --- # Marketplace Loyalty Programs: Fund Buyer Retention Without Taxing Sellers https://loyalflow.cc/blog/marketplace-loyalty-programs-funding-rules The short version: Run your buyer loyalty program out of your take-rate spread, not total gross merchandise value (GMV), to prevent seller margin compression and checkout ledger drift. Key takeaways Calculate earn liabilities exclusively against platform net take-rate rather than gross merchandise value. Apportion basket discounts across multi-vendor checkouts using item-level proportional settlement to preserve seller net payouts. Isolate platform-wide funded incentives from optional, merchant-funded visibility boosts via distinct balance sheets. Process partial order returns by reversing points proportionally while debiting escrowed receivables to prevent negative customer balances. Take-rate math: Fund earn rates from net fees, not GMV The standard failure mode in two-sided commerce is calculating buyer rewards as a flat percentage of basket spend. A 2% GMV reward on a marketplace collecting an average 12% take-rate consumes 16.7% of platform revenue before payment processing, hosting, and operational overhead. Operators who copy direct-to-consumer point models inadvertently cannibalize their own operating margins while sellers remain entirely shielded or unexpectedly pressured to absorb the difference. Treat customer reward funding as a controlled fraction of platform commission. If your contractual take-rate on an order is take_rate = 0.15 on a $200 basket ($30 gross platform fee), and your retention budget permits allocating 10% of that margin to buyer re-engagement, your maximum allowable reward value is $3.00. Evaluated against GMV, that constitutes an effective reward rate of 1.5%. Express the limit in your platform rules as: max_point_value = gmv * take_rate * loyalty_budget_ratio The classic failure: blending fee categories into a uniform earn rate. If category A yields an 8% take-rate and category B yields a 20% take-rate, issuing a flat 2% GMV earn across the entire cart causes category A orders to run at an operational deficit once payment processing fees hit your balance sheet. Dynamic earn rates pegged to net commission prevent margin erosion on tight-spread SKUs. When managing complex partner economics across distinct balance sheets, you face challenges similar to those found when operators settle partner economics in coalition loyalty programs . Redemption splits: How to allocate multi-vendor basket burn When a buyer applies $20 worth of accumulated reward points against a $100 cart split between Seller 1 ($60 product) and Seller 2 ($40 product), the platform cannot simply let points offset whoever appears first in the payment batch. Doing so damages individual merchant reconciliations and risks violating merchant payout agreements. Points applied across multiple vendors settle proportionately, leaving merchant ledgers intact. Apportion point burns proportionally across all participating sellers in the basket using item-level gross values. Under this rule, Seller 1 absorbs 60% of the platform subsidy ($12), and Seller 2 absorbs 40% ($8). The platform ledger records this transaction as two separate ledger entries: cash collected from the payment gateway and platform loyalty liability absorbed from the central marketing reserve. Each seller receives full contractual remittance: seller_payout = (item_price * (1 - seller_commission_rate)) Sellers must never absorb the discount unless they explicitly funded the campaign. The platform owes the seller the exact agreed cash amount, drawing the discount differential straight out of the accrued loyalty liability ledger. If you mishandle this split, your accounts payable will not reconcile against order records during monthend close. Seller-funded perks vs platform subsidies: Draw the policy boundary Platform loyalty programs operate at two distinct layers: system-wide retention mechanics and optional seller-funded promotions. The platform funds general loyalty tiers, account milestones, and cross-category discovery bonuses because the lifetime retention benefit accrues to the marketplace as a whole. Demanding that third-party sellers subsidize sitewide buyer points causes merchant attrition, particularly among high-volume, low-margin vendors. Platform marketing reserves and seller margins run on strictly separated tracks. Seller-funded perks should operate strictly on an opt-in basis tied to visible ranking boosts, badges, or category placements. If a merchant chooses to contribute an additional 5% reward to repeat buyers through their shop front, that credit must bind exclusively to their store inventory. Isolate the currencies in your transaction engine: platform credits remain universal tender across the catalog, whereas vendor-specific loyalty points act as closed-loop store credits funded directly out of the merchant's net settlement. The edge-case risk: letting vendor-specific discounts spill over to subsidize shipping fees or platform-level service charges. Restrict seller-funded incentives strictly to item sub-totals to prevent the platform from bearing unplanned fulfillment liabilities. Multi-vendor return reversals: Claw back points without negative balances Multi-item checkouts with partial returns frequently break loyalty accounting. Consider a buyer who purchases a $100 jacket from Seller A and a $50 pair of shoes from Seller B, redeeming $15 in points and paying $135 in cash. If the buyer returns the $50 shoes, issuing an unadjusted cash refund or reclaiming points incorrectly creates negative customer balances or distorts merchant accounts. Handled poorly, partial returns quickly escalate into user frustration; displaying these line items clearly inside a loyalty account activity feed is critical to preventing inbound support tickets. Use proportional clawbacks tied directly to the original line item's net settlement. For the $50 item (one-third of the $150 gross basket), calculate the return as one-third of the points redeemed ($5) and one-third of the cash paid ($45). The cash refunded to the payment method is $45, and 500 points ($5 value) are credited back to the customer's loyalty balance. Simultaneously, reverse the loyalty points earned on that $50 line item. refund_points_restored = points_redeemed * (returned_item_value / gross_cart_value) refund_cash_returned = cash_paid * (returned_item_value / gross_cart_value) When the points earned on the returned item have already been spent on a subsequent order, do not drive the customer balance below zero. Instead, deduct the equivalent monetary value from the cash refund total before processing the gateway payout. If the buyer earned 200 points ($2) on the shoes and already spent them, reduce their cash refund from $45 to $43, recording the $2 adjustment against the settled points ledger. Frequently asked questions How do we present platform-funded loyalty discounts on seller invoices? Credit the merchant's accounts receivable for the full item price and debit the platform loyalty reserve for the subsidized discount. If an item sells for $100 and the buyer applies $10 in points, invoice the full $100 gross sale, calculate commission against that $100 baseline, and log the $10 credit as platform subsidy remittance to preserve gross merchant volume for annual tax reporting like 1099-K filings. How should a marketplace handle loyalty points in zero-margin or loss-leader categories? Set categorical earn exclusions in your catalog rules. If gift cards, electronics, or bulk consumables carry a take-rate below 3%, restrict point accrual on those line items entirely or scale the earn rate down to zero while still allowing customers to redeem existing point balances against the order. Does launching a marketplace loyalty program increase seller churn? Seller churn increases only when the platform forces merchants to fund universal program points out of their take-home payouts. When the program is funded entirely out of platform commission reserves and clear reporting shows that gross merchant settlements remain unaffected, merchant churn rates remain neutral. --- # B2B Customer Health Scoring: Build an Early Warning System Before QBRs https://loyalflow.cc/blog/b2b-customer-health-scoring-early-warning The short version: Account manager sentiment hides accounts quietly heading for cancellation until the commercial renewal is lost. Replace relationship guesswork with an objective composite score built on seat utilization, core event velocity, and support ticket age. Key takeaways Subjective green-amber-red status markers reflect account manager optimism rather than client behavior, concealing silent churn until weeks before contract expiry. An objective health scoring engine requires three weighted inputs: provisioned seat utilization, core-event velocity trends, and aging high-severity tickets. Clamping ratio components in standard SQL prevents temporary activity surges from masking unresolved technical blockers. A health drop past your calibrated threshold must automatically trigger adoption audits and workflow reviews 90 days before renewal—long before the QBR. Why Rep Sentiment Fails the Renewal Window Account churn rarely begins with an angry email. It starts quietly when the internal sponsor resigns, teams stop running weekly exports, and active logins decay over months. When your quarterly forecast relies on account manager sentiment fields, those accounts stay marked green because the client still returns polite replies to calendar invites. Polite email threads can mask an account that has already hollowed out from within. By the time an executive sponsor admits in a Quarterly Business Review (QBR) that they are reviewing alternative vendors, the commercial conversation is effectively over. If vendor procurement or replacement evaluations take your clients two to three months, discovering dissatisfaction at day 80 means your team cannot rebuild daily product habits before non-renewal clauses execute. A common failure pattern: a customer success team marks an account green right after a warm check-in call, even while the client's actual weekly active users dropped 40% over the trailing 60 days. The renewal fails, the revenue forecast misses, and the post-mortem blames sudden budget cuts that were already visible in database logs months prior. The Three Objective Inputs for Health Scoring Effective B2B customer health scoring evaluates actual utilization rather than survey responses or executive warmth. You do not need twenty telemetry dimensions. You need three concrete inputs calibrated from your database: Three objective usage inputs keep account health visible before sentiment drifts. 1. Paid Seat Utilization Ratio. Measure active_users_30d / provisioned_seats . If an enterprise client pays for 100 seats but only 34 distinct user IDs executed an action in 30 days, their effective cost per user has tripled. Come renewal, procurement will either slash the tier or demand steep discounts. 2. Core Event Velocity. Every application has one or two actions that define value delivery: processing a payroll run, generating an export, or publishing an automated workflow. Calculate the ratio of core events in the trailing 30 days compared to the account's baseline over the trailing 90 days: events_l30d / (events_l90d / 3) . Set your contracting alert boundary—illustratively 0.70 —by querying the median velocity ratio of churned accounts 90 days before their historical non-renewal. 3. Open High-Severity Ticket Age. Product bugs alone rarely churn engaged teams, but persistent blockers destroy goodwill. Track the count of unresolved tier-1 support tickets open past your agreed SLA window (for instance, tickets unresolved after 14 days). An account with active tickets breaching SLA must incur an immediate score deduction that overrides healthy usage numbers. Much like how lifecycle suppression rules halt promotional messages during service outages, unresolved support friction must cap an account's score. Build the Composite Score: Telemetry and Ticket SQL Logic Do not wait for an expensive customer success platform integration to begin monitoring accounts. You can run this arithmetic inside a standard dbt model or scheduled SQL view that joins workspace telemetry with support ticket records. Use a normalized 0-to-100 index. Clamp individual component ratios at 1.0 so a burst of activity in one area cannot disguise aging blockers. As an illustrative 40/40/20 weighting distribution: health_score = GREATEST(0, (LEAST(seat_ratio, 1.0) * 40) + (LEAST(velocity_ratio, 1.0) * 40) - (aging_tickets * 10)) Applying uncalibrated global thresholds across different contract tiers creates blind spots. A 10-seat firm with 8 active users represents an 80% seat ratio and normal operations. A 1,000-seat enterprise deployment running at 50% utilization often signals widespread rollout abandonment. Pull your alert cut-offs directly from historical renewal distributions segmented by contract size. For accounts running low-overhead software without dedicated account managers, you can adapt these triggers to spreadsheet models as outlined in our guide on churn signals you can catch in a spreadsheet . Once quantitative scoring is established, you can link healthy product milestones to structured contract terms, as covered in our breakdown of B2B loyalty programs designed for renewal . The 90-Day Renewal Trigger and CS Intervention Protocol An automated composite score is useless if it simply populates an unread dashboard. The metric must drive deterministic workflow rules based on the customer contract renewal date. A 90-day breaker snaps automated remediation into motion before the contract lapses. At renewal_date - 90 days , evaluate the 14-day moving average of the account's composite health score. If the score sits below your calibrated warning boundary, execute a mandatory incident sequence: First, lock the account status to at-risk in your CRM, preventing account teams from manually overriding the designation without executive review. Second, generate an automated audit comparing seat assignments against active user departments to isolate which business branch has stopped logging in. Third, initiate a technical intervention focused strictly on adoption bottlenecks and open tickets, bypassing standard relationship check-ins. Firing this alert at 90 days gives your engineering and success teams a usable runway to fix broken integrations, train new staff, or right-size licenses before legal cancellation notices come due. Frequently asked questions How do we handle accounts where seat count shrinks but usage stays high? Seat contractions reduce net revenue retention without showing up as product disengagement. Track seat ratios against the contracted quota. When seat utilization approaches 100% while total contract value downscales, the underlying driver is typically customer budget freezes or workforce reductions rather than software dissatisfaction. What baseline window should we use for seasonal businesses? If your clients operate with seasonal variance—such as e-commerce platforms surging during Q4—a trailing 30-day versus 90-day comparison produces false churn warnings. Replace the 90-day baseline with the same calendar quarter from the prior year: events_q4_current / events_q4_prior . Should NPS survey scores be included in the composite formula? No. Net Promoter Scores measure how an individual user felt at the exact moment an in-app prompt appeared. Folding subjective ratings into a quantitative telemetry score reintroduces the bias the automated diagnostic is designed to eliminate. --- # Gym Loyalty Programs: Reward Attendance Milestones, Not Dollar Spend https://loyalflow.cc/blog/gym-loyalty-programs-attendance-milestones The short version: Traditional points-per-dollar reward schemes fail fitness businesses because recurring subscription revenue already locks in spend, while zero-attendance members churn silently. Effective gym loyalty programs reward verified physical visits, using habit thresholds and low-marginal-cost operational perks to protect contract renewals. Key takeaways Reward workouts, not dues: Collecting subscription billing does not require an incentive; frequent physical attendance is what defends annual renewals. Calculate your retention baseline: Pull your own check-in database to locate the monthly attendance threshold where renewal rates steepen. Deliver zero-marginal-cost utility: Replace cash discounts and retail markdowns with booking priority, guest passes, and locker upgrades. Enforce hardware validation: Block check-in fraud by gating attendance rewards behind physical turnstiles, geofences, and dwell limits. Why dollar-spend points fail subscription fitness Retail loyalty logic breaks when applied to recurring fitness facilities. In retail, visit frequency directly matches cash receipts. In health clubs, studios, and CrossFit boxes, members pay fixed monthly dues regardless of whether they complete thirty workouts or none at all. Pumping points into dormant accounts will not prevent churn when visit volume runs dry. When fitness operators copy standard retail programs, they award points on monthly membership dues or front-desk smoothie purchases. This creates an operational blind spot. An unengaged member paying $120 each month silently accrues points while drifting toward cancellation. At month nine, having skipped the club for ninety days, they realize they have paid $1,080 for unused access. A 10% points rebate on retail inventory will not stop that contract termination. Points awarded on routine subscription billing cost real margin without shifting behavior. Contract renewal correlates directly with visit recency: members with high check-in volume perceive continuous value, while zero-attendance members experience billing as pure loss. Gym loyalty programs must focus entirely on preventing that guilt by rewarding sweat. The check-in threshold: anchor rewards to survival metrics Do not set attendance targets based on arbitrary fitness ideals. You must derive your qualification targets directly from your club's operational historical data. Open your member management software and export member records from the prior twelve months. Cross-tabulate monthly check-in frequency against contract renewal status. In health club datasets, retention curves reveal a distinct kink. For example, members averaging under four visits per month might demonstrate an annual renewal rate of 32%, whereas members who log eight or more visits maintain an 81% renewal rate. Replace these illustrative numbers with your facility's exact records. The gap between your danger zone and your retention cliff is your program's sole operational target. If your facility records show that nine visits per month preserves active membership, your milestone ladder must be engineered to bridge members from five visits to nine. Rewarding a member for their twentieth visit produces community goodwill, but moving a casual member from four visits to eight saves an annual contract. Designing attendance milestones: streaks, visit counts, and low-cost utility Rewarding check-ins with cash credits or discount codes eats gym EBITDA. A functional program uses non-cash operational perks that carry high perceived value for the member but near-zero marginal cost for the operator. Structure your rewards across three mechanics: 1. Cumulative visit milestones. Celebrate durability over time. Mark visit 50, visit 100, and visit 250. Give members earned physical markers: a custom silicone band, an earned locker tag, or a studio milestone shirt that cannot be purchased at retail. The production cost is small (often under $8 per garment), but the public status inside your facility is high. 2. Monthly survival thresholds. Set a monthly target derived from your check-in analysis. Hitting ten verified visits in a calendar month unlocks practical utilities: early booking access for high-demand group classes, free towel service for the following month, or three bring-a-friend weekend passes. These passes cost you nothing if off-peak floor capacity exists, and they double as free customer acquisition channels. 3. Streak preservation. Use weekly consistency targets rather than long, fragile unbroken runs. A requirement of two workouts every week for eight consecutive weeks builds lasting habits. If a member misses a day, their month is not ruined. If an active member suddenly slips below their baseline cadence, catch the drop before they cancel. You can spot these early drop-offs with 3 Churn Signals You Can Catch in a Spreadsheet . The classic failure: rewarding check-in fraud instead of physical sweat The classic failure in gym loyalty programs is treating an unvalidated check-in event as completed exercise. The moment attendance unlocks tangible rewards, human behavior exploits unmonitored touchpoints. Rewards require friction: physical dwell time stops fraudulent points tapping. When studios award points for app-based check-ins without physical validation, members tap the screen from the parking lot or from home. Front-desk staff running busy check-in queues frequently badge friends through without entry, or members scan their QR code, grab a free retail sample, and walk out. These phantom check-ins poison your retention data: your system registers an engaged member, but their physical shoes never hit the floor. To protect the program, implement three strict validation rules: Enforce physical ingress controls. Check-in milestones must fire exclusively from verified gate turnstiles, electronic door strikes, or direct Bluetooth beacons stationed on the training floor. Mobile app geolocation pings alone are too easily spoofed. Validate dwell time through layout constraints. If your facility lacks egress turnstiles, do not force an exit scan that creates front-desk bottlenecks. Validate dwell via secondary in-facility touchpoints: an RFID tap into a class studio, a Bluetooth beacon ping on the strength floor, or an ingress turnstile rule that rejects duplicate check-ins within a 45-minute lockout window. Cap daily qualification. Hard-code your ledger to accept exactly one qualifying attendance credit per member per rolling 20-hour window (or calibrate this window to match your operating schedule). Two visits on a single Saturday to hit a monthly target must count as one workout session for milestone calculations. Frequently asked questions How should we handle attendance streaks during member injury or travel? Build a formal freeze protocol into your tracking ledger. If a member pauses their subscription or provides written notice of injury, freeze their milestone counter rather than resetting it to zero. Resetting a 90-visit streak due to a medical hiatus creates frustration that accelerates permanent cancellation. What percentage of membership revenue should fund milestone rewards? Cap annual perk costs below your marginal cost to acquire a replacement member. If your customer acquisition cost is $180, allocating up to $30 annually in earned physical merchandise and utility perks per active member remains margin-positive if it saves even one renewal per cohort. Can we run attendance milestones without specialized loyalty software? Yes. Most modern gym management software platforms natively track check-in events and member lifetime visits. You can query your member database monthly using simple logic: calculate COUNT(checkin_id) grouped by member_id over the target date range, then apply perks or tier tags automatically via CRM webhooks. --- # Loyalty Account Activity Feed: The UI States That Cut Tickets https://loyalflow.cc/blog/loyalty-account-activity-feed The short version: A loyalty account activity feed cuts inbound support tickets when it renders immutable running balances, signed point deltas, and explicit vesting dates for uncleared points. Omitting adjustments or treating pending points as spendable cash turns standard ledger reconciliation into customer service friction. Key takeaways Every customer-facing row requires five core attributes: transaction date, plain-English reason, signed point delta, post-event running balance, and source receipt ID. Negative balance events such as expirations and return reversals must appear as dedicated debit rows rather than silent aggregate deductions. Pending points require separate visual grouping and an explicit vesting calendar date to prevent checkout failure inquiries. A running balance column transforms disputed ledger math into self-evident arithmetic customers can audit on their own screens. Display every balance movement as a distinct ledger event When a member sees their total drop without a line-item explanation, they treat the missing points as a system glitch. Platforms that process expirations via scheduled database jobs often update aggregate point totals directly on user profile tables without writing visible debit events to the activity log. This silent subtraction triggers immediate customer disputes. Silent deductions break trust; dedicated debit slots make every subtracted point visible. A transparent customer ledger displays four event categories: Earned , Redeemed , Expired , and Adjusted . Retailers that remove expired points overnight must render a dedicated line item showing the exact deduction. Displaying an explicit debit entry clarifies balance shifts instantly and prevents inbound support inquiries. Exposing backend system strings like SYS_DEBIT_RET_CORR instead of consumer-friendly copy confuses shoppers. Rendering Points deducted for returned order #4102 gives members clear context, eliminating unnecessary ticket escalations. The five mandatory fields for every line item Each row in the feed must provide sufficient context for a customer to verify their balance independently. Omitting transaction identifiers or operational context forces front-line support staff to manually research purchase records. Ensure your account interface displays these five attributes on every row: First, the event date , formatted in the member's local calendar convention. Second, an event description naming the specific product purchase, bonus promotion, or adjustment cause. Third, the signed point delta , including an explicit plus sign for credits or minus sign for debits. Fourth, the running balance recorded immediately following that transaction. Fifth, the source transaction ID , such as an online order number or physical receipt identifier. Relying solely on red typography or lighter font weights to convey point subtractions violates basic accessibility guidelines and fails on mobile screens with aggressive color filters. Printing a persistent minus character like -50 ensures point subtractions remain instantly recognizable across all devices. A running balance column ends customer arithmetic disputes Presenting isolated deltas like +100 or -200 forces members to reconstruct months of transaction history mentally. Printing the exact resulting balance alongside every transaction gives the member an immediate paper trail. Running balances eliminate mental math by keeping the baseline anchored to every step. Consider an illustrative account ledger tracking point movements over a month: On May 1, the customer holds an illustrative starting balance of 500 points. On May 10, the member earns 100 points on order #1001, producing a running balance calculation of 500 + 100 = 600 points. On May 15, the member redeems 200 points on order #1050, resulting in 600 - 200 = 400 points. On May 20, 50 points expire, producing 400 - 50 = 350 points. On May 25, support adds 25 goodwill points under reference #ADJ-12, yielding an ending balance of 350 + 25 = 375 points. When these rows display sequentially in reverse chronological order with the resulting balance shown on every line, the member traces the calculation downward: 375 to 350, 400, 600, and 500. There is no ambiguity left to dispute. Pairing this ledger layout with transparent loyalty points returns rules prevents misunderstandings when customer purchases are reversed. Segregate pending points with an explicit availability date Fulfillment intervals, fraud review delays, and return windows often prevent earned points from vesting immediately. Blending unvested earnings into spendable balances creates friction when a member tries to redeem points that the checkout engine blocks. Segregating pending points behind an explicit gate stops customers from spending what hasn't cleared. Display unvested points in a distinct Pending section or label them with a visible badge in the primary feed. Include the calendar date when those points unlock for use. Displaying +150 points (Available on June 14) gives the customer a clear expectation of when rewards unlock. Adding pending rewards directly to top-line header balances while restricting redemption at checkout causes members to assume the cart is defective. Isolating pending points maintains balance clarity across your entire purchase experience. Front-line support macro for balance self-audits When balance inquiries reach customer support, agents can resolve tickets faster by referencing the visible ledger fields. Standardize customer service responses by providing an audit sequence that mirrors the member's account view: 1. Open your account history and find your most recent completed transaction. 2. Check the Balance After Event number shown on that row. 3. Inspect the rows directly beneath that purchase for deductions or point expirations processed during the same billing cycle. 4. Subtract any row displaying a minus sign from the balance above it to trace the running total. 5. Check the Pending Points module to see if recent earnings have an upcoming vesting date. Aligning customer-facing interfaces with documented support procedures reduces resolution times and eliminates repetitive balance research. When balance discrepancies require manual intervention, direct agents to your documented loyalty program customer service resolution path to maintain ledger accuracy. Frequently asked questions How should manual adjustments from customer support appear on the screen? Label the entry with clear copy like Customer Service Credit alongside the operational reference code. If points were credited for shipping delays, write Courtesy credit for delayed order #1082 so the member understands the origin without needing to contact support again. Should order return deductions display on the purchase date or the return date? Record the reversal on the date the return was processed. Modifying historical running balances from the original order date corrupts the chronological audit trail and confuses members who previously reviewed their accounts. How should the activity feed handle multi-currency conversions? Show both the original transaction currency amount and the earned loyalty points on the transaction row. Displaying $50.00 spent (+50 points) eliminates member confusion regarding fractional point calculations on foreign exchange orders. --- # Restaurant Loyalty Measurement: Prove Incremental Profit https://loyalflow.cc/blog/restaurant-loyalty-measurement-incremental-profit The short version: Restaurant loyalty measurement should answer one question: did the program create incremental contribution after reward and operating costs? Identified transactions and redemptions describe activity; mature cohorts and adequately powered holdouts test whether behavior changed. Key takeaways Define the repeat behavior and evaluation window from observed transaction gaps. Report cohort rates only after every included customer completes the full observation window. Size holdouts from baseline rate, minimum detectable lift, confidence, and power—not a fixed percentage. Reconcile reward issuance and redemption deterministically before judging campaign economics. Use incremental contribution, not member revenue or redemption revenue, as the decision metric. Restaurant loyalty measurement starts with a mature cohort Enrollment is an acquisition event inside the program, not evidence of retention. The first useful behavioral measure is usually repeat purchase within a defined period. Calculate it as repeat purchasers / eligible enrolled customers , using completed purchases and documented exclusions for tests, fraud, or cancelled orders. Let the cohort finish the clock before calling the result. Choose the window from your transaction data. Calculate the median and 75th-percentile gaps between first and second purchases for customers with enough follow-up time. If those gaps are 18 and 34 days, a 45-day reporting window is defensible because it covers the observed purchase cycle; 30, 60, or 90 days are reporting conventions, not universal truths. Observation maturity matters. A customer enrolled 20 days ago cannot enter a 45-day repeat-rate denominator. Freeze each cohort until every included member has received 45 days of observation, or use survival analysis if the team has the statistical capability. Mixing immature customers into the denominator depresses recent cohorts mechanically. This failure occurs when a weekly dashboard displays a rolling 90-day repeat rate containing customers enrolled last week. The metric looks current but compares unequal opportunities to repeat. Refresh operational data weekly if useful; release analytical results only when the cohort matures. Identification creates measurement capacity, not profit A scanned app, member account, or phone number connects a transaction to prior behavior. Track identification as identified eligible transactions / eligible transactions . Define eligibility explicitly: excluding marketplace orders may be reasonable when the marketplace withholds a stable customer ID, but excluding low-performing stores merely cleans the result. Do not impose a generic 20% or 40% target. First calculate each store’s identification rate by ordering mode and daypart for four complete trading weeks. Use the current distribution to find operational gaps, then set a target tied to a specific change such as cashier prompting, receipt placement, or digital-checkout defaults. Identification quality also needs controls. Duplicate accounts, recycled phone numbers, shared household credentials, and staff tests can inflate apparent reach or split one customer’s history. Deduplication rules and referential-integrity checks belong in the data pipeline; operators should not resolve deterministic ID conflicts by intuition. This failure occurs when teams celebrate account growth while identified transaction share stays flat. A sign-up incentive may produce accounts that never attach to another purchase. Measure second-purchase rate, duplicate rate, consent status, and identified transaction share beside enrollment. Size the holdout to detect the lift that matters A fixed 5% or 10% holdout does not guarantee a useful test. Required sample size depends on five inputs: baseline purchase rate, minimum detectable effect, confidence level, statistical power, and treatment allocation. Test duration must also cover the purchase opportunity defined for the campaign. Small lift, wide gauge. Consider an illustrative restaurant campaign with a 20% baseline purchase rate over 30 days. Management decides that a lift below 5 percentage points would not cover campaign labor and reward cost. Using a two-sided 95% confidence level, 80% power, and equal treatment and control groups requires approximately 1,100 eligible customers per group, or 2,200 total. This is a planning approximation; verify the calculation with statistical software before launch. Equal allocation is efficient when the audience is constrained and learning matters. A 90/10 split with 2,200 customers leaves only 220 controls, producing much wider uncertainty. Larger audiences can use a smaller control share after the calculation confirms enough absolute control observations. Randomize eligible customers before sending. Record assignment, exposure eligibility, attribution window, primary outcome, and planned test end before viewing results. Keep control customers out of overlapping offers that could change the same purchase outcome. Report the treatment-control difference with a confidence interval, even when the result is inconclusive. Do not stop when early results look favorable. Repeatedly checking and ending a test on a good day raises false-positive risk. Use the precommitted end date unless a safety, deliverability, or material data-quality problem requires termination. This failure occurs when 1,000 recipients receive a 90/10 split against a 20% baseline. The approximate standard error of the purchase-rate difference is about 4.2 percentage points. A measured 5-point lift is only about 1.2 standard errors from zero, so the design cannot support a confident causal claim. Convert measured lift into contribution Redemption revenue is not incremental revenue. Some redeemers would have purchased without the offer. Calculate incremental orders from the randomized difference in purchase rates, then value those orders using contribution after food, packaging, payment, delivery-channel, and other variable costs. Subtract reward cost, messaging cost, and incremental campaign operations. Report both total incremental contribution and contribution per eligible customer. Compare that result with the minimum effect used in the sample-size plan; otherwise the statistical test and commercial decision answer different questions. Reward accounting must reconcile issued, redeemed, expired, reversed, and outstanding units against member and transaction IDs. This is deterministic ledger work. Judgment begins after reconciliation: whether the measured contribution justifies customer fatigue, operational complexity, and future reward liability. Track opt-outs and complaint rates as guardrails rather than burying them inside ROI. A profitable 30-day offer can still damage future addressable reach if message pressure causes unusual unsubscribes. Set guardrails from the channel’s own historical distribution, not an imported universal threshold. This failure occurs when finance divides all member revenue by campaign cost. Members have baseline demand, making the numerator too large. Use the method in How to Calculate Loyalty Program ROI Without Lying to Yourself to keep baseline revenue outside the claimed return. Further reading: www.marketingdive.com Frequently asked questions What should a small restaurant measure first? Start with identified transaction rate and one mature repeat-purchase cohort. Choose the cohort window from observed first-to-second purchase gaps. Add causal campaign measurement only when the eligible audience can support a test with a commercially meaningful minimum detectable effect. What if the audience is too small for a powered holdout? Do not claim causal lift. Run a 50/50 pilot to maximize information, extend the test across comparable periods, or aggregate multiple locations while preserving random assignment. Report the result as directional when uncertainty remains wide. Should referrals count as loyalty-driven acquisition? Track them separately. Loyalty can measure repeat behavior among identifiable customers; referrals measure new-customer acquisition through existing relationships. Different denominators prevent cheap sign-ups from being mistaken for retained customers, as covered in Referral vs Loyalty Programs: Separate Jobs, Separate Math . --- # Loyalty Status Match: Qualification, Duration, and Test Rules https://loyalflow.cc/blog/loyalty-status-match-rules The short version: A loyalty status match should buy a controlled acquisition trial, not permanent entitlement. Verify applicants, cap costly benefits, require earned renewal, then test incremental contribution margin with a prespecified sample and analysis date. Key takeaways Map accepted competitor tiers to temporary tiers before promotion. Use seeded boundary cases to test every approval, rejection, and duplicate path. Set status duration from one or two normal purchase cycles; label calendar ranges as test choices. Renew only through normal earned-tier rules. Size the holdout from margin variance and the smallest lift worth funding. Set loyalty status match qualification rules first Status matching is paid acquisition wearing a loyalty badge. Competitor status suggests prior value; it does not prove future spend will move to you. Write the eligible cohort, enrollment dates, accepted tiers, benefit package, success event, cost ceiling, and evaluation date before applications open. Status claimed; evidence required. Publish an exact tier map. Each accepted competitor tier should map to one temporary tier, with no discretionary upgrades by support. Require evidence showing competitor, tier, member name, and current validity date; retain the file, application timestamp, decision, reason code, and reviewer ID. Match the submitted name against the verified account identity. Route name changes and ambiguous evidence to manual review. Keep arithmetic, duplicate checks, expiry validation, and exact identity-field comparisons deterministic; human judgment belongs only on evidence the rules cannot resolve. Define repeat handling before launch. One match per verified person per 24 months is an illustrative anti-repeat rule ; replace 24 months with a period covering enough purchase cycles to prevent serial trials. Check normalized email, phone, customer_id , prior match history, and payment token where collection and reuse are permitted. Use fixed rejection codes: expired status, ineligible competitor, ineligible tier, identity mismatch, unreadable evidence, duplicate application, or suspected alteration. Review counts and rates by code, because 40 identity mismatches mean little without the application denominator. Qualification failure: testing reviewers on 10–20 naturally selected applications. At 1% abuse prevalence, 10 cases have only about a 9.6% chance of containing one abuse case; 20 cases reach about 18.2%. Instead, create 10–20 seeded boundary cases covering every rejection code, altered proof, duplicate path, valid name change, and unreadable file. Have two reviewers independently decide every seeded case. Require 100% agreement with deterministic rules; any disagreement means the instructions are unfinished. For judgment cases, record disagreements, settle the rule, then rerun the full pack before promotion. Cap duration, benefits, and renewal exposure Temporary status needs an explicit start date, end date, and renewal requirement in the approval message. A 90–180-day window is an illustrative operating range , not a performance benchmark. Choose a window covering one or two normal purchase cycles, using your own reorder distribution rather than a convenient quarter. Borrowed status should come with a meter. Do not copy every benefit from an earned top tier. Separate low-variable-cost access benefits from direct-cost benefits such as free shipping, lounge entry, upgrades, gifts, or accelerated rewards. Cap or exclude expensive benefits until the member produces contribution-positive behavior. Set expected cost per approval before launch. If finance permits $30 of acquisition cost per approved member, rewards, shipping, service time, fraud, and expected returns must fit inside that amount. The $30 is illustrative; derive the real ceiling from your acquisition payback rule and expected incremental contribution margin. Add controls that can actually fire: one trial per verified person, no retroactive benefits, no employee stacking, and transaction-level limits on costly perks. Track total benefit cost, cost per approved member, and cost per eligible customer. Each denominator answers a different question; dropping unsuccessful applicants hides acquisition friction. Renewal should use the normal tier currency: qualifying spend, nights, trips, orders, or another existing earned behavior. If the standard tier begins at a spend percentile, apply the same placement logic to matched members. Loyalty Tier Thresholds: Set Them With Spend Percentiles shows the threshold-setting method. Show qualifying progress, required amount, deadline, and excluded transactions. Midpoint, 30-day, and 7-day reminders are illustrative checkpoints ; retain only messages that improve profitable completion in a controlled lifecycle test. Exposure failure: automatic renewal after one expensive benefit or one discounted order. That turns a bounded acquisition cost into continuing subsidy. Keep the promised threshold fixed for the active cohort, expire non-qualifiers, then change rules only for later cohorts. Make the incremental-margin test capable of answering Randomize at the unit receiving the offer. Usually that is the verified customer account; use household assignment when household members can share benefits. Assign eligible units before promotion, commonly 50:50 for statistical efficiency, and retain every assigned unit in its original arm for analysis. A useful test can find the lift worth funding. Define one primary metric: contribution margin per eligible assigned customer through a fixed date. Include product cost, discounts, rewards, shipping subsidies, payment fees, service cost, fraud, and returns. Record revenue and activation as diagnostics, not substitutes for the primary metric. Choose the smallest lift worth funding, called the minimum detectable effect. Derive it from the acquisition hurdle: if less than $8 incremental margin per eligible customer would not justify rollout, use $8 rather than hunting for any positive result. Estimate margin variance from a comparable historical population over the same observation window. For a 50:50 test using a two-sided 95% confidence level and 80% power, an approximate sample per arm is 16 × variance ÷ effect² . These are common testing conventions, not mandatory standards. If historical margin has a $60 standard deviation and the target lift is $8, the estimate is 900 eligible customers per arm: 16 × 3600 ÷ 64 . Predefine exclusions narrowly: confirmed test accounts, staff accounts if ineligible, and records corrupted before assignment. Do not exclude non-applicants, rejected applicants, inactive approvals, returners, or suspected low-value members after seeing outcomes. Report cross-arm benefit use as contamination; analyze by original assignment rather than moving customers between arms. Set one fixed analysis date after the chosen purchase-cycle window. Do not stop when results first look favorable. If the planned sample is incomplete, extend enrollment without inspecting treatment results; if the full sample remains unavailable, report the test as underpowered rather than declaring no effect. Use the difference in mean contribution margin per eligible assigned customer and a 95% interval calculated with a method suitable for skewed margin data, such as a customer-level bootstrap. Prespecify the method and treatment of extreme values. Arithmetic belongs in the ledger; interval estimation belongs in statistical software. Set the loss floor before launch. An illustrative decision rule: stop if the interval’s lower bound falls below −$5 per eligible customer and finance defines that downside as unacceptable; scale only when the estimated lift clears the acquisition hurdle. Replace −$5 with your risk limit. If randomization is impossible, fix a comparison method before outcomes arrive: match on pre-period spend, frequency, geography, and acquisition timing; require overlapping values in both groups; report standardized pre-period differences; reject the design when important variables remain materially imbalanced. Run sensitivity checks with at least one alternate matching specification. Matching reduces visible differences; it does not remove unmeasured selection. Measurement failure: waiting 180 days, then calling an unresolved interval evidence of no impact. Time creates observations, not statistical adequacy. Preserve the eligible-customer denominator, complete the prespecified sample, and apply the baseline discipline in How to Calculate Loyalty Program ROI Without Lying to Yourself . --- # Franchise Loyalty Programs: Set 5 Rules Before Launch https://loyalflow.cc/blog/franchise-loyalty-programs-launch-rules The short version: Franchise loyalty programs need five binding operating rules before launch: funding, customer-data rights, franchisee participation, redemption settlement, and dispute resolution. Put each rule into the operating agreement, ledger design, and launch checks before points accrue. Key takeaways Assign every program cost to a named payer and accounting event. Define permitted data uses, access roles, retention, and exit treatment. Test participation and online attribution with synthetic transactions before launch. Settle redemptions from transaction-level ledger entries, not summary invoices. Give disputes evidence requirements, deadlines, escalation, and linked adjustments. Rule 1: Assign every franchise loyalty program cost Model the program per $100 of member spend before enrollment opens. An illustrative scenario might contain $2 of issued value, $1.50 of expected redemption cost, $0.20 of platform cost, $0.15 of administration, and $0.15 of promotion funding. Replace those figures with your reward economics, vendor contract, redemption forecast, and labor cost. Every cost needs somewhere definite to land. Assign a payer for issuance, redemption reimbursement, software, payment fees, bonus campaigns, customer support, fraud, expired balances, and central administration. State whether each cost follows the earn location, redeem location, transaction channel, or campaign sponsor. Funding failure: head office calls a double-points offer centrally funded but reimburses only redeemed face value. Franchisees still carry staff time, payment fees, tax treatment, and substituted product margin. Require a funding sheet naming the sponsor, eligible transactions, reimbursement basis, tax treatment, budget cap, and stop date. Review actual cost after an illustrative 30 days for a high-frequency brand or after one measured repurchase cycle for a slower category. Do not use breakage as a balancing plug. Estimate it by issue cohort after balances have had enough time to expire or redeem; a 12-month expiry policy cannot produce a mature breakage result after 90 days. Use the method in loyalty program breakage measurement before booking the benefit. Rule 2: Define customer-data rights by purpose “The franchisor owns the customer” is not an operating rule. Specify collection authority, applicable controller or business roles, permitted central uses, permitted local uses, territory access, retention, deletion, portability, security duties, breach handling, and post-termination treatment. Data access should fit the purpose—nothing broader. Give each location only the access required for fulfillment, refunds, support, and accounting. Store staff might see identity and service fields; local managers might access approved territory audiences; central teams can administer consent, suppression, and network reporting. These roles are illustrative and must match the actual operating model. Access failure: a departing franchisee exports the member file because the agreement covers POS records but not loyalty profiles. The reverse also fails: immediate removal blocks valid refunds and accounting work. Set retention from legal, tax, chargeback, and operational requirements that counsel can verify. Record consent source, timestamp, notice version, and permitted channels. Set an internal target for access removal after termination, such as 1 business day; this is an illustrative security target, not an industry benchmark. If data goes to a loyalty platform, email provider, or analytics vendor, customers’ identifiers, transactions, profiles, or campaign activity may be disclosed to that vendor for processing. Document the fields, purpose, location, retention, subprocessors, and contractual controls. Rule 3: Fix participation and attribution before checkout Choose mandatory or optional participation before selling the program internally. Mandatory participation needs authority in the franchise agreement. Optional participation needs enrollment windows, minimum commitments, signage duties, training, technology checks, and exit rules. An illustrative exit rule is 90 days’ notice plus 60 days of redemption support for previously issued rewards. Replace both periods with figures supported by customer terms, repurchase timing, and system-change lead time. Online orders need explicit revenue, point-funding, redemption, and reversal owners. Define those owners for store pickup, delivery, split fulfillment, gift cards, returns, and reassignment after checkout. Attribution failure: an order earns against head office, is fulfilled by one franchisee, then returned to another. Three entities record different liability because only completed store purchases were tested. Run one synthetic transaction for each flow before launch. For every case, record the expected revenue owner, funding owner, ledger entries, and reversal entries. Pass only when each transaction ID appears in the expected accounts, debits equal credits, and unmatched IDs equal zero; these are deterministic accounting and integrity checks, not judgment calls. Maintain one effective-dated location registry with participation status, territory, channels, settlement account, and entry or exit dates. Block point issuance when a required field is missing or the transaction date falls outside the participation dates. Rule 4: Settle cross-location redemptions from the ledger Every redemption needs linked entries for earn-side liability release and redeem-side reimbursement. Store transaction ID, member ID, earn location, redeem location, points, monetary value, timestamp, status, sponsor, and reversal reference. The transaction ledger—not emailed summaries—must drive settlement. A redemption crosses safely when each transaction supports it. Set reimbursement explicitly. If 500 points equal a $5 reward, reimbursing $5 protects the redeeming location’s revenue; reimbursing less assigns part of the promotion cost to that operator. An illustrative schedule closes at month-end, issues statements within 5 business days, accepts disputes for 10, then pays within 15. Replace those periods with the finance close and franchise agreement. Reconciliation failure: total points and total reimbursement dollars match while duplicate entries at one location offset missing entries elsewhere. Reconcile transaction ID, location, value, status, and accounting period; report unmatched entries as both a count and a percentage of all entries. Use an explicit reserve calculation: reserve = lag outflows + unpaid disputes + default exposure - recoverable netting . Derive lag outflows from the trailing periods matching the current settlement window. Default exposure needs named operators, documented balances, and expected recovery—not a blanket percentage. Reconcile the reserve monthly. Keep that cadence until a full category-specific seasonal cycle is observed; define the cycle from demand history, such as 12 months for an annual holiday peak. Then retain or change the cadence based on measured volatility. Rule 5: Make loyalty disputes finite Disputes need an intake channel, required evidence, filing deadline, response deadline, escalation owner, and final decision owner. Define eligible evidence: transaction ID, receipt, timestamp, location, member ID, reward value, status, and relevant system logs. An illustrative process allows filing within 10 business days of the statement, an initial response within 5, and a final decision within another 10. Replace those cut-offs with periods supported by statement delivery, record availability, and finance-close timing. Dispute failure: finance edits a settled redemption in place after a franchisee emails a screenshot. The original history disappears, settlement no longer reproduces, and the next reconciliation cannot distinguish correction from tampering. Never overwrite settled entries. Approve or reject against the original transaction, then post a linked reversal or credit with decision date, reason code, evidence reference, amount, and approver. A dispute passes control review only when the original entry remains intact and the adjustment appears in the next settlement period. Set escalation by value or contractual risk. An illustrative boundary might send disputes above $500 to finance leadership; replace it with your documented materiality threshold. Review monthly counts, disputed value as a percentage of settled value, resolution time, reversals, and repeat causes. Once these five rules are executable, validate whether the economics deserve launch using How to Calculate Loyalty Program ROI Without Lying to Yourself . Frequently asked questions Should franchisees be allowed to opt out? Only when the customer promise supports inconsistent participation. Publish participating locations, block invalid earning and redemption, enforce notice, and settle balances before exit. Who pays for a centrally funded promotion? The named sponsor pays every cost assigned in the campaign funding sheet. Define reward reimbursement, payment fees, taxes, product subsidy, support, and fraud; “centrally funded” alone settles nothing. Should franchisees access customers outside their territories? Restrict access to documented fulfillment, refund, support, or accounting needs. Broader marketing access requires an approved purpose, valid permission, territory rules, and centrally enforced controls. How should disputed redemptions be corrected? Preserve the settled entry. Post a linked reversal or credit containing the evidence reference, reason, amount, date, and approver; include it in the next settlement statement. --- # Loyalty Program Mobile App: Four Tests Before You Build https://loyalflow.cc/blog/loyalty-program-mobile-app-tests The short version: Fund a loyalty program mobile app only when combined evidence supports repeated utility, retained adoption, and incremental profit. Weak purchase frequency can be offset by useful between-purchase tasks; a balance-only proposition cannot. Key takeaways Purchase frequency sets usage opportunities, not an automatic pass-or-fail threshold. Native development needs a repeated task that mobile web or a wallet pass cannot handle adequately. Measure activation and early use during a prototype; continue the cohort through day 90 for retention. Size any commercial holdout before launch. A beta of hundreds cannot detect a small purchase-rate lift. Credit only incremental contribution and measurable service savings against total channel cost. Test one and two: frequency plus persistent utility Start with observed purchase intervals. A weekly buyer creates roughly 52 annual purchase occasions; a quarterly buyer creates four. Frequency creates chances to use the app, but it is not an independent veto: infrequent purchasing can still support native software when customers repeatedly manage bookings, delivery, service, tickets, or status between transactions. Rare purchases can still support a habit between transactions. Build cohorts from members whose observation window is complete. For each category, derive the normal reorder window from your own distribution—for example, the median days between first and second purchases among customers who did reorder. Include only customers with enough elapsed time to reach that window; otherwise recent recruits are incorrectly counted as failures. Calculate second_purchase_rate = eligible_second_buyers / eligible_first_buyers . Repeat for the third purchase, using second-time buyers with a complete third-purchase window as the denominator. Compare acquisition cohorts and categories rather than hiding different buying cycles inside one average. Enrollment illusion: a sign-up discount can produce members without producing a repeat habit. Downloads divided by everyone ever enrolled compounds the error. Use retained activated users divided by eligible active members, then define the behavior first with Customer Loyalty Program: Define the Repeat Behavior First . Next, write the top three customer tasks. A balance-only app offers no task unavailable through lower-friction channels. Native becomes defensible when device integration materially reduces repeated effort: stored payment, order-ahead, scanning, live delivery, ticket storage, location-aware service, or authenticated account management. Estimate useful sessions over 90 days. Three non-promotional sessions is an illustrative screening threshold, not an industry benchmark; replace it with repeat usage from your mobile account or ordering flow. Count completed customer tasks, not app opens or passive balance views. Category-copy failure: a coffee app supports frequent ordering and payment. Furniture, jewelry, or annual travel may not offer the same repeated job. Copying the interface does not copy the usage economics. Test three: model retained adoption, not downloads Build the funnel before commissioning designs: eligible active members, reachable smartphone users, store-page visitors, installs, completed logins, first useful actions, then retained users. Keep a denominator for every stage. Cumulative downloads cannot show activation failure or user decay. Downloads arrive; retained users are what remain. An illustrative plan might start with 100,000 active members, 80,000 reachable users, 20,000 store-page visitors, 12,000 installs, 8,000 activated accounts, and 4,000 retained users at day 90. These figures are assumptions, not benchmarks. Replace them with mobile traffic, campaign reach, login completion, task completion, and cohort retention from your operation. Use a mobile-web prototype or limited beta for one complete expected-use cycle, with 4–6 weeks as an illustrative planning range for weekly or monthly tasks. During that phase, measure activation, task completion, early repeat use, errors, and support contacts. Continue observing the same cohort through day 90 before claiming 90-day retention. Set advancement criteria from an existing baseline. If 55% of authenticated mobile-web users complete the task today, the prototype should beat that rate or provide a measurable benefit such as lower completion time or fewer support contacts. Reported objections explain what participants say; observed completion and repeat behavior show what they do. Beta overclaim: hundreds of participants can expose usability defects but may not detect commercial lift. For research recruitment, incentives, and interpretation, use Customer Beta Testing: Pay for Research, Not Loyalty . Choose native, mobile web, or a wallet pass by task Choose native when repeated tasks require device integration such as stored credentials, scanning, location, biometrics, offline tickets, or dependable event alerts. Budget for two operating systems, release review, SDK updates, accessibility testing, analytics, authentication, security review, account recovery, and ongoing support. Choose mobile web for enrollment, balance checks, reward redemption, preferences, and occasional purchases. It reaches customers from email, SMS, search, receipts, and QR codes without installation. Use your normal web delivery estimates rather than a generic cost ratio; scope and existing infrastructure determine the gap. Choose a wallet pass when the job is identification, status display, a barcode, or a timely credential update. Confirm that enough eligible customers use the supported wallet platforms, then test update speed and barcode compatibility. A wallet pass cannot replace ordering, payment, tracking, or complex service workflows. Channel-first failure: declaring “we need an app” turns the channel into a requirement. Write three tasks, identify required device capabilities, then choose the lightest channel that completes those tasks reliably. Test four: prove incremental contribution App revenue is not app impact. Randomly assign eligible members to app promotion or no promotion at the customer level, keep assignment fixed, and analyze everyone as assigned. Prevent obvious contamination by suppressing control members from app-specific email, SMS, receipt, and in-store prompts. Credit the app only for the value left after the noise washes away. Choose one primary metric and analysis window before launch—for example, contribution per eligible customer over one complete reorder cycle. Use lift = treatment_rate - control_rate , then subtract discounts, rewards, payment fees, fulfillment, returns, and variable support costs. Add only service savings tied to measured reductions in calls, check-in time, or physical-card replacement. Size the holdout for the minimum lift worth funding. As an illustrative calculation, detecting a purchase-rate change from 10% to 11% needs roughly 15,000 people per arm at 80% power and 5% significance. Recalculate using your baseline, acceptable error rates, expected attrition, and chosen metric; do not copy that sample size into a different program. Add design, engineering, QA, analytics, security, launch promotion, maintenance, migration, and account recovery. Use the investment horizon required by finance. A 12–24 month view is a planning convention, useful because launch cost precedes retention evidence, but your company’s hurdle remains the approval boundary. Selection-bias failure: adopters may already have higher pre-launch value, so comparing app users with non-users mislabels existing spend as impact. Randomized eligibility and intent-to-treat analysis preserve the comparison. If native fails the contribution hurdle but mobile web passes, ship mobile web. Build the full model with How to Calculate Loyalty Program ROI Without Lying to Yourself . Frequently asked questions How many active members justify a loyalty app? No universal count works. Model retained activated users, incremental contribution per eligible member, fixed cost, and the sample required to detect your minimum worthwhile lift. Should a small business build a native loyalty app? Business size is not the deciding variable. Prove a repeated task through mobile web or an existing commerce app, then fund native only when device integration improves completion, retention, service cost, or contribution enough to clear the investment hurdle. Can push notifications justify an app? No. Push distributes information; it is not persistent utility by itself. It supports an app when tied to useful events such as pickup readiness, ticket changes, delivery progress, or time-sensitive account updates. --- # Loyalty Points and Returns: Refund and Exchange Rules https://loyalflow.cc/blog/loyalty-points-returns-rules The short version: Loyalty points and returns must follow the original transaction, not current earn rules or agent judgment. Link every reversal to its source, test each return path, recover spent points consistently, and cap manual adjustments with a value-based formula. Key takeaways Link every earning, redemption, refund, and exchange event to its original order and line item. Reverse points using the original eligible value, discount allocation, earn rate, and rounding rule. Replay every refund message during testing; the second attempt must create zero ledger events. Set negative-balance floors from segmented exposure data plus a plausible open-order stress case. Cap goodwill points by disputed loss, target recovery value, and staff authority. Loyalty points and returns need source-linked reversals A return is not a new loyalty calculation. It reverses economic events from a specific order. Store immutable ledger entries for earn , redeem , refund , exchange , expire , and adjustment , each with an event ID, member ID, order ID, line-item ID, points amount, currency amount, timestamp, and reason. Never overwrite the original earning. Post an equal or proportional reversing entry linked through source_event_id . Enforce a unique idempotency key for each source refund event so retries cannot subtract points twice. For a partial return, use the returned line’s original eligible value after allocated discounts. If 200 points came from $100 of eligible spend and the returned line represented $30, reverse 60 points. Preserve the original earn rate and rounding method even if either has since changed. Order bonuses need separate source links. A 500-point threshold bonus reverses only when the returned value makes the original order ineligible under the offer terms. Define that condition before launch. Failure mechanism: recalculating the remaining basket under current rules creates drift when promotions, rates, or rounding change. Ledger reconciliation is arithmetic. Keep it out of agent workflows. Run a 12-case refund and exchange test Build acceptance tests from transactions your checkout can actually produce. Twelve cases form a starting checklist, not an industry threshold. Each test needs the source order, expected cash refund, expected ledger entries, resulting balance, and event count after replay. Every return path should fit before launch. Cases 1–3: A full return reverses all merchandise earnings and restores any allocated reward. A one-line partial return reverses only that line’s allocated points. A partial return from an order-level discount uses the commerce ledger’s original line allocation, commonly proportional allocation by pre-discount value. Cases 4–6: An even exchange with unchanged price and eligibility preserves the original earning. A higher-value exchange adds points only on incremental eligible spend. A lower-value exchange reverses points only on the refunded difference. Cases 7–9: A refunded shipping charge reverses zero points when shipping was ineligible. A refunded taxable line reverses merchandise points without treating tax as eligible spend when tax was excluded originally. A mixed-tender refund separates payment routing from loyalty math; card versus store-credit repayment does not change the line’s original earnings. Cases 10–12: An item bought during a bonus event retains the original bonus treatment during an equivalent exchange. A return that drops the order below a promotion threshold reverses the linked threshold bonus. A duplicate refund message is processed twice; the first attempt posts the expected reversal, while the second creates zero new events and leaves the balance unchanged. Add cases for gift cards, bundles, subscriptions, split shipments, or marketplace sellers when those paths exist. Do not test features the business does not offer. Failure mechanism: documenting full refunds while leaving exchanges undefined lets identical commercial outcomes produce a reversal, a fresh award, or no event. The acceptance matrix removes that discretion before customers expose it. Recover spent rewards and set adjustment limits When returned goods were bought with a reward, restore the reward value allocated to those goods. If a $10 reward funded part of an order, refund cash only for the amount paid and restore the applicable reward portion under the published terms. Partial returns must use the same line allocation applied at checkout. Pull rewards back, but stop adjustments at the limit. If earned points were spent before the return, allow a disclosed negative balance rather than denying a valid refund. Future earnings can repay the deficit before becoming available. Do not erase the deficit merely because the customer objects. Set the negative-balance floor from a trailing 12-month exposure distribution where a full year captures the business’s normal seasonality; use a longer period when purchase cycles exceed one year. Segment transactions by earn regime and point value, then choose a legitimate-reversal percentile matching your tolerance for manual review. The percentile is an operator-selected risk boundary, not a benchmark. Stress-test that floor against the largest plausible reversal from currently open orders. Use the stricter exposure as the review boundary, then reassess quarterly or whenever point value, earn rates, or return terms change. A floor such as -5,000 points remains illustrative; replace it with your ledger data. Restored points should not expire before customers can reasonably reuse them. Use the later of the original expiry date or an illustrative 30-day service window; extend that window when normal purchase intervals exceed one month. Manual adjustments need executable limits. Convert target recovery value into points with target_value / point_cost , then cap the award at the lower of that result and the customer’s documented disputed loss. If one point costs the program $0.01, a $20 recovery target produces a 2,000-point ceiling; a documented $12 loss lowers the cap to 1,200 points. Create authority tiers from actual service-recovery values. Illustrative limits: agents may issue up to $10 of point cost, managers up to $50, while larger awards require finance or program-owner approval. Replace those figures with your approved compensation limits. Log the calculation, reason code, approver, and any override; review totals weekly during the first four launch weeks, then choose a cadence based on observed volume and variance. Failure mechanism: an undefined goodwill cap turns equivalent disputes into different awards. A formula limits the amount; authority tiers control who can approve it. Separate abuse review from routine execution Process a policy-compliant return unless an existing account hold has a documented basis. Deterministic checks should detect duplicate refund IDs, impossible refund totals, and repeated event keys. Human reviewers should assess ambiguous account patterns. Possible review triggers include points spent before repeated full returns, cumulative refunds exceeding purchases after exchanges, or linked accounts cycling the same merchandise. Derive thresholds from a fixed evaluation window and comparable customers. An illustrative trigger is the 99th percentile of 90-day return value among active purchasers in the same channel, provided the denominator includes customers with a real opportunity to return. Require a minimum transaction count before rate-based flags can fire; choose it from false-positive testing on your data. Back-test candidate rules against reviewed cases, record how many accounts they flag, and sample both flagged and unflagged accounts so false negatives remain visible. A trigger starts review, not an accusation. Failure mechanism: asking frontline staff to infer fraud during a return produces inconsistent decisions and poor evidence. Software handles identity, arithmetic, and duplicate detection; trained reviewers handle intent and context. Explain every balance change Return confirmations should show original points earned, points reversed, rewards restored, resulting balance, and expected posting time. Use the same ledger description in receipts, account history, email, and service tools. A balance makes sense when every ring remains visible. If loyalty events settle separately from cash refunds, publish a measured window. A stated 24–72 hours is defensible only when processing data supports it. Measure reversal-related contacts per 1,000 completed returns before and after itemized messaging; the denominator matters because raw contact counts rise with return volume. For related financial controls, use Loyalty Points Liability: Build Controls Before Campaigns . Frequently asked questions What happens when a return arrives after a promotion ended? Reverse the earnings created by the original promotion. For an equivalent exchange, preserve the original award; apply current rules only to genuinely incremental spend. What happens when points from the purchase already expired? Reverse the original earning without reversing the later expiry twice. Link the return to the remaining balance effect and retain any non-balance-affecting remainder for audit. Can loyalty return rules apply retroactively? Apply new rules prospectively. Use the terms presented for earlier purchases unless correcting a calculation defect; preserve both ledger entries and explain any correction that changes the balance. --- # Coalition Loyalty Programs: Settle Partner Economics First https://loyalflow.cc/blog/coalition-loyalty-programs-partner-economics The short version: Coalition loyalty programs should not issue a point until partners have priced earning and redemption, assigned liability, defined ledger settlement, restricted data access, and funded an exit. Treat every earn, burn, refund, and reversal as a linked transaction with a named payer. Key takeaways Set partner-specific earn funding and redemption reimbursement rates. Reconcile gross obligations before netting cash. Assign liability, reserves, breakage, refunds, and insolvency losses. Give partners only the customer fields required by an agreed data flow. Test fraud and wind-down rules against measurable pass criteria. Price coalition loyalty programs earn and burn separately A shared point does not create shared economics. A grocery partner operating on a 3–5% gross margin cannot fund rewards like a hotel selling otherwise perishable inventory. One internal point price transfers value between partners without showing who benefits. One point, two prices, no hidden subsidy. Define two rates for each partner: the amount paid when it issues a point and the amount reimbursed when it accepts one. For illustration, an issuer might fund each point at 1.1 cents while a redeemer receives 0.9 cents. Replace those figures with rates derived from expected redemption cost, margin, breakage, tax, and administration. Here is the settlement lifecycle. Partner A issues 1,000 points and owes the coalition $11 : 1,000 × $0.011 . Partner B accepts those points and earns $9 : 1,000 × $0.009 . The coalition records the $2 spread for the contractually stated purpose, such as operations or reserve funding. If the original purchase is returned, create a reversal linked to the earn event. Do not delete either record. If the points have already been redeemed, Partner A still owes the funded earn unless the contract assigns that loss elsewhere; the member balance may become negative or the issuer may fund recovery. Gross obligations remain $11 due and $9 payable before the final $2 net cash movement is calculated. Failure mechanism: a nominal one-cent value hides different wholesale rates. High-cost redeemers absorb generous issuance until redemption volume exposes the transfer. Produce a monthly partner contribution statement showing funded earn, reimbursed burn, fees, reversals, reserve movements, gross obligations, and net cash. Assign liability and reserves before issuance Name the legal entity obligated to satisfy outstanding balances. Issuer-level liability, a central coalition entity, or a contractual split can work. Ambiguity cannot. Finance and auditors determine accounting treatment; the contract still needs to specify cash funding and loss allocation. Promises need pressure-tested cash behind them. Define who holds reserves, who funds redemptions when expiry assumptions change, and who receives breakage benefit. Estimate breakage by earn cohort and elapsed age rather than applying one permanent percentage. Loyalty Program Breakage: Measure It Without Fooling Yourself provides the related measurement framework. Refund policy must match point availability. If goods have a 30-day return window, holding points as pending for 30 days is derived directly from that policy. If immediate redemption remains available, assign the loss created when a member earns 1,000 points, spends them at another partner, then returns the purchase. Define reserve coverage as cash reserve ÷ stressed net exposure . Stressed net exposure should include forecast redemption reimbursement, unsettled accepted burns, pending reversals, partner concentration, forecast error, and enforceable recoveries. A 60-day forecast window is only an illustrative starting point; replace it with the observed redemption cycle, settlement lag, and time required to suspend a partner. Failure mechanism: allocating breakage income to the coalition while one partner carries redemption liability separates benefit from obligation. Review reserve coverage on every settlement close and after material changes to redemption cost, expiry policy, partner mix, or credit quality. That cadence follows the production of updated exposure data, not a generic quarterly calendar. Reconcile the ledger and test fraud rules Every event needs a unique transaction_id , member_id , partner ID, timestamp, event type, point quantity, cash value, currency, and linked reversal ID. Daily delivery is an operating convention suited to programs offering near-real-time balances; slower programs can match delivery to their promised balance-update time. Reject duplicate IDs and malformed events deterministically. Reconcile everything; let anomalies stay caught. For each partner, calculate gross_due = accepted_earn × earn_rate and gross_receivable = accepted_burn × burn_rate . Add fees and linked reversals separately, then calculate net cash. Exact point quantities must reconcile exactly; currency differences may include only documented rounding at the contracted precision. A $5,000 net payment does not validate $120,000 due and $115,000 receivable. Reconcile both gross totals to event counts and values. Use an illustrative 15-business-day dispute window only if finance teams can close, exchange evidence, and correct the next settlement within that period. Fraud review needs a defined population and denominator. As an illustrative pilot, rank active accounts by points earned and redeemed across different partners within 24 hours. Review the top 0.1% plus every account exceeding the contractual exposure cap, with at least 50 reviewed accounts per week where volume permits; replace 0.1% and 50 with review capacity and observed score distributions. Track confirmed abuse, legitimate cases, total reviewed, blocked value, and customer-service cost. Do not automate blocking until the operator sets and meets an acceptable confirmed-abuse precision target based on its own loss tolerance. Rare abuse may produce no confirmed cases, so retain deterministic exposure caps even when model precision cannot yet be estimated. Failure mechanism: net-only reconciliation conceals earn-return-burn loops, reversals, and partner concentration. Apply the six controls described in Loyalty Program Fraud Prevention: Six Minimum Controls , then contractually assign losses to the party whose system accepted the invalid event. Restrict data and make partner exit executable Map each purpose to explicit fields. Redemption can require a member token, available balance, requested amount, authorization result, partner ID, and timestamp. It does not require another partner’s item-level purchase history. Marketing records need controller or sender, purpose, channel, territory, consent timestamp, and withdrawal status. Limit the opening; keep the exit workable. Review permissions at launch, after every scope change, and on access-role changes. A fixed quarterly review is useful only as a governance convention for otherwise unchanged access; increase frequency when partner or staff turnover makes the access inventory stale. If data goes to a coalition platform or partner, identifiers, transactions, or consent records leave the collecting partner’s systems; contracts and customer notices should identify the recipient and purpose. Failure mechanism: a shared export turns technical convenience into unauthorized prospecting. Purpose-to-field mapping exposes the problem before access is granted. Exit terms need suspension triggers, final ledger delivery, reserve top-ups, settlement deadlines, customer communications, data deletion, and surviving audit rights. Run a yearly wind-down exercise as a governance convention, plus another after any material partner or ledger change. Use a named scenario: the largest redemption partner becomes insolvent at noon with 60 days of forecast redemptions outstanding. Finance calculates gross exposure and reserve coverage; operations stops new earn within the contracted suspension time; engineering exports the final accepted ledger; legal triggers guarantees; customer service approves member messaging. Pass only if point totals reconcile exactly, currency reconciles within documented rounding, access is revoked within the contracted deadline, funding covers the promised redemption window, and every customer communication has an owner and release time. Record failures, owners, and retest dates. An annual checkbox without these inputs and pass criteria proves nothing. Frequently asked questions How often should coalition partners settle? Daily ledger delivery and monthly cash settlement are practical conventions for near-real-time programs. Shorten settlement when gross exposure approaches the partner’s contractual credit limit; derive the cadence from exposure growth and available security. Should every partner use the same point value? Use one customer-facing unit if it improves comprehension, but retain partner-specific earn funding and redemption reimbursement rates. Common presentation does not require identical wholesale economics. Who carries the points liability? The entity obligated to satisfy redemption should carry or fund the related obligation under the accounting treatment agreed with its auditors. The contract must align reserve funding, breakage benefit, and insolvency loss with that obligation. What happens when a partner becomes insolvent? Suspend new earning, secure the accepted ledger, calculate gross obligations, activate reserves or guarantees, and publish funded redemption options. Without enforceable security, remaining partners must fund continuity or narrow the customer promise. --- # Subscription Cancellation Flow: Easy Exits, Profitable Saves https://loyalflow.cc/blog/subscription-cancellation-flow-profitable-saves The short version: A subscription cancellation flow should accept the exit, offer one reason-matched remedy, then reconcile billing, subscription, and access states automatically. Judge save offers on incremental contribution against a holdout—not acceptance rate. Key takeaways Keep the final cancellation control visible beside every save option. Capture one actionable reason; show one primary remedy. Approve offers using treatment-versus-holdout contribution. Reconcile every completed cancellation across billing, subscription, and entitlement systems. Move former subscribers into a separate, reason-specific lifecycle. Build the subscription cancellation flow around intent Cancellation is an account operation, not a persuasion funnel. Start with a visible cancellation action, collect one primary reason, present one relevant alternative, then show the final cancellation control. A practical starting range is 4–6 screens or decisions ; this is an operating heuristic, so shorten it when usability tests show redundant steps. Use roughly 5–7 actionable reasons : price, low usage, temporary absence, product problem, service failure, missing feature, and other. That range is illustrative. Merge categories when they trigger the same operational response; preserve optional free text beside the structured reason. Record enough data to reconstruct the journey: cancellation_attempt_id , subscription_id , reason, offer shown, offer accepted, final action, effective date, and timestamps. Emit an attempt event when the cancellation page opens and a completion event only after the billing change succeeds. Completion rate needs all initiated attempts as its denominator; completed-page views conceal abandonment. Survey-gate failure: three pages of questions appear before another cancellation button. Customers select arbitrary answers to escape, corrupting the reason data the survey was meant to collect. Keep extra research optional and place it after confirmation. Match the remedy to the obstacle. Offer a cheaper plan for price pressure, a downgrade for low usage, or a pause for temporary absence. For monthly subscriptions, 1–3 billing cycles is a reasonable test range because it follows the existing cadence; annual plans need rules based on entitlement and renewal dates. Show one primary remedy and, if materially different, one secondary alternative. This is an illustrative interface limit, not a measured optimum. Display the resulting price, changed entitlements, next charge date, pause end date, and automatic-resumption terms beside the acceptance control. Coupon-over-service-failure: a customer reports repeated outages and receives 30% off. Revenue falls while the cancellation cause remains. Route the issue to support, suppress promotions, retain a visible exit, and cancel if the customer confirms. Test save-offer economics against a holdout Offer acceptance does not establish incremental retention. Randomly assign eligible cancellation attempts to treatment or holdout before displaying the remedy. Keep assignment stable by cancellation_attempt_id ; analyse every assigned attempt, including customers who ignore the offer or leave immediately. A save only counts when the untreated chamber says so. Use assignment-level economics: incremental contribution = treatment contribution - holdout contribution - incremental service cost . Contribution should include collected revenue, variable delivery and payment costs, discounts, refunds, support costs, reactivations, and delayed cancellations during the same observation window. Consider an illustrative monthly plan charging $30 with $12 of variable cost, producing $18 contribution before a save offer. Across 100 assigned attempts, suppose treatment produces 28 paid months during a four-month observation window while holdout produces 20. Treatment earns $504 before incentives; holdout earns $360. If credits cost $100 and extra support costs $20, incremental contribution is $24: $504 - $360 - $100 - $20 = $24 . That offer clears zero in this sample, but $24 is too thin to treat as settled. A conservative approval convention is to ship broadly only when the lower confidence bound for incremental contribution exceeds $0. This is a chosen risk rule, not an industry standard; a business willing to buy learning may use a different rule and document it. Size the test before launch. Illustratively, with a 10% baseline 90-day paid-active rate and a target lift of 3 percentage points, a two-sided 5% significance test at 80% power needs roughly 1,600 attempts per arm . Replace both rates with your own baseline and minimum commercially useful lift; lower baselines or smaller target lifts can require substantially larger samples. Use 30, 60, and 90 days only when they map to the billing cadence. For monthly plans, those checkpoints cover roughly one, two, and three renewal opportunities; weekly or annual products need different windows. Freeze the primary window before reading results, then report incremental retained accounts, contribution, refunds, support contacts, and repeat cancellations. Acceptance-rate failure: a blanket 40% discount lifts on-screen saves, then customers cancel after one discounted cycle. The interface reports success while contribution declines. Set offer eligibility before the test; change the cap after pricing, cost, or post-save tenure materially changes—not on an arbitrary calendar. Make cancellation-state integrity the hard requirement The final action must update subscription status synchronously with a successful billing-provider response. A practical service target is confirmation on screen during the request and email within five minutes; five minutes is illustrative, so set an SLA your messaging system can monitor. If the provider fails, show the failure and preserve a retry path rather than displaying false confirmation. Cancellation is complete only when every layer agrees. State the effective cancellation date, final charge, remaining access, refund treatment, entitlement loss, and data-retention treatment. Exact copy beats reassurance: “Cancelled on 12 June. Access continues through 30 June. No renewal charge is scheduled.” Cancellation and data deletion remain separate operations unless the product explicitly combines them. Reconcile 100% of completed cancellations across billing-provider status, internal subscription status, and customer-facing entitlement. Join deterministically on subscription_id ; compare effective date, renewal status, access end date, and plan. Alert every mismatch. Manually inspect alerts plus a risk-based audit sample, but never substitute sampling for full automated reconciliation. A sample of 100 has only about a 39% chance of finding at least one defect when the true mismatch rate is 0.5%. Weekly spot checks therefore manufacture confidence around rare failures. Audit alert handling weekly if that cadence fits team operations; calculate mismatch rate using all completed cancellations as the denominator. Split-state failure: billing stops while premium access remains active, or access ends while renewal remains scheduled. Both states are mechanically detectable. Rules should identify them; analysts should investigate causes, not decide whether the records disagree. Separate former subscribers from active lifecycle messaging On completed cancellation, remove the customer from renewal reminders, subscriber newsletters, usage nudges, and save campaigns. Service-failure cancellations should remain suppressed until the incident or complaint closes. The cancellation event—not a nightly audience export—should trigger the state change where the platform supports event processing. Unsubscribed is a different circuit, not a quieter one. Test reason-specific recovery after 7–30 days , an illustrative range tied to purchase cadence and resolution time. A weekly meal subscription may test seven days; monthly software may wait 30. Compare reactivation contribution against a no-message holdout. Price cancellations can receive a lower-cost plan when one exists. Missing-feature cancellations should hear from you when that feature ships. Temporary-absence customers need one reminder near their stated return date, not a generic weekly promotion. Lifecycle-reset failure: every former subscriber enters the standard promotional calendar the next morning. The campaign ignores stated intent and contaminates reactivation reporting. Build later outreach as a separate sequence using Win-Back Emails That Actually Win: A Lifecycle Playbook . Frequently asked questions How many clicks should cancellation take? Start with 4–6 decisions as an operating heuristic: request, reason, relevant remedy, final confirmation, and account update. Remove any step that neither changes the remedy nor completes the account operation. What is a safe cancellation discount? No universal percentage is safe. Compare assignment-level treatment contribution with holdout contribution, subtract incremental servicing cost, then apply a documented risk rule such as requiring the lower confidence bound to exceed $0. Should completed cancellations be sampled for errors? No. Reconcile every completed cancellation automatically because small samples frequently miss rare mismatches. Use manual review for alerts, root-cause analysis, and a separate risk-based audit. What defines a successful cancellation flow? Easy completion, accurate state changes, low complaint and mismatch rates, plus positive incremental contribution from save offers. Raw offer acceptance is not success. --- # Gift Card Retention Strategy: Turn Redemption Into Visit Two https://loyalflow.cc/blog/gift-card-retention-strategy-visit-two The short version: A gift card sale is not retained revenue. This gift card retention strategy provides an operating framework: separate purchaser from recipient, expose residual value, trigger journeys from redemption behavior, then measure visit two with powered tests. Key takeaways Store purchaser, recipient, and gift card as separate identities. Capture redemption data without forcing promotional enrollment. Show the exact remaining balance wherever the recipient checks or uses the card. Size reminder tests from baseline conversion and minimum detectable lift, not a fixed holdout percentage. Measure recipient second purchase with explicit denominators and observation windows. Gift card retention starts before redemption Recipients can arrive without a known identifier, sometimes weeks after purchase. Use an illustrative 30–90-day planning range until your own redemption distribution is available. Then replace it with the median and 75th percentile from activated cards that had enough time to redeem. Three identities, one transaction—keep the keys separate. Give digital recipients a durable claim link, sender context, current balance, location rules, and expiry terms. Physical cards need balance lookup without account creation. Local restrictions on expiry and inactivity fees override campaign timing. Keep purchaser_id , recipient_id , and gift_card_id distinct. Deterministic exact matches belong in rules: a verified email or phone supplied by the recipient can support a confirmed match. A shared device, IP address, surname, or payment card alone remains unknown; it must not merge profiles. Purchaser-recipient misattribution: assigning the card to the purchaser because that is the only known customer. The purchaser receives visit messaging, the recipient remains invisible, and attribution becomes unreliable. Test reminders with three recipient-level randomized arms: no reminder, day 7 only, and day 7 plus day 30. Use delivered, claimable cards as the denominator. Count claims within a fixed window, such as 45 days after delivery; that window is illustrative and must exceed the final reminder long enough to observe response. Keep each gift_card_id in one arm. If cards can share a recipient identifier, randomize by recipient instead to prevent cross-arm contamination. Report undelivered messages separately rather than treating them as successful exposures. Capture recipients without forcing enrollment Use progressive capture across claim, checkout, and balance lookup. At claim, request only data needed to deliver or protect purchased value. At checkout, offer a digital receipt or wallet balance. Request marketing consent separately, with the channel, wording version, source, timestamp, and jurisdiction recorded. Ask for identity without tying redemption in knots. Service permission and marketing consent are different records. Some jurisdictions distinguish transactional messages from promotional messages; counsel must classify each message and legal basis. Never make promotional enrollment a condition of redemption. A useful starting usability target is a digital claim completed in under 60 seconds, with no mandatory account for in-store redemption. This is a heuristic, not an industry standard. Check it using median completion time, claim abandonment, and checkout delay. Forced-enrollment denominator bias: placing a six-field form between the recipient and their balance, then reporting completed profiles divided only by submitted forms. Use all eligible claim sessions as the denominator. The smaller submitted-form denominator hides abandonment. Do not place every identified recipient into the standard welcome series. Their first transaction was funded by someone else, and their category intent may remain unknown. Start with gift status and balance messages; move them into the standard lifecycle after a self-funded purchase or another written qualifying rule. Use balances and behavior to create visit two A partial redemption already contains a return reason. Put the exact residual value on the receipt, account view, wallet, and permitted service messages. If the balance is $8.40, say $8.40; “funds remain” makes the customer perform unnecessary work. Make the remaining value visible; give the visit a reason to return. Run four journeys. Full redeemers need a reason to return without stored value. Partial redeemers need balance visibility. Non-redeemers need service reminders governed by delivery and expiry rules. Purchasers need confirmation and future gifting prompts, not messages implying they used the card. Residual-balance blindness: suppressing a $3 balance because it appears insignificant. That balance can still contribute to a $25 order, but do not assume it will. Measure return rate, order contribution, and follow-up time by original-balance and residual-balance bands. Only publish a band after it has enough exposure for a useful estimate. Define “enough” from the confidence interval your decision requires; for example, if a band has 20 eligible cards and three returns, the estimate is too unstable for a narrow suppression rule. Combine adjacent bands or collect more observations. Test an incentive only when balance visibility alone fails to produce an economic return. An illustrative short-cycle test uses a fixed add-on, minimum-spend credit, or 14–30-day return window. Longer-purchase categories need a wider window derived from normal repurchase timing. Size the experiment before launch. Suppose baseline second-visit conversion is 15%, the smallest worthwhile lift is 2 percentage points, two-sided alpha is 5%, and power is 80%. A standard two-proportion calculation requires roughly 5,300 recipients per arm for a 15% versus 17% comparison, before exclusions. A 10% control from 2,000 eligible recipients gives only 200 controls; that cannot reliably detect the example lift. Use a statistical power calculator, enter your baseline and minimum detectable lift, then randomize at recipient level. For three reminder arms, size each planned pairwise comparison and adjust alpha for multiple comparisons. Runtime equals enrollment time plus the full attribution window. At 2,000 eligible recipients per week, collecting about 10,600 recipients for a two-arm test takes roughly 5.3 weeks, followed by the chosen 45-day claim window. Do not stop when an early result looks favorable. Suppress promotional sends after failed redemption, disputed balance, refund, or unresolved support. The companion guide to lifecycle suppression rules helps define that control layer. Measure recipient conversion, not gift card sales Gift card sales measure cash collected and future obligation. Retention begins when a recipient returns with residual value or new money. Define that repeat event before building the dashboard; defining repeat behavior first covers the underlying measurement discipline. Claim rate equals claimed cards divided by delivered, claimable cards. Redemption rate equals redeemed cards divided by activated cards eligible to redeem. Consent rate equals valid consents divided by recipients shown a compliant request. Remaining-balance return equals cards with a later redemption divided by cards left positive and observed for the complete window. Second-purchase rate equals identified first-time recipients making another purchase divided by eligible identified recipients whose first redemption occurred before the cohort cutoff. Use an illustrative 60-day window for frequent retail or restaurants and 180 days for slower categories, then replace it with your second-purchase distribution. Recent cohorts without complete follow-up must remain immature rather than appearing as failures. Revenue-as-retention reporting: gift card sales, redemption volume, and clicks do not prove visit two. Reconcile the gift card ledger deterministically. Report confirmed exact matches as the primary KPI, probable matches separately, and unknown recipients outside attributed conversion. Frequently asked questions Can anonymous gift cards still support retention? Yes. Allow anonymous redemption, then offer an optional digital receipt or balance lookup. Associate later activity only after the recipient supplies a stable identifier. Can service messages be sent without marketing consent? Message classification depends on jurisdiction, purpose, and content. Have counsel classify delivery, security, balance, expiry, and promotional messages separately; keep promotional copy out of service-only communications. When should a second-visit incentive be sent? Use redemption status and normal purchase cadence. Test an illustrative 14–30-day window for short-cycle categories, size the test for a worthwhile lift, and suppress the offer after a qualifying return. Should probable identity matches count as conversions? Not in the primary KPI. Publish the evidence rules, count verified recipient-supplied identifiers as confirmed, report probable matches separately, and leave weak signals such as a shared device as unknown. --- # Loyalty Program Customer Service: A Missing-Points Workflow https://loyalflow.cc/blog/loyalty-program-customer-service The short version: Loyalty program customer service needs a decision system, not more policy prose. Define evidence, deterministic checks, remedies, authority, deadlines, and measurable escalation triggers for each claim category. Turn policy into an executable decision record Terms explain what members may receive. Agents need a record that tells them what to inspect and what action follows. Create these fields for every claim category: category , required_evidence , checks , pending_until , permitted_remedy , authority_limit , resolution_target , escalation_rule , and owner . Policy becomes useful when it can make the next move. Start with eight categories: missing purchase points, delayed promotional bonuses, failed redemptions, expired rewards, account mismatches, returns or cancellations, partner transactions, and suspected abuse. Add another category only when it requires different evidence, checks, remedy, or ownership. Otherwise reporting fragments without changing the decision. For missing purchase points, require an order ID or another unique transaction reference. Verify member identity, eligible amount, payment status, enrollment timing, exclusions, returns, posting window, and existing ledger events. Mark the case pending while the published posting window remains open; after that boundary, correct a confirmed missing event or deny an ineligible claim. Queue contamination: routing everything into “missing points” mixes normal delays, campaign errors, duplicate accounts, partner-file failures, and ledger defects. Agents compensate cases that should have gone to campaign operations, platform operations, or a partner owner. Verify the transaction, rule, and ledger First verify the transaction. Match the member, order or receipt ID, date, channel, eligible amount, payment status, returns, and cancellations. If no receipt exists, accept another unique record such as authenticated order history, an order confirmation, payment reference, or partner transaction ID; a balance screenshot proves no purchase. A valid claim must line up through every layer. Next verify the rule that applied on the transaction date. Check enrollment timing, eligible products, minimum spend, coupon exclusions, activation requirements, channel restrictions, earning caps, and the promised posting window. Preserve versioned offer terms because current rules cannot establish what applied 90 days earlier. Then reconcile the ledger. Search for the expected earn event, pending entry, reversal, expiry, redemption, and manual adjustment. Transaction-ID matching, arithmetic, balance reconstruction, and referential integrity are deterministic system checks; agent judgement belongs only where evidence remains incomplete or policy explicitly permits discretion. Balance-only correction: an agent sees a low balance and adds points. The original earn is actually pending, attached to a duplicate account, or reversed after a return. The manual credit duplicates value while concealing the real cause. Test the decision record before launch. Use an illustrative coverage sample of 24 masked cases: three from each of the eight categories, including approved, denied, and pending outcomes across the full set. This is a workflow test, not statistical validation; replace 24 with enough cases to cover every material branch in your program. Have two agents decide each case independently, then compare both answers with an operations-approved answer key. Record eligibility disagreements separately from remedy disagreements. Require 100% agreement on deterministic facts and escalation routing; investigate every miss rather than averaging it away. Shared disagreement with the answer key exposes a bad instruction, while disagreement between agents exposes ambiguity. Control adjustments without blocking ordinary cases Separate standard corrections, goodwill credits, reward restoration, account merges, and high-value adjustments. A correction repairs an established ledger error. Goodwill resolves uncertainty within policy. Mixing those reason codes makes defect rates and program liability harder to interpret. Routine fixes flow; excess authority stays contained. Illustrative authority limits could allow a frontline agent to issue value equal to one ordinary transaction, a team lead up to five, and program operations above that. These are not benchmarks. Set actual boundaries after inspecting your claim-value distribution, reward cost, confirmed abuse, and approval workload. Use value, frequency, and policy override status—not the visual points number. Ten thousand points may represent £10 in one program and £100 in another. Require approval when an adjustment materially changes liability, restores expired value outside policy, or combines multiple accounts. Before writing an adjustment, search the transaction ID, case ID, offer ID, member history, and prior credits. Use an idempotency key where supported. Exact matching will not detect split claims, changed identifiers, or linked accounts, so route those patterns through account-linkage rules or manual fraud review rather than pretending one search closes the risk. Set separate acknowledgement and resolution targets. Illustrative targets are 1 business day for acknowledgement, 3 business days for ordinary owned-channel claims, and 10 business days for partner investigations. Replace them with targets supported by staffing, posting schedules, and partner contracts. Apply the financial controls described in Loyalty Points Liability: Build Controls Before Campaigns . Value-blind authority: one universal points limit permits expensive adjustments in high-value currencies while delaying harmless corrections in low-value currencies. Control economic exposure instead. Trace failed redemptions and escalate measurable patterns Consider a member whose reward order failed after checkout. The agent confirms the authenticated order, then finds a completed ledger debit but no fulfilled order and no automatic reversal. A prior-adjustment search returns nothing, so the agent writes one corrective credit using the failed order ID as the idempotency key. One failure is a case; a rising level is a signal. The new event records the reason code, evidence reference, original debit ID, before-and-after balance, adjustment value, agent ID, timestamp, linked case, and approval where required. The original debit remains untouched. If a retry later arrives with the same key, the platform rejects the duplicate correction. Every manual change needs that audit trail. Overwriting ledger history destroys the evidence needed for member disputes, finance reconciliation, and defect investigation. Corrections should create compensating events. Route defects by mechanism: ledger mismatches to platform operations, incorrect offer rules to campaign operations, absent partner files to the partner owner, linked-account claims to fraud review, and material aggregate adjustments to finance. Review weekly counts and adjustment value by reason code, campaign, partner, channel, and agent. Use rates, not counts alone. One illustrative alert is at least five claims from one offer or partner during the review window and at least three times its trailing eight-week claims per 1,000 eligible transactions. These thresholds are operating examples, not findings; replace them after measuring normal variation, transaction volume, and investigation capacity. Manually review low-volume programs because a rate can swing on one claim. Goodwill masking: repeated credits close tickets while a campaign rule or partner feed remains broken. Keep goodwill separate, alert on recurring mechanisms, and apply the account controls in Loyalty Program Fraud Prevention: Six Minimum Controls . Key takeaways Define decision fields: evidence, checks, boundary, remedy, authority, deadline, trigger, owner. Reconcile before crediting: verify transaction, historical rule, then ledger event. Test covered branches: use masked, stratified cases plus an approved answer key. Control economic value: separate corrections from goodwill; preserve ledger history. Escalate measured patterns: combine minimum counts, rates, denominators, and owners. Frequently asked questions When are points pending rather than missing? Points remain pending while the published posting window or a stated condition—payment settlement, delivery, stay completion, or return period—remains open. After that boundary passes without a matching ledger event, classify the claim as missing and investigate. When should an agent issue goodwill? Use goodwill when evidence is incomplete, policy permits discretion, and the value stays within documented authority. Record it separately from a correction so credited value does not hide earning defects. How long should adjustment records remain accessible? Keep them through the longest applicable points lifecycle, dispute period, finance audit requirement, or legal retention schedule. An illustrative floor is 24 months for a program with annual expiry; finance and legal owners must set the actual period. When should repeated claims trigger fraud review? Define thresholds from confirmed cases and a relevant comparison cohort. Measure reused transaction IDs, linked-account credits, missing-receipt frequency, and claims per completed transaction; never freeze an account merely because a member contacted support repeatedly. --- # Subscription Dunning: Design a Recovery Workflow That Works https://loyalflow.cc/blog/subscription-dunning-recovery-workflow The short version: Subscription dunning should recover fixable payment failures without treating every decline as cancellation intent. Design one operating workflow for decline routing, card updates, retries, notices, access, and reconciled recovery reporting. Key takeaways Route processor decline codes into retry, customer-action, and stop categories. Run available card-updater services before requesting new payment details. Test retry, notice, and access timing against delayed delivery and time zones. Suppress conflicting promotions until payment recovery or account closure. Reconcile recovery rates to billing and processor records every month. Route subscription dunning by failure type A failed renewal is not one condition. Insufficient funds, a temporary processor error, an expired card, a closed account, and a stolen-card report require different handling. Map each processor response code into three outcomes: retry automatically, request customer action, or stop attempts. Soft declines can justify another attempt because the condition may change. Hard declines such as invalid credentials, closed accounts, or reported stolen cards generally require a replacement payment method. Use the processor’s current response-code documentation; a generic payment_failed event cannot determine the route. Store invoice_id , payment_attempt_id , raw decline code, mapped category, attempt number, billing timestamp, and final outcome. Rules perform the mapping. Operators handle unmapped or changed codes through an exception queue. Review unmapped codes weekly during the first 30 days as an illustrative launch control , then move to monthly only when every production code from the previous review period has a documented route. Replace that cadence if your transaction volume makes a shorter review necessary. A damaging failure mode: retrying every decline on one fixed schedule. Repeatedly submitting a known-invalid card adds fees and processor noise without creating a credible recovery path. Use card updates before customer reminders Network card-updater and account-updater services can replace some expired or reissued credentials without customer effort. Where supported, await the updater result before sending the first payment-update request or making an avoidable retry. Coverage and timing vary by processor and network, so verify the behavior enabled in your account. Repair the credential before ringing the alarm. Track accounts submitted, accounts receiving updated credentials, and updated accounts later charged successfully. Join updater and charge events by subscription or payment-method ID. An updated credential is an intermediate event, not recovered revenue. Define attribution before reporting. A workable rule is: classify recovery as updater-assisted only when the updater timestamp precedes the successful charge and no customer payment-method update occurred between them. If a customer update occurred first, classify it as customer-assisted; this precedence prevents double counting. Calculate updater conversion as successfully charged updated accounts divided by accounts receiving an update. Retain submitted accounts as a separate coverage denominator. A claimed 60% success rate means little unless readers know whether 60% received credentials or 60% subsequently paid. A misleading implementation: counting every returned credential as a recovery. Require a successful charge inside the defined dunning window before assigning recovered status. Operate retries, notices, grace access, and suppression together A practical starting policy is 3–5 retry attempts across a 7–14-day grace period . These are illustrative industry operating ranges, not findings. Replace them using billing cadence, processor limits, decline-level recovery, service cost, and the time customers need to act. Recovery works when every moving part keeps the same time. For a monthly product, an illustrative sequence could retry on days 1, 3, 7, and 12, then restrict access after day 14. Low-cost software may preserve full access during grace. Products carrying fulfillment, fraud, usage, or licensing costs may restrict expensive actions while retaining login, billing access, and any account information required by policy or law. Set the retry floor using contribution, not recovered revenue alone. For each decline type and attempt number, calculate incremental recovered gross margin minus processing fees, service cost, refunds, and chargebacks. Management must choose the minimum acceptable positive contribution as company policy; stop an attempt when its measured contribution falls below that declared floor across a sufficiently mature cohort. Make the timing executable with four acceptance cases. First, inject a 6-hour message delay and verify the retry still occurs after the disclosed retry time. Second, test accounts in UTC−8 and UTC+10 and verify customer-facing dates match their configured zones. Third, place a retry immediately before and after notice delivery and verify no access restriction occurs early. Fourth, cross a daylight-saving boundary and verify elapsed-time rules remain unchanged. For every case, compare billing, messaging, and entitlement timestamps. Pass only when the final notice is recorded as delivered at least 24 hours before restriction, the retry does not precede its disclosed time, and entitlement changes occur no earlier than the stated deadline. The 24-hour requirement is an illustrative customer-notice policy; replace it with your disclosed terms and applicable requirements. Send transactional notices with the failed amount, card brand and last four digits, next retry date, access deadline, and one authenticated update path. Never include full card details or processor payloads. Apply lifecycle suppression rules from unresolved failure through recovery or closure. A broken sequence: restricting access before the promised deadline, then sending an upgrade promotion while the billing warning remains open. Each automation may be technically successful; the combined workflow has failed. Measure and reconcile subscription dunning recovery Use eligible failed renewals entering dunning as the recovery-rate denominator. Define exclusions before reporting: fraud blocks, requested cancellations, test accounts, and failures resolved before workflow entry are reasonable examples. The final definition is an operating policy and must appear beside the metric. Recovered revenue counts only when both records agree. Calculate account recovery rate as recovered accounts divided by eligible failed accounts. Calculate amount recovery rate as recovered renewal value divided by eligible failed renewal value. Compare cohorts only after the same observation window, such as the illustrative 14-day window used above. Run a monthly deterministic reconciliation. Export billing invoices and payment attempts using one UTC period boundary, then join processor transactions on payment_attempt_id ; use invoice_id for invoice-level checks. Apply status precedence in this order: refunded, charged back, successfully settled, failed, pending. Compare eligible failure counts and values, successful charge counts and values, refunds, chargebacks, and processor fees. Choose and document a tolerance based on ledger materiality; for illustration, a company might investigate any non-zero count difference and any value difference above $10. That boundary is not an industry benchmark. Send every breach to an exception log containing record ID, discrepancy, owner, opened date, resolution, and adjustment. Do not publish the month until exceptions are resolved or explicitly signed off. This control catches duplicate events, missing joins, late settlements, and status-order mistakes without pretending judgment can replace arithmetic. A reporting failure: celebrating $50,000 recovered without showing whether eligible failures totaled $100,000 or $250,000. Keep both denominators visible, then connect the resulting churn figures to your broader retention economics . Frequently asked questions When should subscription dunning stop retrying? Stop on processor instructions not to retry, hard declines requiring new credentials, cancellation, or expiration of the approved retry window. For soft declines, use contribution by decline type and attempt number. The 3–5-attempt range is only a starting convention. Should grace-period access remain full? Keep full access when marginal cost and abuse risk are low. Otherwise restrict costly actions while preserving permitted login, payment update, and essential account access. Disclose the exact restriction and effective time before applying it. Which denominator defines dunning recovery rate? Use eligible failed renewals entering the workflow. Report account and amount recovery separately, document exclusions, apply one observation window, and reconcile both measures to billing and processor records. --- # Loyalty Program Data Privacy: Six Operating Controls https://loyalflow.cc/blog/loyalty-program-data-privacy-controls The short version: Loyalty program data privacy requires operating controls that close specific failure paths: unknown data copies, unusable permission evidence, indefinite retention, incomplete deletion, and unmanaged vendor access. These six controls form an operational baseline, not a cross-jurisdiction compliance determination. Key takeaways Inventory systems and data categories before tracing individual fields. Separate enrollment, required processing, marketing permission, profiling, and channel choices. Give every field a purpose, owner, retention event, and deletion action. Pass deletion tests only after downstream copies stay deleted through the next sync. Make vendor export and deletion tests pre-contract acceptance requirements. Loyalty program data privacy begins with coverage Start with a system-and-category inventory, not policy language or a random field sample. List the loyalty platform, ecommerce platform, point-of-sale system, email tool, analytics warehouse, support desk, cloud drives, manual exports, agencies, and other vendors. Then list direct identifiers, transaction data, balances, tier history, coupon use, device identifiers, location, inferred preferences, permission evidence, and support notes. Privacy coverage fails wherever the light does not reach. Create a coverage matrix showing which data categories enter each system. Select at least one field from every populated system-category intersection, then trace it through collection, transfer, use, export, retention, and deletion. This method can expose an uncovered intersection; tracing 10 convenient fields cannot if the inventory was never built. Ten fields remain a useful illustrative starting batch for a small program, not a compliance threshold. Expand the trace until every populated intersection has been tested. Assign one accountable owner per system; “Marketing and IT” leaves escalation unresolved. Failure mechanism: the map stops at the loyalty platform, so a CRM deletion appears successful while spreadsheets, agency exports, or warehouse tables retain the member. The control passes only when every known system and category has an owner, transfer path, retention event, and executable deletion method. Build this map before adding fields or integrations. The same discipline applies to program design: define the repeat behavior first , then collect only the data needed to recognize and reward it. Separate permissions, purposes, and retention Enrollment and promotional marketing are different purposes. Record program terms, processing needed to operate the account, optional marketing, profiling, partner sharing, and channel choices separately. Legal basis and valid consent requirements depend on jurisdiction, customer age, purpose, and data category; joining a program should not silently enable every channel. One enrollment should not unlock every use forever. For each permission, store its state, presented wording or policy version, source, timestamp, channel, and withdrawal timestamp. A field such as marketing_consent=true cannot show what the member saw. Link evidence to a stable customer_id so an email change does not break the history. Set measurable acceptance criteria. A permission record passes the operational check when the current state can be tied to the exact notice shown, collection source, time, relevant channel, and any later withdrawal. Legal review must separately determine whether that notice and collection method satisfy the applicable rules. Apply a blunt field test: no documented purpose, no field . Record whether each field is required, optional, derived, or sensitive; identify recipients; name the owner; define the retention trigger and deletion action. “Useful later” fails the test. Illustrative planning limits might remove unused manual exports after 30 days and review inactive profiles after 24 months. Replace both with periods supported by applicable law, accounting duties, dispute windows, fraud needs, customer expectations, and measured business use. Review the limits on a team-selected risk cadence, then immediately after any change to a purpose, field, vendor, jurisdiction, or integration. Failure mechanism: storage stays cheap, so retention defaults to forever. The control passes when every field has a dated or event-based retention rule, expired records are removed or restricted, and the completion log identifies the affected system and timestamp. Make access and deletion requests executable A request workflow needs seven operating stages: intake, identity verification, system search, exception review, vendor propagation, completion evidence, and deadline tracking. This is a workflow taxonomy, not a legal minimum. Assign a named owner plus backup, then configure deadlines from the requester’s applicable jurisdiction rather than inventing one global period. Deletion passes only when nothing grows back. Use proportionate identity checks. Verified account access, a one-time link, or matching existing account facts may provide adequate assurance for a routine request. Collecting passport data creates another sensitive dataset requiring its own protection and deletion. Search beyond the current email address. Include previous addresses, normalized phone numbers, loyalty IDs, merged profiles, guest checkout IDs, device identifiers, and vendor-specific IDs. Deterministic matching and ledger reconciliation belong in database queries or rules; ambiguous identity matches require human review. Deletion may retain narrowly scoped records for tax, accounting, disputes, fraud investigation, or another applicable obligation. Isolate those records from marketing and routine profiling, record the reason, restrict access, and schedule the next deletion review. A full profile marked “suppressed” is not deleted. Test three controlled paths as an illustrative path-coverage set: an ordinary profile, a vendor-shared profile, and a profile with a documented retention exception. Pass only when mapped active systems return no active profile, downstream vendors confirm processing, exceptions remain isolated, evidence carries timestamps, and the next scheduled sync does not recreate the member. This test exercises declared paths; it does not estimate rare-failure rates. Failure mechanism: the CRM row disappears, then a nightly ecommerce sync recreates it. Run a test after integration, identity-resolution, vendor, or schema changes; a quarterly team-selected cadence can supplement those event-triggered tests but may otherwise leave a persistent defect undetected for nearly three months. Make vendor privacy controls testable Before signing or renewing, inventory the exact fields a vendor receives, each processing purpose, hosting and processing locations, subprocessors, access roles, security terms, deletion duties, breach-notification terms, export options, and end-of-contract handling. “Industry-standard security” supplies no testable answer. Test the gate before trusting what passes through it. Use one pre-contract acceptance test because one successful path is enough to reject a vendor that cannot perform it, not enough to establish ongoing reliability. Export a test member, permission history, points balance, transaction references, and suppression state. Confirm the files remain usable without proprietary screens. Ask the vendor to delete the test record and provide timestamped evidence for active systems plus its contractual backup-expiry process. Vendor evidence confirms the declared workflow, not immediate physical erasure from every backup. After the stated backup period, check that restoration or a later sync does not make the record active again. If customer data goes to a vendor, that discloses the listed identifiers, transactions, behavior, or segments to the vendor and potentially its documented subprocessors. Tell customers which categories are shared and why. Internally, record where processing occurs and which roles can access the data. Failure mechanism: procurement tests features and price, then discovers after termination that consent history cannot be exported or backup deletion is undefined. The control passes when export format, deletion propagation, backup expiry, subprocessor duties, and exit evidence meet written acceptance criteria before production data moves. Privacy and abuse controls need a clean boundary. Loyalty program fraud prevention addresses account abuse; privacy governance controls collection, use, sharing, retention, and deletion. Fraud risk may support retaining specific evidence, not every customer field indefinitely. Frequently asked questions Does joining a loyalty program count as marketing consent? Not automatically. Enrollment may support processing needed to operate the account, while email, SMS, profiling, or partner marketing may require separate permission or another legal basis. Record each purpose separately, retain the exact notice shown, and obtain jurisdiction-specific legal review. Can transaction records be deleted immediately? Not always. Invoices, payment references, ledger entries, dispute evidence, or fraud records may have retention duties. Restrict retained records to the permitted purpose, remove unnecessary identifiers, document the exception, and set its next review date. How often should privacy controls be tested? Test after changes to integrations, vendors, schemas, identity matching, or deletion logic. Add a risk-based recurring cadence chosen by the team; quarterly is a practical example, not a legal standard. A test passes on system evidence and post-sync results, not policy review alone. --- # Loyalty Program Costs: Build a Cash and Liability Budget https://loyalflow.cc/blog/loyalty-program-costs-budget The short version: Loyalty program costs need three linked schedules: operating economics, cash timing, and points liability. Build them monthly, reconcile them separately, then approve launch only if the downside scenario stays inside your cash limit and capital hurdle. Key takeaways Separate operating cost, cash movement, and liability. Adding them together double-counts obligations. Build monthly columns for issuance, redemption, software, labor, fraud, incremental margin, cash, and closing liability. Set low, base, and downside assumptions from identifiable risks, not generic contingency percentages. Normalize variance by its operational denominator before changing the program. Treat a small pilot as an operations test unless its sample can detect the intended behavior change. Loyalty program cost calculation: a worked example Before building the three schedules below, get the year's operating total as a sum of components, then divide. Use this illustrative year — replace every input with your own ledger: $1 million of eligible sales, a 3% earn rate ($30,000 of issued face value), and 10 support hours a week at $50 loaded, which is $26,000 of labor a year. The same inputs reappear in the schedules below. The operating components for the year are redeemed reward cost $18,000, fulfillment on those redemptions $2,000, software $12,000, labor $26,000, fraud $1,000, and program-specific marketing $9,000. Nothing else belongs in this total until you can name it and source it from a quote or a timesheet. total_program_cost is the sum of those components: $18,000 + $2,000 + $12,000 + $26,000 + $1,000 + $9,000 = $68,000. Issued face value is not a line in the sum. Give the total two denominators you already have. Against 5,000 active members (illustrative), cost per active member is $68,000 / 5,000 = $13.60. Against eligible sales, cost per eligible sales dollar is $68,000 / $1,000,000 = $0.068, or 6.8 cents. Change the member definition and the first ratio moves; the formula does not. Budget-control failure: booking the $30,000 of issued face value as this year's reward cost. Issuance is an obligation for the liability schedule; on a redemption basis, this year's operating reward cost is the $18,000 redeemed (60% of issued value redeemed in-year; the 70% below is an eventual-redemption assumption), plus fulfillment — confirm the treatment with finance before you publish the ratio. Counting issued and redeemed together double-counts the same promise. For the ROI stack once you can isolate incrementality, use Loyalty Program ROI: The Calculation That Holds Up . For the obligation itself, use loyalty points liability controls . For the software line, use Loyalty Program Software: A Buyer's Scorecard . Loyalty program costs need three schedules A reward promising $5 after $100 of eligible spend has a 5% face-value earn rate. It does not create $5 of immediate cash expense every time a customer earns it. Issuance creates an obligation estimate; redemption triggers reward and fulfillment economics; payment timing determines cash exposure. One obligation, three appearances—count it once. Build three monthly schedules. The operating schedule contains incremental gross profit, redeemed reward cost, fulfillment, software, labor, fraud, and any measured margin displacement. The cash schedule records when vendors, staff, and reward suppliers get paid. The liability schedule rolls earned obligations forward under the accounting policy approved by finance. Use one row per month and these minimum fields: eligible_sales , issued_face_value , redeemed_cost , fulfillment_cost , software_cash , labor_cost , fraud_loss , incremental_gross_profit , closing_liability , and cumulative_cash . Add customer counts and transaction counts so every rate retains a denominator. Calculate issued face value as eligible_sales * earn_rate . Calculate monthly operating contribution as incremental_gross_profit - program_operating_costs . Keep liability outside that subtraction when the related expected reward cost is already recognized under your accounting treatment. Budget-control failure: summing redeemed rewards, outstanding liability, and reward cash payments into one total. One obligation then appears two or three times. Reconcile each schedule, then bridge timing differences explicitly. Build the monthly cash and liability roll-forward Start with a 24-month model or a horizon covering at least two normal purchase cycles plus the longest points-expiry period. Monthly granularity exposes launch cash pressure and delayed redemption. An annual total can look affordable while month four breaches the available cash limit. The yearly average can hide the month that runs aground. The cash schedule starts with opening cash allocated to the program. Add incremental customer cash contribution if your model measures it reliably. Subtract implementation invoices, licenses, reward supplier payments, fulfillment, messaging, labor, refunds attributable to the program, and confirmed fraud losses when cash leaves. Calculate closing_cash = opening_cash + incremental_cash - program_cash_out . The next month opens with the prior closing balance. Payback occurs in the first month when cumulative incremental cash contribution has recovered setup and operating cash outflows without falling below the approved exposure floor. The liability schedule uses closing_liability = opening_liability + earned_obligation - released_obligation . Released obligation includes redemption, expiry, and approved adjustments under finance policy. Issued face value may differ from earned obligation because expected fulfillment cost, expected redemption, taxes, partner funding, and accounting rules affect valuation. Keep ledger movements deterministic. Issued, redeemed, expired, adjusted, and outstanding balances should reconcile from transaction records, not management judgment. Estimates such as expected redemption remain assumptions; label them by cohort and update them when cohorts mature. Example: $1 million of eligible sales at a 3% face-value earn rate creates $30,000 of issued face value. If the planning assumption is 70% eventual redemption, that assumption informs expected obligation and future cash timing; it does not justify immediately removing the other 30% from the ledger. Outstanding points remain visible until redemption, expiry, or adjustment. Budget-control failure: treating estimated breakage as available cash. Breakage changes an obligation estimate only when supported by program terms, cohort behavior, and finance policy. It does not pay the next software invoice. Scenario inputs must explain the downside Create low-cost, base, and downside columns beside every uncertain input. Change drivers, not final totals. Useful drivers include eligible sales, earn rate, redemption timing, reward unit cost, fulfillment cost, support cases per active member, minutes per case, vendor volume, fraud loss per redeemed reward dollar, and incremental contribution per eligible customer. Derive contingency from named risks. If an integration quote has a fixed $25,000 scope plus an optional $8,000 migration, place $8,000 in the applicable scenario. If support demand could require 5, 10, or 20 staff hours weekly at $50 per loaded hour, model approximately $13,000, $26,000, and $52,000 annually. A blanket percentage hides which event consumes the reserve. Test cannibalization through incrementality measurement, not member revenue. Compare contribution margin per eligible customer between randomized groups or a credible phased rollout. Record baseline rate, minimum detectable lift, outcome variance, confidence level, statistical power, allocation, and expected attrition before choosing sample size. A pilot with 50 treated customers cannot credibly establish a small repeat-rate change. If the available sample lacks detection power, label the pilot an operational test. Use it to verify enrollment, ledger accuracy, reward delivery, support load, fraud controls, and reconciliation—not incremental profit. Budget-control failure: selecting a pilot as a percentage of the customer base. Five percent could mean 50 customers or 500,000. Sample size must follow the outcome, baseline variance, detectable effect, and decision standard. Approve and monitor with normalized gates Set approval gates from business constraints. The downside case must remain above the program cash floor, meet the company’s capital hurdle, and produce acceptable contribution within a timeframe consistent with runway and purchase frequency. A 12-month or 24-month window is a policy choice, not an industry benchmark. A useful gate judges variance at the right scale. Monitor actual versus budget monthly during launch, with higher-frequency ledger checks when issuance volume could breach the cash or liability limit before month-end. Compare both dollars and normalized rates: issued face value per eligible sales dollar, redeemed cost per issued value, fraud loss per redeemed reward dollar, service cost per active member, and software cash per enrolled account. Do not stop a program merely because redemption dollars exceed forecast by 20%. Higher eligible sales, earlier redemption, reward mix, or forecast error could explain the variance. Split issuance, redemption timing, unit reward cost, and fulfillment variances; then compare each with its denominator. Fraud controls also need cumulative windows. A $100 manual-review threshold misses ten $20 redemptions across linked accounts. Set account, device, payment method, and address velocity rules from loss tolerance and reviewer capacity, then track false positives alongside confirmed loss. Budget-control failure: declaring success from enrollment while cumulative cash and contribution miss plan. Enrollment measures participation. Approval, expansion, or shutdown should follow reconciled economics and preset exposure limits. For the underlying ledger design, use the guide to loyalty points liability controls ; for minimum abuse controls, use loyalty program fraud prevention . Frequently asked questions Should points liability count as a loyalty program cost? Track it in the budget, but do not automatically add closing liability to redeemed reward cost and cash payments. Liability represents an outstanding obligation. Finance should define when expense is recognized and how redemptions, expiries, and adjustments release it. How should payback month be calculated? Use the first month when cumulative incremental cash contribution covers setup and ongoing program cash outflows while respecting the approved cash floor. Do not calculate payback from member revenue; use incremental contribution supported by a credible comparison. How much contingency should the budget include? Price identified risks individually: optional integration work, uncertain support hours, vendor overages, reward-cost movement, and redemption timing. Add residual contingency only for risks that cannot be estimated separately, with an owner and release condition. Can a launch pilot prove loyalty program ROI? Only when the sample can detect the minimum behavior change that would alter the decision. Without adequate sample size, allocation, duration, and a credible comparison group, the pilot tests operations rather than incrementality. What does a loyalty program cost per member? In the illustrative year above, $68,000 divided by 5,000 active members is $13.60. Take the numerator from your own ledger — the same component sum — and the denominator from the member definition finance already uses (active, enrolled, or eligible). The ratio is not a benchmark; a different reward design need not land anywhere near $13.60. --- # Emotional Loyalty Measurement: Prove the Booking Premium https://loyalflow.cc/blog/emotional-loyalty-measurement-booking-premium The short version: Emotional loyalty measurement starts with observed choice, not stated affection. Affinity has demonstrated economic value only when guests book direct, return, accept modest friction, or require less discounting. Key takeaways Set the price-gap test band from your own rate and booking data, not from a universal loyalty threshold. Compare equivalent properties, dates, room terms, markets, and customer histories. Size holdouts from baseline conversion and the smallest lift worth funding; use 10% only as a planning default. Approve spending when incremental contribution covers rewards, discounts, media, benefits, and model costs inside the required payback window. Emotional loyalty measurement starts with real choice Awareness, affection, and logo recognition are not emotional loyalty. The operating definition is narrower: preference that changes a purchase when a credible alternative exists . Real preference holds its course when the price wind picks up. Test that preference across price-gap bands such as 0–2%, 2–5%, 5–10%, and above 10%. These are diagnostic bands, not claims that every loyal guest should tolerate a 10% premium. Calibrate them by market, trip type, property class, and contribution margin. A credible comparison requires the same destination area, stay dates, room capacity, cancellation terms, quality band, and major amenities. A downtown full-service hotel priced against an airport select-service property does not reveal loyalty. It reveals a different product. Measure conversion and contribution margin within each band. Loyal customers should show a slower conversion decline as the price gap widens, while still producing acceptable margin after member rates and benefits. A premium that disappears after an 8% discount is not a premium. The classic failure: declaring victory because highly engaged members book more. Frequent travelers both consume more content and book more rooms, creating correlation without proof. Match exposed and comparison guests on market, prior 12-month stays, member tenure, acquisition channel, average rate, and trip type; randomize when possible. Convert affinity into repeat behavior Each brand or program investment needs one behavioral job. Recognition should raise direct-booking share. Status should consolidate stays. Destination content should produce qualified property consideration and bookings within a test window based on the normal booking cycle. The return visit matters more than the flutter. Use 30–90 days as an initial content-attribution hypothesis only when most bookings occur inside that range. Inspect the actual lag from exposure to booking, then set the window before reading results. Long-haul leisure may require 120 days; short urban stays may resolve within 14. Build cohorts by join month, acquisition source, market, and prior stay frequency. Compare direct share, stays per year, nights, portfolio breadth, second-stay rate, and 12-month retention. A shift from one annual stay to two matters; another email open does not. Share of wallet is often partly hidden. Use stable proxies: declared travel frequency, permissioned card-linked records, corporate booking data, or annual stay growth among customers whose travel patterns remain comparable. State the coverage gap instead of turning an incomplete proxy into a precise claim. The miss to watch for is enrollment masquerading as conversion. One million registrations acquired through Wi-Fi access or a one-time member rate may produce no incremental stays. Track second-stay completion within one normal repurchase cycle, and read that cycle from your own booking history rather than a category default. Test personalization with powered holdouts AI cannot manufacture affection. It can choose a relevant property, predict timing, suppress an inappropriate message, or reduce the incentive required for a booking. Judge those jobs using bookings and contribution, not clicks. Leave one seat untouched, or the lift has no witness. Randomize at the lowest unit that prevents contamination. Use customer-level assignment for email and app personalization. Use market or property assignment when staff, pricing, or shared inventory would expose control customers to the treatment. Set the minimum detectable lift before launch. Start with baseline conversion, then choose the smallest improvement whose incremental contribution would justify implementation. A 10% holdout is a practical planning default for a large eligible audience, not a statistical rule; power calculations may require 20%, 50%, or an even split. As a screening rule, fewer than roughly 200 completed bookings per arm usually supports directional learning, not a narrow commercial claim. The required sample rises when baseline conversion is low or the target lift is small. Run the test longer rather than changing allocation after seeing early results. Track incremental bookings, direct-channel shift, contribution after rewards, unsubscribe rate, and repeat behavior. Keep eligibility, assignment, channel pressure, and observation windows fixed. Exclude neither weak responders nor expensive redemptions after randomization. The first trap: scaling a model after click-through rises 8% while bookings remain flat. Novelty can move clicks without moving demand. Service failures create a second trap: automated getaway copy sent after an unresolved billing dispute destroys trust; define the suppression logic described in Lifecycle Suppression Rules before adding recommendation models. Fund only the incremental emotional loyalty premium The scorecard needs one governing equation: incremental contribution minus rewards, benefits, discounts, media, servicing, and model cost . Divide that net value by total program investment for ROI, or compare cumulative net value with investment to find the payback month. Only the overflow gets to turn the wheel. Set the decision threshold before the test. Example: approve expansion only when the lower plausible estimate remains positive and expected payback fits the payback window the company sets from its own cash constraints and purchase frequency. Report five supporting measures beside the equation: repeat rate, direct-channel shift, price-gap conversion, reward cost per incremental booking, and cohort value. Direct distribution savings count only after member discounts, payment costs, benefits, and displacement are deducted. Where randomization is impossible, match customers on pre-period behavior and compare the change from before to after against the matched group. Use the same markets and calendar periods to reduce seasonality. Discard matches with materially different prior stay frequency or average rate rather than forcing every customer into the analysis. The counterexample is a campaign credited with every booking made by exposed members. Existing loyal guests would have produced many of those stays anyway. Incrementality removes that free credit; NPS vs Repeat Rate explains why stated advocacy remains diagnostic evidence, not the commercial result. Further reading: www.marketingdive.com Frequently asked questions What price premium proves emotional loyalty? No universal premium does. Test locally relevant bands, compare genuinely equivalent alternatives, then require positive contribution after discounts and benefits. A 5–10% band is a useful diagnostic starting point, not a pass mark. How large should the control group be? Size it from baseline conversion and the minimum lift worth funding. Use 10% only for initial planning when traffic is high; smaller programs may need a 50/50 split. Fewer than about 200 completed bookings per arm should usually be treated as directional. How long should the test run? Cover at least one normal purchase cycle plus the outcome window. That may mean 30–90 days for booking conversion, 6–12 months for annual repeat behavior, or less for frequent business travelers. Do not stop when early results look favorable. --- # Loyalty Points Expiration: Create Urgency Without Churn https://loyalflow.cc/blog/loyalty-points-expiration-rules The short version: Loyalty points expiration works only when members can prevent it. Use activity-based rules, set the window from real purchase intervals, warn members 60–90 days ahead, then test whether reduced liability outweighs lost purchases. Key takeaways Prefer activity-based expiration; fixed calendar dates punish purchase timing. Set the window beyond the 75th-percentile purchase interval, then backtest affected members and revenue. Show balance, cash-equivalent value, deadline, and preservation action in every notice. Use a powered holdout test; 10%–20% alone does not guarantee a valid result. Review consumer-protection, notice, promotional-value, and unclaimed-property rules before launch. Loyalty points expiration must target inactivity An activity-based rule gives members control: points expire after a defined period without qualifying activity. A fixed date such as December 31 gives a customer buying on December 20 less time than one buying in January. That is arbitrary breakage, not useful urgency. Expiration should notice absence, not punish timing. Start with a 12-month inactivity window for ordinary repeat-purchase programs. Treat 6 months as aggressive. Slower categories may need 18–24 months, while programs built around weekly purchases can test shorter periods. Define qualifying activity narrowly. Purchases should count. Redemptions usually should count because they create another visit. Reviews, referrals, or profile updates should count only when they produce measurable commercial value and resist cheap abuse. Hidden-terms failure: the policy sits in legal copy, then the member receives one warning three days before deletion. Use plain language instead: “Your 2,400 points, worth $24, expire June 30 unless you buy or redeem.” Show the same date and action in email, the account page, and checkout. Before implementation, get jurisdiction-specific legal review. Consumer-protection, required-notice, promotional-value, contract, and unclaimed-property rules vary. A sound retention policy can still be unlawful or unenforceable in a particular market. Set the expiry window from customer behavior Do not multiply the median purchase interval by an arbitrary number. The median hides legitimate slow-cycle customers. Calculate purchase intervals by segment, inspect the 75th percentile , then place expiry far enough beyond it to distinguish lapsing behavior from normal buying cadence. Measure the slow-but-normal customer before drawing the deadline. If a segment has a 45-day median interval but a 120-day 75th percentile, a 90-day rule will erase balances from many customers behaving normally. Seasonality needs separate treatment: holiday-only buyers can be healthy customers despite an 11-month gap. Backtest the proposed rule against the previous 12–24 months. Measure the share of active members affected, revenue represented, balance value removed, and subsequent purchase behavior. Review high-value and slow-cycle segments separately rather than accepting one blended average. Finance-led failure: choosing 12 months solely to recognize breakage sooner. Expiration cannot repair an overgenerous earn rate or weak redemption model. Fix those economics directly using the controls in Loyalty Points Liability: Build Controls Before Campaigns . This week, export purchase dates for repeat customers, calculate gaps between orders, and find the 75th percentile by meaningful segment. Reject any proposed window that would have expired points for a material share of members still purchasing normally. Warnings must create a clear preservation path A practical reminder cadence is 60, 30, 14, and 3 days before expiry. Add a 90-day notice for high balances or categories with purchase cycles beyond six months. Fewer notices can work, but the first message must arrive early enough for a normal purchase decision. A deadline without an escape route is merely deletion. Every notice needs four facts: point balance, cash-equivalent value, exact deadline, and easiest qualifying action. “Points expire soon” creates work. “Spend $10 by June 30 to preserve $42” creates a decision. The preservation action should fit the economics. Offer a normal purchase for frequent categories, a low-threshold redemption when members already hold usable value, or a one-click 14- or 30-day extension for valuable customers not ready to buy. Message-volume failure: sending four vague warnings without value or deadline details. Repetition does not fix ambiguity. It converts an account notice into harassment. Suppress expiry campaigns during open refunds, missing deliveries, unresolved support cases, fraud reviews, or account-data disputes. Asking for another purchase while the company owes a resolution damages trust; the operating rules in Lifecycle Suppression Rules: Stop Marketing Through Service Failures provide a practical baseline. Test incremental profit, not erased liability Expired points reduce accounting liability immediately. Profit is less obvious. Compare affected members with similar members whose balances remain available, then track 30-, 60-, and 90-day purchases, contribution margin, redemptions, unsubscribes, support contacts, and re-enrollment. Keep a control group; vanished liability is not proven profit. A 10%–20% holdout is a useful starting allocation, not a sample-size rule. Define the minimum detectable change that matters economically, such as a 3-percentage-point decline in 60-day repeat purchase. If the cohort cannot detect that change reliably, extend the test period or combine additional eligible cohorts rather than declaring victory early. Segment expired value into bands suited to your program, such as below $5, $5–$25, and above $25. Losing $2 rarely produces the same response as losing $50. Also compare tenure, historical margin, purchase cadence, and unresolved service issues. Breakage-ledger failure: celebrating $100,000 of removed liability while 60-day repeat purchase falls 8% among members losing more than $25. Breakage appears immediately; lost customer value arrives over several months. Set stop rules before launch. Pause if repeat purchase falls beyond the economically acceptable threshold, support contacts exceed the expected savings, or high-value members show disproportionate churn. Behavior should decide the result; NPS vs Repeat Rate: Behavior Proves Retention explains why purchase evidence beats stated satisfaction. Frequently asked questions Should loyalty points expire? Only when expiry serves a defined liability or reactivation objective, members receive fair notice, and local rules permit it. For infrequent-purchase categories or programs with small balances, permanent points may cost less than the resulting confusion and churn. What should count as qualifying activity? Count purchases and usually redemptions. Count referrals, reviews, or profile actions only when they create measurable value and include abuse controls. Publish the definition beside the expiration date. How long should an expiration grace period be? Test 14 days for frequent-purchase categories and 30 days for slower cycles or larger balances. Restoration after a qualifying purchase can recover a customer without making every expiry automatically reversible. When should expired points be restored? Restore them after unclear notice, account errors, or service failures. For discretionary cases, compare reward cost with expected future contribution margin: restoring $25 is rational when the member is likely to produce substantially more than $25 in future margin. --- # How Deep Should a Win-Back Discount Go? Set a Margin Floor https://loyalflow.cc/blog/win-back-discount-margin-floor A win-back discount should recover profitable customers, not purchase a flattering redemption rate. Discount depth is an output of contribution economics: calculate the maximum affordable incentive first, then decide which customers deserve it. Offers of 10%, 15%, or 25% can all work. None is a sensible default. A 25% discount may pay back when a proven customer returns for three more full-margin orders; 10% may already be too deep for a low-margin, high-return buyer. Calculate the Win-Back Discount Margin Floor Start with order contribution before discount: revenue minus product cost, payment fees, fulfillment, shipping subsidy, expected returns, and other variable order costs. Then subtract the proposed discount and campaign cost. Ignore fixed overhead for this decision unless the campaign creates a direct incremental expense. The affordable discount ends where contribution stops balancing. Recovered-order contribution = revenue − variable order costs − discount − campaign cost. Set the minimum acceptable result with a second formula: minimum order contribution = volatility buffer + unrecovered campaign cost. The volatility buffer covers uncertainty in returns, shipping, fulfillment, or product mix. Derive it from your own variation rather than copying a universal dollar threshold. If those costs commonly move by $6 per order and $3 of campaign cost remains unrecovered, the floor is $9. Consider a $100 order with $58 of variable costs. Contribution before discount is $42. If campaign cost is $3 and the required volatility buffer is $6, the recovered order must retain $9. The maximum discount is therefore $30: $42 minus $3 campaign cost minus $9 required contribution. That arithmetic gives an absolute ceiling, not the offer you should send. Starting below the ceiling preserves room for testing and protects against a worse-than-average product mix. If free shipping adds another $8 of variable cost, the maximum discount falls from $30 to $22 immediately. The classic failure: choosing 20% because competitors use it, then checking margin after launch. The percentage looked ordinary; the combination of discount, free shipping, and returns made every recovered order negative. Make Discount Depth an Economic Output Build the offer ladder from each segment’s maximum affordable discount. Do not begin with a standard 10%–15%–25% sequence and force every customer into it. Those percentages are useful test points only when they sit below the calculated ceiling. No-discount or low-ceiling segment: recovered-order contribution barely clears the floor; use product news, replenishment prompts, or service messaging. Moderate-ceiling segment: a 10–15% test remains profitable without assumed repeat orders; test the smallest meaningful incentive first. High-ceiling segment: 20–25% remains viable because historical contribution and expected incremental repeat contribution support it; restrict access to proven customers. Expected repeat contribution can justify spending above the recovered-order floor, but only when the behavior exists in your data. Use maximum total discount = order contribution before discount + expected incremental repeat contribution − campaign cost − required payback floor. Discount expected repeat contribution for uncertainty. If similar recovered customers historically generate $24 of later contribution within 90 days, counting all $24 assumes perfect prediction. Counting 25–50% of it during an early test creates a defensible buffer; tighten that factor as evidence accumulates. Failure label: borrowed ladder. A team copies 10%, 15%, and 25% from another brand despite having different gross margins, return rates, and reorder behavior. The ladder is easy to build, but the final rung cannot pay back. Allocate the Win-Back Discount by Proven Value Silence does not earn a larger incentive. Two customers can both be 60 days late while carrying opposite economics: one placed six full-price orders with low returns; the other purchased twice during 30%-off events. Deeper offers belong behind the proof-of-value lock. Rank lapsed customers by historical contribution, not revenue or predicted coupon response. Useful inputs include prior order count, full-price share, return cost, fulfillment cost, category-level margin, and contribution generated during a fixed period such as the previous 12 months. Reserve the deepest affordable offer for the highest-contribution group with demonstrated repeat behavior. The exact group size must come from economics and test capacity, not a claimed universal top 10% or 20%. Small segments may not support separate treatment at all; combine economically similar customers until the result is measurable. A practical rule for this week: customers with fewer than three prior orders receive no credit for assumed repeat contribution. Customers with three or more orders can receive partial credit based on observed post-return behavior among comparable buyers. Promotion-only or persistently negative-contribution customers receive reminders, product news, or nothing. A $500 customer is not automatically better than a $300 customer. If the first generated $170 in returns plus expensive fulfillment, the second may provide more usable contribution. Apply the framework from the retention math every founder should know before assigning richer offers. Failure label: response optimization. Chronic deal buyers receive the richest discount because they convert fastest. Redemption rises; full-price purchasing never returns. The campaign optimizes coupon use rather than profitable recovery. Judge Incremental Profit, Not Redemptions The discounted order is the recovery cost, not the final result. Measure 60–90-day incremental contribution : contribution from recovered and later orders, minus discounts, campaign costs, returns, and contribution that would have occurred without treatment. Redemptions fall through; incremental profit is what remains. Use a randomized holdout wherever sample size permits. Do not apply a universal 5–10% rule. Estimate the purchase-rate difference you need to detect, then choose a holdout large enough to produce a useful comparison; low-volume segments often require a larger holdout share or a pooled test across similar segments. If 12% of recipients purchase while 8% of the holdout purchases, observed incremental recovery is four percentage points, not 12. Multiply that lift by contribution, not revenue. Treat small differences cautiously when either group contains too few customers; directional results are not proof. Track incremental purchase rate, incremental contribution per targeted customer, and payback time by offer depth. A 10% offer producing $3.20 of incremental contribution per recipient beats a 25% offer producing $1.10, even if the deeper offer doubles raw redemption. Set the evaluation window before launch. Fast-repeat categories may show useful evidence within 30–45 days; slower categories may require 90–120 days. Do not extend the window after seeing weak results unless the original window missed the normal purchase cycle. Measurement failure: reporting clicks and redemptions without a control. Organic returners receive unnecessary discounts, the campaign claims their revenue, and the apparent winner becomes an expensive subsidy. Set the contribution floor, calculate the discount ceiling, allocate depth by proven value, then test incremental profit. Keep timing, cadence, suppression, and copy in a separate operating layer covered by the broader win-back email playbook . --- # 3 Churn Signals You Can Catch in a Spreadsheet https://loyalflow.cc/blog/churn-signals-spreadsheet-rules An inactivity rule can fire weeks after the useful retention window closes. Better churn signals appear in a customer’s order history: purchase intervals stretch, category breadth narrows, baskets contract. Catch those changes with an order export and spreadsheet. Use the thresholds below as starting heuristics, not universal truths. Run them for 4–6 weeks, inspect false positives by category, then adjust. The goal is an actionable weekly list, not a prediction score. Churn Signals Should Measure Change, Not Inactivity A 90-day inactivity rule treats a weekly buyer and a twice-yearly gift buyer as equivalent. They are not. One may be lost by day 30; the other may be behaving normally at day 120. Measure customers against themselves, not the crowd. Build personal baselines for customers with at least three completed orders . Compare their latest 2–3 orders with the prior 3–5 where history permits. Three orders provide a usable minimum, not a reliable law; sparse histories deserve lower confidence. Your export needs only customer ID, order date, order value, units, and product category. Group products into 5–12 categories that represent distinct customer needs. Excessive merchandising detail creates fake breadth: shampoo and conditioner probably belong together, while haircare and supplements do not. The trap: scoring every customer against one storewide average. Personal change matters more. Cohort medians remain useful as a fallback for new repeat buyers, but separate replenishment, seasonal, subscription, and gift-heavy customers before applying them. Use Three Spreadsheet Churn Signals These three rules cover timing, dependence, and spend. None should trigger an automatic discount alone. Use them as diagnostic flags, then contact customers according to the behavior that changed. Purchase interval: calculate the median of the previous 3–5 gaps between orders. Start flagging when days since the last order reach 1.5 times that baseline. Minimum useful history: three intervals. Exclude known seasonal buyers. Test a replenishment reminder or reorder link within 3–7 days of the flag. Category narrowing: compare categories bought across the latest 2–3 orders with the earlier 3–5. Start flagging customers who previously repeated purchases across at least three categories but now buy from one. Exclude gifts, trials, and categories bought only once. Test recommendations tied to a genuinely dropped need. Basket contraction: compare median units or order value across the latest 2–3 purchases with the earlier 3–5. Start with a 20% decline threshold. Exclude returns, stockouts, split shipments, and unusually large promotional orders. Test bundles, saved products, or one direct question about what changed. The interval threshold deserves particular care. For a customer who normally orders every 20 days, 1.5 times baseline means a flag around day 30. For a 45-day buyer, it means roughly day 68. Review results after 4–6 weeks; high-frequency categories may need 1.3 times baseline, while volatile categories may need 1.7 or 2 times. Use the median rather than the average. One delayed holiday purchase can distort an average for months. In the sheet, divide days since last order by baseline interval, then filter ratios at or above your test threshold every Monday. For basket contraction, units often outperform revenue when inflation, discounts, or price changes distort order value. Revenue may work better when product mix matters more than item count. Track both if clean data already exists; do not postpone the first review to rebuild your catalog. The trap: treating one lower order as a verdict. A customer may split an order, use fewer discounted items, or buy a cheaper refill. Require contraction across 2–3 purchases, or pair it with another signal before intervening. Combine Two Flags Before Spending Margin Act when two of the three signals fire together. This starting rule suppresses obvious noise while identifying customers whose relationships are weakening across more than one dimension. One flag suggests; two flags justify action. Match the message to the evidence. A stretched interval calls for timing help: replenishment, saved favorites, or a low-friction reorder path. Category narrowing calls for relevant discovery. Basket contraction calls for a service, assortment, delivery, or value diagnosis. Do not lead with 20–25% off. A coupon cannot fix missing stock, inconvenient delivery, declining product quality, or a need that disappeared. It can also train an otherwise healthy customer to wait for the next offer. Keep the first process manual. Size the weekly list so one person can review it in a single sitting once exclusions are visible — 25–50 flagged customers is a sensible place to start. Check recent support contacts, returns, subscriptions, stockouts, and campaign history before sending anything. The trap: automating the first draft of the rules. Bad thresholds produce more messages, not more retention. Keep human review for 4–6 weeks; automate only after most flags produce plausible cases and clear treatments. Calibrate Churn Signals Against Outcomes Measure flagged customers for the next 30–45 days . Record whether they purchase, how quickly they return, whether their interval moves toward baseline, and whether category breadth or basket size recovers. Tune the threshold to where outcomes actually land. Where volume permits, withhold outreach from 5–10% of flagged customers. This is a practical starting range: large enough to expose whether treatment beats natural recovery, small enough to keep the cost of withholding outreach tolerable. Low-volume businesses can compare successive flagged cohorts, though seasonality makes that evidence weaker. Review thresholds by category after 4–6 weeks. If many flagged customers return without intervention, raise the threshold or add an exclusion. If known repeat buyers disappear before being flagged, lower it. Keep separate settings only where behavior differs materially; dozens of micro-rules become impossible to operate. Track three operating numbers: flagged customers, contacted customers, and incremental repeat purchases. Also record discount cost. A campaign that lifts orders while giving margin to customers who would have returned anyway is not a retention win. The classic failure: waiting for a predictive model while obvious behavioral deterioration sits unused in the order export. Three calibrated rules can run this week. A model earns its place later, once message volume, customer value, and treatment complexity exceed what a weekly review can manage. Early detection supports cheaper interventions than late-stage recovery. Once a customer has crossed the inactivity threshold, use the sequencing in Win-Back Emails That Actually Win: A Lifecycle Playbook ; before then, let combined churn signals trigger the smaller, more relevant action. --- # Subscriptions vs Points: Use Reorder Variance to Decide https://loyalflow.cc/blog/subscriptions-vs-points-reorder-variance Subscriptions vs points should be decided by reorder variance, not category labels. Subscriptions work when customers already buy similar baskets on a predictable schedule. Points work when timing or product choice varies. Use one screen: calculate each repeat customer’s days between orders, then compare the interquartile range with the median interval. If the interval spread is wide, a subscription will manufacture a schedule customers do not naturally follow. If timing and basket contents stay tight, automation can remove purchase friction. Subscriptions vs Points Starts With Reorder Variance Pull 12 months of first-party order data for customers with at least three purchases. For each customer, calculate the median days between orders and the interquartile range, or IQR. Then calculate reorder variance ratio = IQR ÷ median interval . Use 0.5 as a screening threshold, not an industry benchmark. A customer with a 30-day median interval and a 12-day IQR has a ratio of 0.4. That timing is predictable enough to test a subscription. A 30-day median with a 30-day IQR produces 1.0; points are safer because the schedule varies as much as the central interval. Basket consistency matters too. Measure the percentage of repeat orders containing the customer’s most frequently purchased product or category. Set a company-specific threshold before reviewing results; 70% can serve as an initial hypothesis when no prior subscription data exists. Validate it against skips, substitutions, and cancellations. The classic failure: calling every replenishable product a subscription product. Pet food may repeat predictably; toys, treats, and accessories may not. Category fit hides customer-level variance. This week, segment customers into four cells: predictable timing and basket, predictable timing only, predictable basket only, neither. Offer subscriptions only to the first cell. Use points or lifecycle messaging for the other three. Fund the Offer From Unit Economics Do not copy a 5% points rate or 10% subscriber discount from another brand. Calculate the maximum incentive your margin can support. Start with contribution per order = revenue − product cost − fulfillment − payment fees − variable service cost . The incentive fits only after every real cost takes its cut. For points, calculate expected reward cost = qualifying spend × reward value rate × expected redemption rate . Use your own redemption history where available. Without history, model low, base, and high redemption scenarios rather than treating breakage as guaranteed profit. For subscriptions, include the standing discount, free shipping, payment retries, substitutions, support contacts, and failed deliveries. A scheduled order can produce more revenue while destroying contribution if its discount and fulfillment burden exceed the incremental margin. Set the offer backward from the required return. If contribution before incentives is $18 per order and the program must retain at least $12, the total variable program cost cannot exceed $6. That $6 is a ceiling, not a recommended discount. The trap: funding incentives from gross margin while ignoring fulfillment and service. A product may show 60% gross margin yet contribute little after picking, shipping, payment, and support. Build the offer from contribution, not merchandise markup. Test Across Full Purchase Cycles A fixed 90-day test makes no sense when customers naturally reorder every 75 days. Run the experiment for at least three full median purchase cycles , with a minimum of 60 days to expose early skips and a longer window where cadence demands it. A valid test reaches the far side of several buying cycles. Randomly assign eligible customers to test and holdout groups. If randomization is impossible, match customers on prior order count, contribution, acquisition channel, tenure, and reorder interval. Declare one primary metric before launch: incremental contribution per eligible customer. Use this formula: incremental contribution = (test orders − expected control orders) × contribution per order − program cost . Calculate expected control orders from the holdout rate multiplied by the number of eligible test customers. Include all discounts, rewards, shipping subsidies, technology, and variable service costs. Track diagnostic metrics without promoting them to success metrics: Subscription: activation, shipment two retention, skips, cancellations, failed payments, substitutions. Points: active earners, reward latency, redemption, expiry, dormant-member rate. Both: incremental orders, contribution per eligible customer, cannibalized purchases. The classic failure: comparing subscribers with non-subscribers after launch. Customers who already buy frequently are more likely to subscribe. Their higher revenue proves selection, not impact. Predeclare a stop rule. Pause the offer if incremental contribution remains negative after three purchase cycles or if early cohorts deteriorate between the first and third order. Continue only when the holdout gap covers every variable program cost. Use Points When Customers Resist the Clock Wide reorder variance does not mean loyalty mechanics cannot help. It means the brand should reward the next choice rather than impose the next date. Points suit customers whose timing changes but whose future purchase remains contestable. When buying habits move, points move with them. Set reward value from the same contribution ceiling. Then check reward latency using actual purchase frequency: purchases to reward = reward threshold ÷ average points earned per purchase . If a typical eligible customer cannot see a credible reward within two or three expected purchase cycles, lower the threshold, change the action rewarded, or drop points. A hybrid deserves consideration only after each mechanism proves one distinct job. Subscription handles the predictable core basket; points stimulate add-ons, referrals, or cross-category purchases. Combined incentive cost must remain below the contribution ceiling calculated earlier. The duplicate-incentive failure: applying points to an already discounted scheduled order without measuring incremental behavior. The customer receives two subsidies for one purchase that may have happened anyway. The decision is blunt: tight timing plus stable baskets earns a subscription test; meaningful variance favors points . Recalculate the segments quarterly because cadence changes with pricing, assortment, and customer tenure. For the control-group and contribution logic behind the test, use the retention math every founder should know . --- # Loyalty Tier Thresholds: Set Them With Spend Percentiles https://loyalflow.cc/blog/loyalty-tier-thresholds-spend-percentiles Start Loyalty Tier Thresholds With Spend Percentiles Loyalty tier thresholds should come from customer spend distribution, not a conference-room guess. Pull trailing-12-month net spend, excluding refunds, canceled orders, taxes, and gift-card purchases where possible. Sort eligible customers by spend, then mark the 70th, 90th, 97th, and 99th percentiles. Let the customer distribution draw the first lines. Use 20–30% for the first paid-status tier, 5–10% for the second, and 1–3% for the top tier only as launch hypotheses . Validate those bands against historical spend, contribution margin, purchase frequency, and benefit cost. A high-frequency consumer brand may support broad access; a business dominated by a few wholesale-like buyers probably will not. Define eligibility before calculating percentiles. One workable rule: include customers acquired at least 12 months ago who placed at least one order inside the category’s normal repurchase window, whether that is 30, 60, or 180 days. Run newer cohorts separately rather than vaguely weighting an $8 lapsed buyer against a currently active customer. Copied-threshold failure: adopting a competitor’s $500, $1,000, and $2,500 cutoffs. Their prices, margins, frequency, and customer mix differ from yours. This week, export trailing-12-month net spend and calculate the cutoffs for the top 30%, 10%, and 3%; treat the results as candidates, not answers. Balance Reachability Against Exclusivity A tier changes behavior only when members can see a plausible path. Test a next-tier threshold roughly 20–40% above current annual spend for customers in the intended upgrade band. That range is another hypothesis: validate it against actual order cadence rather than declaring it a universal benchmark. Exclusive works better when the next step still looks climbable. Translate every gap into purchases. At a $75 average order value, a $300 gap requires four extra orders. That may be credible in a monthly category and absurd for a product bought twice per year. Show dollars remaining, estimated orders remaining, or both, then provide at least 30–45 days of visible progress before expecting action. Exclusivity should come from benefit design, not impossible qualification. Test expensive perks such as priority support, annual gifts, or waived fees on the top 1–3%. Lower tiers can receive cheaper benefits such as bonus-point events or early sale access, provided the model shows those benefits can change behavior. Empty-aspiration failure: promoting a top tier reached by 0.1% of customers across every program screen. Most members learn that progress is irrelevant. If normal purchase frequency cannot support credible status movement, compare the tradeoffs in Points, Tiers, or Cashback: Choosing the Right Loyalty Program Model before forcing tiers onto the program. Make Margin Veto the Thresholds Percentiles identify who qualifies; margin decides whether qualification is affordable. For each tier, estimate qualifying members, current contribution margin, plausible incremental spend, benefit usage, reward cost, and operational cost. Stress-test qualification rates at 25–50% above forecast. Percentiles nominate; margin gets the veto. Suppose 8,000 members qualify for a tier carrying $18 of expected annual benefit cost. That creates $144,000 of annual cost before additional support or fulfillment. At a 40% contribution margin, the tier needs $360,000 of incremental revenue to cover that cost, equal to $45 per qualifying member. Do not count all spend above a threshold as incremental. Members already spending $900 may cross a $1,000 threshold without changing behavior. Model plausible lift from customers sitting 10–30% below the cutoff, then run conservative, expected, and aggressive cases. Revenue-math failure: setting thresholds from sales while benefits consume contribution margin. A 5% reward rate absorbs half the economics of a product producing 10% contribution margin. Test a launch requirement that incremental contribution covers tier cost by 1.5–2 times, then validate that assumption against observed redemption and lift. If it fails, raise the threshold, cut the benefit, or delete the tier. Set Reset Rules Before Members Earn Status Calendar-year qualification is easy to explain: earn from January through December, receive status through the next year. It also treats a December joiner badly. Rolling-12-month qualification gives every member the same window but requires reliable data and an account experience that shows exact qualification and expiry dates. Choose based on operating capability. Use calendar qualification when simplicity matters and acquisition is seasonally concentrated. Use rolling qualification when acquisition is steady and balances update reliably. In either model, test a 60–90-day grace period, one-tier soft landing, or guaranteed 12-month status term after qualification. Send downgrade warnings 90, 30, and 7 days before expiry. Show the exact spend required and the deadline. Vague reminders to “shop soon” hide the program rule precisely when members need it. Reset-shock failure: wiping status on January 1 regardless of join date or recent progress. A member reaching the top tier in November should not lose it six weeks later. Publish the minimum status term before launch; preserve every term already earned. Recalibrate Without Moving the Goalposts Review loyalty tier thresholds every 6–12 months. Compare actual qualification rates with the original launch hypotheses, then inspect margin, frequency, benefit usage, and customer mix. A two-point movement may be noise; growth from 8% to 16% warrants investigation. Tune the path, not the promise already made. Change thresholds prospectively. Announce new rules 60–90 days before they apply, preserve status through its promised expiry, and honor progress under the old rules. During the notice period, show both the current target and future target. Evaluate changes for 90–180 days using a fixed band around each cutoff, such as customers within 15% above or below it. Match customers on pre-period spend, order frequency, tenure, and channel; keep a randomized holdout where volume permits. Compare changes in purchase frequency and contribution margin, not just total spend, because unmatched high-value customers create selection bias. Mid-cycle-change failure: raising thresholds because too many members qualified. That punishes the requested behavior and destroys trust in future targets. Preserve the current promise, fix the next period, then judge results through the measures in The Retention Math Every Founder Should Know: LTV, Churn, and Repeat Rate . --- # Referral vs Loyalty Programs: Separate Jobs, Separate Math https://loyalflow.cc/blog/referral-vs-loyalty-programs Referral programs buy qualified acquisition. Loyalty programs buy incremental repeat behavior. Treat them as one incentive system and you will eventually pay twice: once for a customer who would have arrived anyway, then again for a purchase they already intended to make. The choice between referral vs loyalty programs starts with the behavior gap. If acquisition is expensive but customers recommend you naturally, test referrals. If customers have credible repeat opportunities but weak retention, test loyalty. If both gaps exist, run both with separate economics. Referral vs Loyalty Programs Solve Different Jobs A referral program converts customer advocacy into an acquisition channel. Its unit of success is not a shared link or claimed code. It is a new customer completing a paid, non-refunded qualifying action . One branch brings customers in; the other gives them reasons to return. Track approved referred customers, total acquisition cost, first-order contribution, fraud rate, and contribution-margin payback. Compare those results with paid search, affiliates, partnerships, or whatever acquisition channel would otherwise receive the budget. A loyalty program changes behavior after acquisition. Its unit of success is not enrollment, points issued, or member revenue. It is an incremental purchase or retained customer that produces contribution after reward and operating costs. Track second-order rate, purchase frequency, lapse rate, reward liability, redemption cost, and incremental contribution against a control group. Comparing members with non-members is weak evidence because frequent buyers are usually more likely to join. Failure mode: one dashboard reports attributed revenue for both programs. Referral attribution ignores customer quality. Loyalty attribution claims baseline purchases as lift. Activity rises while contribution falls. Set one primary KPI before launch. Referral KPI: contribution-margin payback per approved new customer . Loyalty KPI: incremental contribution after reward, platform, and operating costs . Review monthly; pause expansion when either number remains negative beyond the planned payback window. Use Two Break-Even Formulas Referral economics depend on when each cost is incurred. Separate friend discounts paid before qualification from advocate rewards paid after approval. Mixing those events creates a misleading headline cost. Referral CAC = pre-approval discount leakage + approved advocate rewards + processing, support, and fraud loss, divided by approved referred customers. Worked cohort: 100 invitees place discounted orders. Each receives a $10 discount, creating $1,000 of economic cost. Sixty orders survive payment, identity, cancellation, and return checks. Advocates then receive $15 for each approved order, adding $900. Support and fraud review add $180. Total cost is $2,080. Divided by 60 approved customers, referral CAC is $34.67 . If the friend discount applies only after approval, cost falls to $1,680, or $28 per approved customer . That policy difference matters more than the advertised “Give $10, get $15” headline. Compare referral CAC with first-order contribution plus later contribution inside a defined window. A $35 CAC against $22 of first-order contribution leaves a $13 deficit. Choose a 30-, 60-, or 90-day payback window based on cash constraints and normal repurchase timing, then keep it fixed for cohort comparisons. Loyalty needs another equation. Incremental contribution = incremental orders multiplied by contribution per order, minus redeemed rewards, platform cost, and operating cost. Points issued belong in the liability model; redeemed rewards belong in realized program cost. Set reward generosity from margin rather than copying a market percentage. Maximum reward rate = incremental contribution rate − platform and operating cost rate − required profit rate. Example: an expected 7% incremental contribution rate, 1% operating cost, and 3% required profit leaves a maximum reward rate of 3% of eligible spend . Failure mode: referral CAC excludes failed-order discounts while loyalty ROI includes every member purchase. One program looks cheaper through missing costs; the other looks stronger through borrowed baseline demand. Use cohort costs for referrals, randomized lift for loyalty. Choose From Behavior, Not Category Labels Referrals work when customers have something credible to recommend even if they buy infrequently. High-consideration services, subscriptions, financial products, and home services can produce advocacy without another purchase arriving soon. Reward only verified outcomes. Approve the advocate reward after payment clears and the standard cancellation or return window closes, plus a 3–7-day processing buffer . Do not invent a longer delay merely to manufacture breakage; unexplained waits create support volume and distrust. Loyalty works when customers can change the timing, frequency, basket, or channel of a future purchase. The next meaningful reward should be visible within the customer’s normal buying cycle. For a 30-day replenishment product, requiring 12 monthly purchases before any benefit makes progress irrelevant. Test the decision instead of relying on a generic repeat-rate threshold. Randomly hold out 5–10% of eligible customers where sample size permits. After 90 days, compare second-order rate, order count, contribution, and reward cost. Extend the window when the normal repurchase cycle exceeds 90 days. If the loyalty group generates 120 additional orders at $18 contribution each, gross incremental contribution is $2,160. If rewards cost $1,400 and operations cost $500, the test creates only $260 . That is positive, but too thin to support careless expansion. Failure mode: points launch in a category where the median customer has no near-term repeat need. Balances remain inert, expiration causes complaints, and eventual redemption discounts a purchase that required no behavioral change. Use referrals for advocacy; use lifecycle messaging for the long repurchase gap. Separate Ledgers Before Connecting the Experience Customers may see one account, but finance needs two ledgers. Shared branding helps comprehension. Shared accounting hides duplicated incentives, uncontrolled liability, and channel conflict. Connect the experience, not the accounting. Referral ledger: advocate ID, referred-customer ID, qualifying event, approval date, pre-approval discount cost, advocate reward, fraud status, first-order contribution, 30-, 60-, and 90-day contribution. Loyalty ledger: member ID, points issued, points redeemed, outstanding liability, reward cost, control assignment, baseline purchase rate, incremental orders, incremental contribution. Eligibility controls: block self-referrals, reused payment methods, recycled addresses, employee abuse, canceled orders, returned orders, and rewards issued before approval. Channel precedence: decide before launch whether referral codes override affiliate links, welcome discounts, paid-search coupons, or loyalty redemption. Start narrow. Manually review the first 100–300 referral approvals ; inspect duplicate identities, payment methods, contribution, and 30-day quality before automating. For loyalty, run one mechanic, one qualifying behavior, and one holdout. Complexity can wait until measured lift exists. Failure mode: the account page launches before the measurement rules. One order then receives an affiliate commission, referral discount, welcome offer, loyalty points, and free shipping. Five systems report success; finance receives one low-margin transaction. Choose referrals when qualified customer acquisition is the missing behavior and cohort payback beats the next-best channel. Choose loyalty when repeat behavior can move and holdout lift covers every program cost. Run both only after their ledgers, owners, budgets, and approval rules are separate. Once loyalty passes that test, choose the mechanic using frequency, margin, and customer motivation in Points, Tiers, or Cashback . --- # Loyalty Program Breakage: Measure It Without Fooling Yourself https://loyalflow.cc/blog/loyalty-program-breakage-measurement Loyalty program breakage is not evidence that a program works. It measures rewards expected to go unused. High breakage can reduce expected reward cost while exposing weak engagement, unreachable thresholds, or rewards customers do not value. Manage for profitable redemption : claims tied to incremental contribution margin exceeding reward and operating costs. Breakage belongs in the forecast, not on the victory slide. Loyalty Program Breakage Needs a Mature Cohort Breakage is the share of earned reward value expected never to be redeemed. If members earn 10 million points and mature cohort behavior indicates 2 million will remain unused, forecast breakage is 20%. Count the fallen fruit only after the orchard has had time to ripen. The word mature matters. Points earned yesterday remain an outstanding promise, not breakage. Split balances into active redemption windows, expired value, and value projected to remain unused after comparable cohorts have completed most claims. Choose cohort age from purchase cadence and expiry policy. A weekly coffee program may reveal most redemption behavior within 90–180 days. A category bought twice yearly may require 18–24 months. Use the point where the cohort redemption curve has materially flattened, not one universal window. Finance misreads non-redemption: a 35% unused balance looks like lower cost, while active-member frequency falls in the same cohort. Both results describe one weak reward path. Lower claims alone do not prove better economics. Build an earned, redeemed, expired, and outstanding table this week. Compare only cohorts with the same age, earn rules, expiry terms, and market. Trigger review when breakage moves outside the normal range of comparable mature cohorts while purchase frequency also declines. A provisional 5-percentage-point alert is useful when data is thin, but replace it with the observed cohort variation once enough history exists. Reject Universal Breakage Benchmarks A single healthy breakage range does not exist. Automatic cashback, threshold-based points, visit stamps, and subscription benefits create different claim behavior. Expiry, purchase cadence, minimum redemption, and reward presentation can move the result more than the nominal reward rate. Treat outside ranges as planning hypotheses, never industry facts. Model several redemption cases — 60%, 75%, and 90% work as scenario inputs — then test them against mature cohorts. Those figures are scenario inputs, not claims about what every program should achieve. Reward economics still need a reachability check. Treat 1–5% of eligible spend as a design heuristic for loyalty value, not a benchmark, and validate it against your margin. At 1%, a $10 reward requires $1,000 of eligible spend. That may fit weekly grocery spend and fail completely for a store visited twice yearly. A first meaningful reward should normally become visible within 30–45 days or two to four normal purchase cycles . This is another operating hypothesis, not a universal benchmark. Test whether typical engaged members can understand their balance, next action, remaining spend, and reward value within that window. Benchmark copying strands customers: importing a 20% breakage target from another brand ignores cadence, claim mechanics, and reward value. Select mechanics first. The differences among points, tiers, and cashback explain why their breakage cannot be judged against one target. Expiry Should Remove Stale Liability, Not Create It Expiry can prompt action when customers are close to a useful reward. It destroys trust when ordinary buying behavior gives them little chance to claim. The test is reachability, not how quickly accounting liability disappears. Calculate months to first reward using median eligible monthly spend, the earn rate, and the minimum useful claim. If a member spends $100 monthly, earns 2%, and needs $20 before redeeming, the path takes 10 months. A six-month expiry makes the advertised value unattainable for the median member. Short expiry manufactures breakage: reducing validity from 12 months to six months may improve the forecast while weakening future participation. Members learn that balances disappear before becoming useful. Earning then stops influencing purchase choice. Fix reachability before tightening expiry. Lower the claim threshold, add a smaller useful reward, change the earn rate, or extend validity. Recheck contribution margin under each option; generosity without incremental behavior is merely a discount. Outstanding rewards also carry accounting consequences. Recognition and liability treatment depend on contract terms, program structure, jurisdiction, and the accounting framework used by the business. No universal breakage percentage or release schedule is defensible. Finance should approve the policy; operators should supply cohort evidence. Old history becomes obsolete after redesign: last year’s 25% breakage estimate cannot be reused after halving the threshold or enabling automatic credits. Review new redemption velocity after 30, 60, and 90 days, then update the forecast when the changed cohorts have enough evidence. Measure Redemption Against Incremental Margin Breakage becomes useful only beside behavior and unit economics. A lower rate can indicate valuable engagement or expensive subsidy. A higher rate can indicate efficient targeting or a program nobody notices. A redeemed reward works only when the new value outweighs its cost. Keep one cohort dashboard: Reward flow: value earned, redeemed, expired, and outstanding. Balance age: value grouped by earning month and expiry status. Redemption velocity: median days to first and subsequent claims. Behavior change: frequency, spend, and retention against a holdout or matched baseline. Contribution: incremental margin after rewards, discounts, payment fees, and fulfillment. Review young cohorts weekly for operational failures, mature cohorts monthly for forecast changes. Investigate when redemption time rises materially beyond its normal cohort range, frequency declines for two consecutive periods, or actual claims exceed the forecast band. Reward expense gets mistaken for waste: redemption rising from 60% to 75% is not automatically bad. If incremental contribution rises from $8 to $14 per member after reward cost, performance improved. If contribution stays flat, the extra claims bought nothing. Use breakage to forecast cost and diagnose friction. Manage the program on incremental contribution after reward and operating costs. Tie that decision to the retention math every founder should know , then make profitable redemption—not expiry—the operating target. --- # How to Calculate Loyalty Program ROI Without Lying to Yourself https://loyalflow.cc/blog/loyalty-program-roi-calculation Loyalty program ROI is not member revenue divided by reward cost. That calculation credits the program for purchases customers would have made anyway, then ignores technology, operations, fraud, and payroll. It can make a loss-making program look exceptional. The defensible calculation starts with incremental contribution margin: margin generated above what eligible customers would have produced without the program. Measure that lift against a randomized control group, subtract every program cost, then report net ROI and payback. If you cannot isolate incrementality, you do not have an ROI number. You have an attribution story. Loyalty Program ROI Starts With Incremental Margin Revenue is not return. A member spending $500 after enrollment creates no incremental value if that customer would have spent $500 without joining. The program may have attached an ID and a discount to existing demand. Count only the margin the program actually moved. Start with contribution margin: revenue minus variable costs required to fulfill the sale, including product cost, payment fees, shipping subsidies, and variable service costs. Use the same definition finance uses elsewhere. Do not change definitions because a richer margin flatters the loyalty dashboard. Compare eligible customers exposed to the program with eligible customers randomly withheld from it. If exposed customers generate $120 in average contribution margin over 120 days and the control group generates $110, measured lift is $10 per exposed customer. Across 90,000 exposed customers, that produces $900,000 in incremental contribution margin before program costs. The $10 difference belongs in the calculation. The full $120 does not. The failure to avoid is counting every member sale as program-generated. Frequent buyers are usually more likely to enroll, so high member revenue often reflects customer selection rather than changed behavior. Report incremental revenue and incremental contribution margin separately. Use contribution margin as the economic numerator. Set the measurement window before launch and cover at least one normal repurchase cycle; 90–180 days may fit many repeat-purchase businesses, but the correct window comes from your actual reorder interval. Power the Control Group Before Launch A randomized holdout prevents months of attribution arguments. Exclude it from enrollment prompts, member rewards, points messages, and program-specific offers while leaving normal pricing and ordinary marketing unchanged. Plant the control group before harvesting conclusions. Do not default blindly to a 5–10% holdout. Size the test using baseline contribution-margin variance, the smallest lift worth detecting, desired statistical power, and expected sample loss. A 5–10% holdout is only a planning example for a large customer base; it can be badly underpowered when purchase frequency is low or margin variance is high. Define the minimum detectable effect economically. If a lift below $4 per eligible customer cannot repay program costs, design the test to distinguish a $4 lift from zero. Use the prior 6–12 months of customer-level margin data to estimate variance, then calculate the required sample before assigning customers. Compare contribution margin per eligible customer, not per enrolled member. Enrollment is itself affected by treatment. Restricting analysis to members introduces self-selection immediately. Check assignment before launch. Prior 90-day order frequency, average order value, contribution margin, channel mix, and tenure should be similar across groups. Material imbalances indicate broken randomization, eligibility logic, or data capture. The damaging shortcut is launching to 100% of the audience, then constructing a control group afterward. Historical comparisons absorb seasonality, pricing changes, inventory constraints, acquisition mix, and concurrent lifecycle campaigns. A synthetic control can support directional analysis, but it is weaker than random assignment created on day one. Keep the holdout through the predeclared measurement window, ideally covering two expected purchase cycles when volume permits. If withholding the entire program is commercially unacceptable, expose everyone to the base program and randomize the incremental feature: bonus points, tier benefits, or member pricing. Count Every Cost, Then Run the Math Total program cost extends well beyond redeemed rewards. Maintain one monthly ledger covering: rewards, discounts, cashback, free products, shipping benefits, and partner reimbursements; platform fees, implementation, integrations, data work, and payment processing; operations, support, creative production, lifecycle marketing, and staff time; fraud, account abuse, manual adjustments, and reward-liability administration; launch incentives, training, legal review, and directly caused overhead. Treat breakage cautiously. Unredeemed points reduce eventual reward expense, but they are not profit on issuance day. Estimate redemption from mature cohorts, update assumptions quarterly, then reconcile estimates against actual claims. A 30-day-old program does not have credible long-term breakage data. Suppose the exposed group creates $900,000 in incremental contribution margin. Rewards cost $320,000, technology and operations $180,000, marketing $90,000, and fraud plus support $60,000. Total program cost is $650,000. The return multiple is incremental contribution margin divided by total cost: $900,000 divided by $650,000 equals 1.38x . Net ROI is incremental contribution margin minus total cost, divided by total cost: ($900,000 − $650,000) divided by $650,000 equals 38.5% . State which measure you use. Calling 1.38x “138% ROI” confuses gross return with net return. Payback answers another question: how quickly cumulative incremental margin repays launch and operating spend. If launch costs $300,000 and monthly net incremental margin after recurring costs averages $75,000, simple payback is four months. Use monthly cohorts when seasonality or rollout ramp makes that average unstable. The classic accounting failure is excluding payroll, platform fees, launch bonuses, and fraud because they sit outside the rewards budget. That measures reward efficiency, not program ROI. Build downside cases from evidence, not round-number pessimism. Use the lower bound of the measured lift confidence interval, observed redemption-cost variance, and the slowest credible rollout ramp. Replace those assumptions each quarter as cohorts mature. Reject Metrics That Flatter the Program Enrollment, member revenue, points issued, and redemption volume are operating metrics. They diagnose reach or engagement. None proves incremental profit. Gross member revenue is especially dangerous. A program can report 40% of sales from members while destroying margin through discounts. Enrollment may rise because of a costly sign-up bonus; redemptions may indicate healthy engagement or excessive subsidy. Track incremental purchase frequency, incremental contribution margin, retained-customer lift, reward cost per incremental order, net ROI, and payback. Segment results by acquisition cohort, prior purchase frequency, channel, and tenure. Positive aggregate ROI can hide a loss-making segment receiving benefits without changing behavior. The flattering comparison is “members spend 2x more than nonmembers.” If those customers already spent 2x more before joining, measured lift is zero. The program may now pay them for unchanged purchases. Review costs monthly, cohort economics quarterly, and incrementality after the predeclared test window. Publish the return multiple, net ROI, confidence interval, and payback together. Force every claimed benefit through contribution margin. Loyalty cannot repair weak retention economics. Before defending program lift, align the underlying assumptions using the retention math every founder should know ; otherwise, even a clean experiment feeds an unreliable model. Frequently asked questions Can loyalty program ROI be calculated without a holdout group? Not defensibly. Without a randomised control you cannot separate purchases the program caused from purchases that would have happened anyway, and frequent buyers enrol more readily, so member revenue reflects selection as much as behaviour. A synthetic control built after launch can support directional analysis, but it absorbs seasonality, pricing changes and acquisition mix, which makes it weaker than random assignment created on day one. If you cannot isolate incrementality you do not have an ROI number, you have an attribution story. Is a 1.38x return the same as 138% ROI? No, and conflating them overstates the result. The return multiple is incremental contribution margin divided by total cost: $900,000 divided by $650,000 is 1.38x. Net ROI subtracts the cost first: ($900,000 − $650,000) divided by $650,000 is 38.5%. Publish which measure you are quoting alongside the confidence interval and payback period. Should unredeemed points be counted as profit? Not on the day they are issued. Breakage does reduce eventual reward expense, but it is an estimate until the cohort matures. Estimate redemption from mature cohorts, update the assumption quarterly, and reconcile against actual claims. A programme that is 30 days old has no credible long-term breakage data. Which costs belong in the denominator? All of them. Rewards, discounts, cashback, shipping benefits and partner reimbursements, plus platform fees, implementation, integrations and data work, plus operations, support, creative, lifecycle marketing and staff time, plus fraud, account abuse, manual adjustments and reward-liability administration. Excluding payroll, platform fees or fraud because they sit outside the rewards budget measures reward efficiency, not programme ROI. --- # Loyalty Program Devaluation: A 60–90-Day Migration Plan https://loyalflow.cc/blog/loyalty-program-devaluation-migration-plan The short version: Loyalty program devaluation becomes dangerous when it rewrites accrued value, hides the loss, or bundles several cuts together. Quantify member impact, protect existing balances, stage the change over 60–90 days, then test retention with a comparison designed before launch. Key takeaways Calculate value loss by member, including explicit counts of extreme losses. Default to grandfathering accrued value; prospective changes preserve the original bargain. Reconcile every balance before notice using a deterministic ledger equation. Stagger material cuts so complaints, retention, and margin changes remain attributable. Predefine sample size, comparison cohorts, measurement windows, and reversal rules. Price the loyalty program devaluation by member Model four mechanisms: lower earn rates, higher redemption prices, removed perks, and harder tier qualification. Convert each into annual value lost for every affected member. Program averages hide members carrying 80,000 points or purchasing specifically to retain status. The average looks smooth until one member hits the crater. For points, compare value under old and new rules using rewards members actually redeemed. Moving a $5 reward from 500 to 650 points cuts point value from 1.00 cent to 0.77 cents, a 23.1% reduction. This arithmetic belongs in SQL or a spreadsheet, not a judgement model. For perks, use observed usage where replacement cost exists. Removing a $10 monthly benefit used six times annually removes $60 of observed value, not $120 of theoretical value. Join balance, redemption, tier, spend, contribution margin, and perk usage by customer_id . Inspect the 50th, 75th, 90th, and 99th percentiles as a reporting convention, then count members above explicit dollar and spend-percentage boundaries. An illustrative review boundary is $50 lost or 2% of annual spend; replace it with limits your margin and service authority support. Manually review the top 25 losses too: percentiles can conceal a tiny catastrophic tail. Impact-model failure: finance calculates liability reduction while lifecycle marketing drafts the announcement. Without a member-level join, severe losses surface only through complaints. Protect accrued value and reconcile the ledger Default to grandfathering points already earned. Members purchased under the old conversion rule. Applying worse redemption terms retroactively converts a prospective program change into confiscated value. Every point needs a place before the announcement does. A dual ledger preserves old conversion rules while applying new rules prospectively. Old points retain their prior rate for a disclosed window; new points follow new terms. If the platform cannot support two ledgers, offer old-price redemption for 30–60 days, selecting the window from observed purchase intervals and time to reach a usable reward. Before notice, reconcile each account deterministically: opening + earns - burns - expiry + adjustments = closing . Count mismatches, total their absolute point value, investigate every negative balance, then rerun until unexplained variance equals zero. Sample review alone cannot prove ledger integrity. Transition compensation should repair measured loss. A member losing a $40 perk does not need 100 points worth $1. Use a fixed credit, temporary multiplier, or tier extension tied to the removed value; six- or 12-month extensions fit annual qualification cycles, while shorter extensions fit quarterly cycles. Ledger failure: preserving the point count while reducing what those points buy. “Your balance is unchanged” remains mathematically true but economically misleading. Stage notice, launch, and service recovery Use 60–90 days as an operating heuristic for frequently purchased programs: weekly buyers receive several cycles; monthly buyers receive at least two. Infrequent-purchase programs may need 120 days or a design without points. A staged change gives the impact somewhere to go. An illustrative sequence: use days 0–14 for reconciliation, eligibility testing, support training, and exception rules. Use days 15–45 for notice and protected redemption. Send balance-specific reminders during days 46–60, launch during days 60–90, then reserve 30 days for service recovery. Adjust every boundary to purchase cadence, contract terms, and local law. State five things in order: exact change, effective date, protected value, available action, compensation. Write “From 1 September, earn 1 point per $2 instead of 1 point per $1.” Do not describe a 50% earn-rate cut as simplification. Send initial notice 45–60 days before launch, a reminder 14 days before, then confirmation on the effective date. This cadence is a planning heuristic, not a legal standard. Use consented channels, show a normal purchase example, show the member’s balance impact where supported, and keep material restrictions in the message body. Do not launch earn cuts, reward inflation, tier changes, and perk removals together. Separate material changes by one observed purchase cycle as an attribution rule; use your median repeat interval to define that cycle. Attribution failure: bundled cuts produce one aggregate retention movement. The operator cannot identify which mechanism caused it or which change to reverse. Measure retention with an executable comparison Track purchase retention, frequency, redemption, outstanding-point breakage, support contacts, tier activity, and gross margin at fixed 30-, 60-, and 90-day windows. These are lifecycle reporting conventions; add longer windows when the normal repeat interval exceeds 90 days. Every rate needs an eligible-member denominator. A fair comparison starts before the clock runs. For a randomized delayed-treatment group, size the test before assignment. Worked example: baseline 90-day retention 40%, minimum detectable change 3 percentage points, two-sided 5% significance, 80% power. A standard two-proportion calculation requires about 4,240 members per arm; allowing 10% eligibility loss requires roughly 4,710 assigned per arm. If that population is unavailable, admit that the test cannot reliably detect a three-point change. Randomize stable customer_id values after eligibility is frozen. Confirm arm counts, baseline retention, balance, tier, tenure, and spend are acceptably balanced using the predeclared randomization report. Measure crossover: members receiving the wrong terms create contamination and weaken the estimate. Delayed treatment also requires contractual, fairness, and legal approval. Without randomization, define one index date and exact eligibility rule. Match affected members to untreated historical or regional members on calendar period, tier, balance band, tenure band, and pre-period purchase cadence; make bands illustrative, publish them before analysis, and remove records lacking common support. Use the same 90-day pre-period and 90-day post-period for both groups. Estimate difference-in-differences: affected-group change minus comparison-group change. Plot at least six pre-period cohort outcomes and reject the comparison if trends diverge materially before the index date. This method still cannot remove unobserved differences, so report it as observational evidence rather than experimental proof. Predeclare reversal using economics plus statistical evidence. Example: three planned looks at days 30, 60, and 90 use a Bonferroni-adjusted significance level of 1.67% per look; require both retention harm and contribution-margin loss above a business threshold derived from the approved migration case. Backtest the rule against at least 12 mature historical cohorts; if it repeatedly triggers without interventions, revise the boundary before launch. Measurement failure: higher breakage gets labelled savings while repeat purchases deteriorate. Breakage reduces liability; it does not establish healthier retention. For balance governance supporting this migration, use Loyalty Points Liability: Build Controls Before Campaigns . Frequently asked questions Should every existing balance be grandfathered? Default to grandfathering because it avoids retroactive value reduction. Confirmed fraud, legally required closure, or financial distress may require exceptions; disclose the conversion and offer a practical redemption path. How much notice should members receive? Contractual and legal requirements control. Operationally, 45–60 days is a workable starting point for a frequently purchased program; extend it when members purchase less often or need longer to reach a redeemable balance. When should the devaluation be reversed? Reverse or amend it when the predeclared test shows retention and contribution-margin harm exceeding the approved economic boundary. Define the action, owner, and decision date before launch; post-launch debate otherwise moves the threshold. --- # Loyalty Program Migration Without Losing Member Balances https://loyalflow.cc/blog/loyalty-program-migration-member-balances The short version: A loyalty program migration is a ledger transfer, not a software import. Preserve each rule’s economic meaning, reconcile every member, force timing defects with deterministic fixtures, then cut over only after rollback passes explicit ledger and transaction gates. Key takeaways Treat points, rewards, expiries, and pending transactions as financial records. Accept zero unexplained member-level variance, not merely matching totals. Separate elapsed parallel operation from forced tests for duplicates, reversals, expiry, and event order. Size cutover and rollback tests from measured production volume. Keep one writable ledger until every cutover gate passes. Platform selection ends when the contract is signed. Migration control starts there. Turn the requirements defined during Loyalty Program Software: Buy for Requirements, Not Features into migration acceptance criteria rather than leaving them in procurement paperwork. Map economic rules before moving records Start with the source ledger. Map member_id , balance type, account status, expiry date, tier, pending points, adjustments, reversals, reward reservations, and transaction history. For each field, record whether it transfers directly, transforms, or has no target destination. Matching fields mean little when the economic shape changes. A matching field name does not prove matching behavior. One platform may expire points transaction by transaction; another may expire the full balance after inactivity. Both can expose expiry_date while granting different member value. Flag every change in economic meaning. Examples include rounding 99.6 points to 100, combining balance buckets, dropping pending points, or replacing rolling tier qualification with calendar-year qualification. Product, finance, and support must approve each change with the affected member count and liability amount. Set history depth from the longest refund, dispute, expiry, settlement, accounting, and service window. If refunds remain possible for 90 days, importing 30 days of transactions cannot explain every valid reversal. Those figures are a policy example; use the longest applicable window in your operation. Configuration-first failure: the team accepts the target platform’s defaults, then forces source records into them. The import completes while expiry, tier, or redemption rights change quietly. Reconcile every member, not just aggregate liability Run deterministic reconciliation outside both platforms. Compare member counts, account states, positive and negative balances, pending balances, reward counts, tier counts, expiry dates, and aggregate point liability. SQL or a spreadsheet should perform arithmetic, duplicate detection, and referential-integrity checks; people should review only explained exceptions. A sound total can still hide a broken member record. Totals cannot detect offsetting errors. Two members can be wrong by 5,000 points in opposite directions while aggregate liability still matches. Calculate a delta for every member and every balance bucket, then produce an exception file containing member_id , source value, target value, delta, reason code, owner, and approval status. Compare distributions as a second control. Count members at zero, below zero, near redemption thresholds, and in high-balance bands. Derive boundaries from source percentiles or configured reward thresholds; bands such as 0, 1–999, and 1,000+ are illustrative, not universal cut-offs. Accept zero unexplained variance. Numerical differences may remain for approved test-account removal or legally expired balances, but each needs a member list, reason, owner, and liability amount. Report both denominators: affected members divided by imported members, plus affected liability divided by imported liability. A statement such as “99.9% matched” is incomplete. Ten failures among 10,000 members may include low-value test accounts or the program’s largest balances. The member and liability denominators distinguish those outcomes. Completion-message failure: a vendor reports that the import job succeeded, so the team skips independent reconciliation. Job completion proves records were processed; it does not prove member rights survived. Force defects instead of waiting for them Parallel operation and fixture testing answer different questions. Run both platforms for one complete transaction cycle — 7 to 30 days for most order-to-settlement timings — to observe ordinary production timing. This range is an operating heuristic; derive the final duration from your longest settlement, refund, batch, expiry, and reversal latency. If sequence can break, make it break on schedule. Elapsed time will not reliably produce rare conditions. Webhooks, batch settlement, and retries can deliver events out of order, but a quiet test period may contain no duplicate or boundary event. Inject those cases deliberately. Create a fixture catalog with the source event, initial ledger state, expected ledger rows, expected final balance, and expected member status. Include at least these six baseline scenarios: ordinary earn, duplicate earn delivery, refund after redemption, reversal after tier crossing, expiry during a pending transaction, and purchase across the program’s date boundary. Six is the stated baseline because each represents a distinct mechanism discussed here; add one fixture for every custom earning, redemption, expiry, and tier rule configured in your program. For the duplicate fixture, send one original event plus one duplicate and one retry using the same immutable event ID. The expected result is one posting, two rejected or ignored deliveries, and one final balance movement. For out-of-order testing, send a reversal before its original transaction, then verify the documented pending or rejection behavior before replaying the original. Record coverage counts: configured rule paths, fixture-covered paths, fixtures run, fixtures passed, and unexplained output differences. Pass only when every configured rule path has a fixture, every fixture matches its expected ledger rows and final state, and all differences are explained and approved. Happy-path failure: the team observes ordinary earns for three days and sees matching totals. Duplicate handling, month-end processing, scheduled expiry, and reversals remain untested because none happened naturally. Cut over only after rollback passes measurable gates Write the cutover runbook before rehearsal. Name the final export time, write-freeze start, validation gates, routing change, go/no-go owner, rollback triggers, recovery steps, and support owner. Use named people rather than departments. Do not release the old ledger until the safety line holds. Stop balance-changing writes during the final transfer or queue them with immutable event IDs. Size the freeze from measured export, import, reconciliation, and routing durations, then add contingency based on rehearsal results. An arbitrary two-hour window has no operational basis. Build the rollback rehearsal from production telemetry: peak events per minute, largest observed queue, active member count, ledger size, and measured export/import duration. Use at least the observed peak rate and queue depth; if the test environment cannot sustain them, document that capacity gap rather than calling the rehearsal production-shaped. Rollback passes only when source routing is restored, each queued event ID posts once, member-level reconciliation shows zero unexplained delta, and test members complete one earn and one redemption successfully. Also verify authentication, reward reservation, and support lookup. State the last safe reversal point because rollback becomes harder once target-only transactions accumulate. Tell members what remains unchanged before describing new features: balance, rewards, tier, access, and downtime. After cutover, show the transferred balance with an effective timestamp. Suppress promotions for unresolved cases; Lifecycle Suppression Rules: Stop Marketing Through Service Failures provides the related operating rule. Paper-rollback failure: traffic returns to the old platform, but queued events replay twice because event IDs were not preserved. The recovery creates a second ledger incident instead of resolving the first. Frequently asked questions What reconciliation variance is acceptable? Zero unexplained variance. Approved exclusions can exist, but each requires a member-level record, reason, owner, approval, and liability amount. How long should platforms run in parallel? Run for one complete transaction cycle; 7 to 30 days works as an operating heuristic, measured from your own order timing. Derive the period from your settlement, refund, batch, expiry, and reversal timing; use forced fixtures for rare conditions. How much transaction history should migrate? Import enough to cover the longest refund, dispute, expiry, accounting, and service window. If full history is impractical, retain a searchable read-only archive linked by member and transaction ID. When does rollback stop being safe? When target-only transactions can no longer be replayed accurately into the source ledger. Establish that boundary during rehearsal, record it in the runbook, and require explicit approval before passing it. --- # Customer Beta Testing: Pay for Research, Not Loyalty https://loyalflow.cc/blog/customer-beta-testing-research-protocol The short version: Customer beta testing buys structured product evidence, not loyalty. Pay for defined tasks, size attempts against the defects you need to detect, keep incentives outside loyalty reporting, then treat repeat use as a separate measurement problem. Key takeaways Pay a fixed, modest amount for a short test — set it against your own average order value; never vary compensation by sentiment. Allocate attempts by risky journey, not every possible demographic cross-section. Use defect prevalence to set sample size: a 5% defect needs 59 relevant attempts for a 95% chance of observation. Exclude incentivized test orders from reuse metrics; mature both comparison cohorts for 30 days. Reconcile incentives, payments, charges, and orders with deterministic rules. Customer beta testing needs a research contract A beta participant can praise an app, accept $10, then never order again. The payment bought attention and task completion. It did not buy retention, establish preference, or prove that the product change caused later behavior. The payment closes the task, not the customer relationship. Define the contract before recruitment: eligible customers, tested platform, required journeys, evidence requested, payment, start date, end date, and decision owner. A 7–14-day window works for a short consumer-app beta because it gives participants several opportunities without turning the exercise into an open-ended panel. Pay a fixed $5–$15 for up to 30 minutes . Raise that amount when testing requires purchases, multiple sessions, specialist users, or screen recordings. Reimburse required spending separately; otherwise a nominal $10 payment can become negative compensation after delivery fees or travel. Prompts should avoid suggesting the desired answer. Ask “What happened after you selected checkout?” rather than “How easy was checkout?” The first wording reduces pressure to agree with the researcher while preserving room for positive, negative, or mixed evidence. The classic failure: awarding points, prize entries, or extra payment for a five-star review. That changes the task from finding defects to producing approval. Fix compensation before the test and state that criticism cannot reduce payment. Size the beta around defects, not segments Do not divide 50 testers across platform, lifecycle stage, fulfillment method, payment type, market, and order frequency. Those dimensions create more crossed cells than the sample can support. A cell containing 8–10 people may expose an obvious failure, but it cannot reliably detect a rare one. Rare defects require wider coverage, not thinner slices. Set a target defect rate and observation probability for each critical journey. The probability of seeing at least one defect across n independent relevant attempts is 1-(1-p)^n , where p is the assumed defect rate. For a 95% observation chance, a 5% defect requires 59 attempts; a 1% defect requires 299. These are attempts, not recruited customers. One tester can provide several attempts only when the attempts are genuinely separate opportunities for the defect to occur. Repeating the same failed checkout on one device does not provide independent coverage of markets, payment processors, or operating systems. Allocate coverage by journey first: authentication, store selection, basket restoration, offer application, fulfillment changes, payment, cancellation, and help. Add explicit platform or customer strata only where the underlying state differs. Saved-card customers deserve separate coverage when token migration changed; arbitrary age bands do not unless the test has a reason to expect different behavior. A beta still cannot certify the absence of defects. If zero failures appear in 59 attempts, that does not prove a zero failure rate. Report the attempts, observed failures, journey, platform, and exposure conditions so the release owner can judge residual risk. The classic failure: declaring “no payment issues” after ten successful attempts. If the true defect rate were 1%, ten independent attempts would have only about a 9.6% chance of observing at least one failure. The test barely challenged the claim. Measure orders and reuse with valid denominators Instrument each funnel before testing. Checkout completion uses started checkouts as its denominator; payment failure uses payment attempts; support-contact rate uses eligible attempts or completed orders, stated explicitly. Counts without exposure cannot distinguish a widespread defect from a heavily used feature. Keep the paid trial in the record—and out of the denominator. Track checkout completion, technical failures, median ordering time, support contacts per 100 attempts, duplicate charges, and orders missing after successful payment. Detect duplicate charges by reconciling payment-provider transaction IDs against order IDs and charge states. Beta comments can flag the symptom; they cannot perform the reconciliation. Predeclare release thresholds. One workable structure is checkout completion no more than 2 percentage points below the current flow, zero unreconciled duplicate charges, zero inaccessible controls blocking purchase, and median ordering time within 10% of baseline. These are operating tolerances, not universal benchmarks; tighten or loosen them using order value, traffic, customer harm, and rollback cost. Thirty-day reuse requires an eligible denominator and a mature observation window. Exclude incentivized test orders, define eligibility on the same date, and wait until every included customer has had 30 full days to return. Report the absolute reuse-rate difference with a 95% confidence interval rather than presenting the point estimate alone. For a causal relaunch claim, use randomized staged access where operationally possible. Assign eligible customers within the same platform, market, prior-order band, and promotion rules to old or new experiences; predeclare a non-inferiority or lift threshold; analyze assignment rather than voluntary adoption. If randomization is unavailable, match on prior frequency, recency, market, platform, and promotion exposure, then label the result observational because unmeasured selection remains. The classic failure: comparing enthusiastic beta volunteers with all prelaunch customers. Different prior frequency, promotion exposure, store availability, and self-selection can impersonate product improvement. A baseline supplies context; it does not isolate causality. Keep incentives outside loyalty economics Book beta compensation to research or product, not loyalty rewards expense. Maintain a separate ledger containing research_id , offer date, completion status, amount, payment date, reversals, and expiry. Reconcile issued, paid, expired, reversed, and outstanding amounts arithmetically. Reward the research; leave loyalty accounting untouched. A fixed-value payment avoids point valuation, earn-rate, redemption, and breakage attribution. If points are operationally unavoidable, apply a distinct reason code such as beta_research , publish any 30–90-day expiry before participation, and exclude those points from campaign ROI and organic earning reports. Use one incentive per verified participant, then check duplicate account, payment instrument, phone, address, and device signals where lawful. Route ambiguous household matches to review rather than blocking automatically. The minimum control set is covered in Loyalty Program Fraud Prevention: Six Minimum Controls . If a vendor receives customer IDs, contact details, order history, recordings, or device data, tell participants which fields leave your systems and who receives them. Send only what recruitment, payment, and analysis require; substitute an internal research ID when direct identity is unnecessary. The classic failure: issuing ordinary bonus points without a separate reason code. Research spending then inflates issued currency, changes redemption timing, and appears as loyalty activity despite measuring product usability. Convert confirmed failures into testable acceptance criteria, owners, and release gates. Loyalty Program Software: Buy for Requirements, Not Features provides the adjacent procurement discipline. Further reading: www.marketingdive.com Frequently asked questions How many beta testers are enough? No universal count works. Choose the defect rate worth detecting, required observation probability, and number of independent relevant attempts. Use 1-(1-p)^n ; recruit enough customers to produce those attempts across the states that can change the result. Can beta participation measure loyalty? No. Participation measures willingness to test under the offered terms. Measure later ordering separately, exclude incentivized orders, mature the observation window, and use randomized staged access when making causal claims. Should loyalty members join the beta? Yes, when they represent the tested journey. Stratify by prior frequency because experienced members know the existing workflow; compare their task results with newer or lower-frequency customers rather than assuming either group is representative. --- # Customer Loyalty Program: Define the Repeat Behavior First https://loyalflow.cc/blog/customer-loyalty-program-repeat-behavior The short version: A customer loyalty program needs a precise behavior contract before it needs rewards or software. Define the eligible customer, qualifying event, start timestamp, observation window, identity rules, and reversals; otherwise repeat-rate reporting will not survive scrutiny. Key takeaways Specify one repeat event using fields that data systems can evaluate deterministically. Anchor the observation window to an eligibility timestamp, not enrollment or campaign delivery. Keep every eligible customer in the denominator, including non-buyers and unredeemed offers. Resolve identity, cancellations, refunds, and role-versus-purchase cases before launch. Estimate lift only after checking sample size, assignment integrity, and complete observation time. Write the customer loyalty program behavior contract “Increase engagement” is not a program objective. Neither is “drive loyalty.” A usable objective names one population, one observable event, and one deadline: first-time lunch buyers complete a second paid lunch order within 30 days of their first completed order. Loyalty starts when one exact action rings the bell. Turn that sentence into a data contract. At minimum, define customer_id , eligible_at , event_at , event_type , order_status , and net_revenue . Specify exact accepted values: for example, only order_status=completed qualifies; pending, cancelled, fully refunded, test, and staff orders do not. The qualifying event must represent the behavior being funded. If the objective is another paid order, an app open, coupon save, email click, or points balance increase cannot substitute for it. Those events may diagnose the path, but they do not satisfy the contract. The classic failure: the team defines “repeat customer” after seeing the report. One analyst counts any second order; another excludes refunds; a third starts the clock at enrollment. Freeze the definition before exposure, version any later change, then rerun treatment and comparison groups under the same version. Anchor the window and denominator correctly The window starts when the customer becomes eligible for the target behavior. For a second-purchase program, that may be the first order’s completion timestamp. Campaign delivery is not the correct anchor when messages arrive hours or days later, because it gives customers different behavioral windows. Count the quiet customers too. Define boundary handling explicitly. A 30-day window can use event_at>eligible_at and event_at<=eligible_at+30d . Pick one timezone, document whether the final boundary is inclusive, then apply the same rule in campaign selection and reporting. The repeat-rate denominator is every eligible customer whose full outcome window has matured. If 800 first-time buyers became eligible and 144 completed the event, repeat rate is 18%. Do not divide by members who opened the email, activated the offer, or returned to the site; those filters remove non-responders and inflate the result. Late entrants need time to mature. Someone eligible yesterday cannot yet be classified as a 30-day non-repeater. Either wait until the full cohort completes its window or report fixed entry cohorts separately, with matured_eligible as the denominator. Denominator trap: a dashboard silently excludes customers with no later event because its query begins from the purchase table. Build the eligible population first, then left-join qualifying events. Reconcile the eligible count against the source-system extract before calculating any rate. Set identity, role, and reversal rules before rewards A behavior contract fails when one person appears under several IDs or several people share one ID. Choose the identity key used for eligibility and measurement. Email, phone, account ID, payment token, and household ID answer different questions; document merge priority plus the treatment of missing or changed identifiers. Identity checks are deterministic work. Flag duplicate source IDs, missing keys, impossible timestamp order, and one order attached to multiple customers. Reviewers decide ambiguous merges; code should enforce settled rules consistently rather than guess. Purchaser and value-creating participant may differ. A designated driver, event organizer, household shopper, or referrer can create the desired outcome without buying the rewarded item. If that is the intended behavior, store the role event separately instead of forcing it into an order definition. The distinction also appears in Designated Driver Rewards: Reward the Role, Not the Purchase . Define reversal timing too. A qualifying order refunded 10 days later should normally reverse both the event and its associated reward under a paid-purchase objective. Set a reporting delay matching the refund window, or publish provisional and settled measures separately. The classic failure: campaign selection uses account ID while reporting deduplicates by email. Treatment exposure and outcomes then operate at different units. Use one declared randomization and measurement unit, preserve its assignment, then reconcile exclusions and reversals against that unit. Test economics only after the event can be trusted Once the behavior is stable, assign eligible units to treatment and holdout before sending the reward. Analyze by original assignment, including treatment customers who never opened or redeemed. Removing them measures responders, not the effect of offering the program. Sample size must match the lift worth funding. Inputs are baseline rate, minimum detectable lift, two-sided significance level, desired power, treatment allocation, expected attrition, and any clustering by store or household. With an 18% baseline, a 3-percentage-point target lift, 5% significance, and 80% power, a standard two-proportion calculation needs roughly 2,700 customers per arm before attrition; 600 per arm will often leave that effect unresolved. Use a statistical power calculator or validated statistics package for the arithmetic. If randomization occurs by store, a customer-level calculation is insufficient because outcomes within stores may be correlated. Use a cluster-aware calculation based on the number of stores and an estimated intracluster correlation, or avoid a causal scale claim. Duration follows the behavior, not a fixed calendar rule. Required time equals recruitment period plus the complete outcome window plus any pull-forward window. For a 30-day repeat event with 21 days of recruitment and another 30 days needed to detect displaced purchases, the earliest settled read is 81 days after recruitment begins. Calculate incremental contribution per eligible customer as treatment contribution minus holdout contribution, then subtract incremental reward, communication, fulfillment, fraud, and variable operating costs. Measure cumulative contribution through the pull-forward window; merely looking for a later rate dip can miss changes in order value or margin. The classic failure: a team launches for six weeks because six weeks fits the planning cycle, then calls an immature cohort profitable. Prewrite the minimum detectable lift, sample requirement, maturity date, exclusions, profit equation, and stop rule. If the available audience cannot support the planned inference, narrow the claim or choose a larger commercially meaningful lift. Software comes after these definitions. When manual identity matching, reversals, or reward reconciliation become the constraint, use Loyalty Program Software: Buy for Requirements, Not Features to frame the purchase. Frequently asked questions What is the minimum viable repeat-behavior specification? Name the eligible population, eligibility timestamp, qualifying event, deadline, identity unit, accepted statuses, exclusions, and reversal rule. Add the numerator and matured denominator used for reporting. Should enrollment start the observation window? Only when enrollment itself creates eligibility for the behavior. For second-purchase measurement, anchor the window to the first qualifying purchase; otherwise enrollment timing changes the time available to repeat. Can a small customer loyalty program use a holdout? Yes, but a holdout does not guarantee a decisive result. Calculate sample needs first. A small audience may support only a larger detectable lift, pooled recruitment over more cohorts, or a directional estimate with explicit uncertainty. Should the first reward use points? Use points only when progress across purchases is part of the intended mechanism. A voucher or account credit requires fewer ledger states; points add accrual, expiry, reversal, liability, and fraud rules that must be reconciled. --- # Designated Driver Rewards: Reward the Role, Not the Purchase https://loyalflow.cc/blog/designated-driver-rewards-role-purchase The short version: Designated driver rewards test whether recognizing an occasion-enabling role produces more completed group visits or returns. Verify eligibility, randomize the offer, size the test from booking volume, then estimate absolute lift and cost per incremental visit. Key takeaways Reward the designated role with one fixed-value benefit per eligible booking. Randomize eligible bookings 50/50; self-selected participation cannot establish incrementality. Size the pilot from baseline behavior and minimum worthwhile lift, not a 6–8-week calendar. Track absolute attendance or return lift, confidence intervals, contribution margin, and total variable cost. Use deterministic booking, redemption, cancellation, and duplicate controls before considering points. Designated driver rewards value the group occasion Transaction-led loyalty rewards whoever spends. Group occasions work differently: a low-spend participant can remove a transport objection and make attendance possible for several other guests. That is a hypothesis worth testing, not proof that every designated driver creates incremental revenue. The smallest receipt may unlock the whole occasion. The useful unit is the eligible booking , not the driver's receipt. Record party size, venue, booking date, attendance, reward assignment, redemption, and subsequent completed bookings. Individual spend remains useful for margin analysis, but it cannot describe the whole occasion. A practical first rule: require a confirmed booking for at least 3–4 guests and nominate one participant before arrival. Give that participant a fixed $10–$20 benefit, such as a rideshare credit or nonalcoholic-drink allowance. Avoid a percentage discount; the reward recognizes a role rather than scaling with table spend. The trap is assigning economic value from one observed receipt. A driver ordering a $4 soft drink may have enabled the visit, or may simply have joined a visit that was already happening. Only a controlled comparison can separate those explanations. Test designated driver rewards with randomized bookings Do not compare bookings with a declared driver against bookings without one. Driver presence self-selects, so those groups may differ in party composition, travel distance, alcohol plans, or booking intent before the reward appears. Let chance choose before behavior can choose for you. Instead, determine eligibility first, then randomly assign eligible bookings 50/50 to treatment or control before revealing the offer. Stratify assignment by venue, weekday or weekend, and party-size band such as 3–4, 5–6, and 7+. This keeps obvious operating differences balanced without pretending matching removes every hidden difference. Choose one primary outcome before launch. Completed attendance is appropriate when the offer aims to prevent cancellation or no-show behavior. A completed return within 60 days is appropriate when the claim concerns retention, but only analyze bookings whose full 60-day observation window has elapsed. Size the test from the effect the economics require. As an illustration, detecting a return-rate change from 20% to 23% with 80% power and a 5% significance level needs roughly 2,900 bookings per arm. With 400 bookings per arm, the realistically detectable difference is closer to 8 percentage points. Exact requirements should come from a two-proportion power calculation using your baseline, minimum worthwhile lift, power, and significance level. Calendar length follows sample size. A venue network producing 1,000 eligible bookings weekly may finish quickly; one producing 100 weekly will not. Use 6–8 weeks as an operating window only when it supplies the required observations and covers representative weekdays, weekends, and pay cycles. The trap is calling matched or before-and-after results causal. Seasonality, local events, venue promotions, and booking mix can move outcomes without the reward. Random assignment gives the incrementality claim a procedure capable of testing it. Verify eligibility and cap cost before launch Eligibility control is deterministic. Require a unique booking_id , one named participant, confirmed attendance, one reward status, cancellation exclusion, and one redemption per booking. If a nonalcoholic purchase is required, capture the qualifying POS item instead of relying on staff memory. One eligible booking, one bounded benefit. Use a bounded redemption window, such as 24 hours before through 24 hours after the scheduled visit. The point is not that this window is universally superior. A bounded window limits unmatched records and late claims; widen it only when partner settlement timing requires more room. Set a fixed face value and hard issuance cap. A $20,000 budget with a maximum $20 reward permits no more than 1,000 issued rewards before partner fees, support costs, and taxes. Reserve those extra costs explicitly rather than discovering that the nominal voucher budget was not the pilot budget. Block duplicate IDs, cancelled bookings, reused reward codes, and ineligible venues immediately. Rate-based fraud stops need enough claims to interpret: two invalid claims among 40 submissions already equal 5%, but that estimate is unstable. Review an invalid-claim rate only after a predefined floor such as 200 claims, report its uncertainty, and keep immediate security blocks active regardless of sample size. The trap is treating self-declaration as verification. Shared screenshots, repeated contact details, and cancelled reservations can consume budget while producing no completed occasion. The minimum control set in Loyalty Program Fraud Prevention: Six Minimum Controls provides a useful extension. Make the decision from lift and margin Analyze the randomized groups as assigned, including treatment bookings that never redeem. Excluding non-redeemers selects customers after assignment and overstates the offer's effect. Report the treatment and control rates, absolute percentage-point lift, confidence interval, and number of assigned bookings in each arm. For attendance, divide attended bookings by all assigned eligible bookings. For 60-day return, divide groups with another completed booking by assigned groups whose observation window has fully elapsed. Define the group identifier before launch; changing from booker-level to participant-level identity after seeing results invites a favorable answer. Estimate incremental visits as treatment assignments multiplied by absolute lift. Then divide reward, partner, support, and payment costs by estimated incremental visits. If treatment attendance is 74% versus 70% across 1,000 assigned bookings, the point estimate is 40 incremental visits; uncertainty around the 4-point lift must accompany that estimate. Set the commercial threshold before launch. Break-even lift equals variable pilot cost per treatment assignment divided by contribution margin per incremental visit. If cost per assigned treatment booking is $4 and contribution margin per incremental visit is $50, break-even requires an 8-percentage-point lift before fixed setup costs. The trap is reporting 1,000 issued vouchers as success. Issuance measures distribution. The decision requires an estimated behavioral lift, uncertainty range, and contribution after reward costs. Survey approval can explain reactions, but repeat behavior determines the retention result; NPS vs Repeat Rate: Behavior Proves Retention covers that distinction. Further reading: www.marketingdive.com Frequently asked questions Should designated drivers earn loyalty points? Not in the first test. Use an immediate fixed benefit until the operator can identify the same participant across bookings and observe profitable repeat behavior over 30–60 days. Points add liability, expiration rules, support work, and another fraud surface. Who should fund the reward? Assign funding against measurable value. The venue may pay for incremental contribution, the brand for qualified participation, the booking platform for completed reservations, and the mobility partner for acquired rides. Document each party's maximum exposure, settlement field, refund rule, and dispute owner before launch. What customer data does the test require? Collect the minimum: booking_id , venue, visit date, party-size band, assignment, attendance, reward ID, issuance, redemption, and return outcome. If identifiable booking data passes to a brand, venue, booking platform, or mobility provider, disclose the fields received, purpose, retention period, and whether the recipient may use them for its own marketing. --- # Loyalty Program Software: Buy for Requirements, Not Features https://loyalflow.cc/blog/loyalty-program-software-requirements The short version: Loyalty program software should pass your mandatory workflows and financial controls at an acceptable three-year cost. Score observed execution, reconcile the pilot ledger, verify complete exports, then force integration failures before signing. Key takeaways Build a 100-point scorecard around 5–10 workflows tied to revenue, expected loss, frequency, or operator time. Require every mandatory financial and security control to pass; use weighted scores only to rank survivors. Compare 36-month cost, including implementation, usage, staff time , messaging, migration, and exit work. Reconcile the full pilot population when feasible; random spot checks cannot reliably expose rare or clustered defects. Test 3–5 end-to-end scenarios, including retries, refunds, suppression, exports, and forced failures. Score loyalty program software against real workflows Feature grids reward vendors for accumulating boxes. They do not show whether a refund reverses points correctly or whether support can repair an account without corrupting the ledger. Start with 5–10 workflows used by customers, operators, finance, and service teams. Only the load-bearing workflow earns the score. Assign 100 total points using company-specific exposure. Weight each workflow by transaction frequency, revenue affected, plausible financial loss, customer harm, and weekly operator time. One workable starting allocation is 20 points for earn and refund accuracy, 15 for redemption, 15 for liability reporting, 15 for service adjustments, 10 each for targeting, suppression, and exports, then 5 for permissions. Define the trigger, expected ledger entries, customer message, operator action, error state, and recovery path for every workflow. Score what the vendor demonstrates in your scenario, not a claim that the feature is supported. Require every mandatory control to pass; rank the remaining vendors by weighted score and three-year cost rather than using an arbitrary aggregate cutoff. The classic failure: an 80-feature checklist lets cosmetic features offset a broken reversal flow. They are not substitutes. A theme editor cannot repair duplicated points after an order refund. Calculate three-year cost, not subscription price Model 36 months because implementation work, usage tiers, migrations, and recurring administration rarely appear in the headline price. Include subscription fees, transaction or member charges, email and SMS, integration work, premium support, sandbox access, data migration, internal administration, and exit assistance. The monthly price is only what shows above ground. Run low, expected, and high cases for active members, monthly transactions, messages, and redemptions. Price internal work at a loaded hourly cost. Ten operator hours per week equals roughly 1,560 hours over three years, before holidays or volume growth. Keep platform cost separate from reward economics. A 2% earn rate on $5 million of eligible sales issues $100,000 of face value before redemption and expiration assumptions. Contract treatment of unused points, vendor-funded rewards, expiration, and breakage affects cash planning and accounting. Price the pilot from required vendor hours, environments, integrations, migration volume, and support coverage. Set its duration from the cycles the test must observe. A 30–45 day window can fit routine purchase, refund, messaging, and reporting tests, but it is too short when acceptance depends on quarterly tiers or longer expiration rules. The classic failure: a $2,000 monthly platform appears cheap while requiring weekly CSV repair, custom middleware, and paid escalation. Put every recurring manual task into the cost model before comparing licenses. Test the ledger and exports across the full pilot population Points require ledger discipline. Opening balance plus earns, adjustments, and reversals minus redemptions and expirations must equal closing balance for every account and for the aggregate program. Arithmetic, duplicate detection, referential integrity, and row-count comparison belong in queries or deterministic rules, not operator judgement. Inspect the whole net; one missed knot still leaks value. Test partial and full refunds, negative balances, delayed events, duplicate delivery, retries, expired points, reinstatement, account merges, and manual adjustments. Every mutation needs a timestamp, reason, source event, actor, and immutable identifier. Finance should reproduce period-end balances without a vendor-built private report. Reconcile every pilot ledger event when volume permits. Compare source-event counts, ledger-entry counts, unique identifiers, control totals, and closing balances. Test every forced retry, timeout, refund, import, and merge because duplicate defects cluster around those mechanisms; a random sample may never touch them. If full-population reconciliation is impractical, define the defect rate the sample should detect and the required confidence before sampling. Under independent random sampling, detecting a 0.1% defect with about 95% probability requires roughly 2,995 observations. Then stratify by event type, integration, day, refund state, latency, and retry status; report exceptions against the denominator in each stratum. Demand exports for customers, accounts, transactions, rewards, consent, tier history, expiration dates, and source references. Verify fields including customer_id , transaction_id , source_order_id , timestamps, currency, and status. Compare complete export row counts and control totals with the application, then reconstruct balances in your warehouse or spreadsheet. The classic failure: “100% of sampled events reconciled” sounds conclusive without sample size, selection method, population coverage, or a detectable-defect target. A clean sample of 100 has only about a 9.5% chance of finding an independently distributed 0.1% defect. Use the control framework in Loyalty Points Liability: Build Controls Before Campaigns . Force integrations and recovery paths to fail An integration badge proves that two systems exchanged something. Test 3–5 production-like scenarios covering enrollment, purchase and earn, redemption, refund or cancellation, and lifecycle suppression. Record expected events in every system, acceptable latency, retry behavior, failure ownership, and operator recovery. Break it before customers do—and verify the reset. Financial events should reconcile exactly. Set marketing latency from the business deadline: a suppression must arrive before the next scheduled send, not within an arbitrary vendor benchmark. Force one timeout, one duplicate delivery, one missing identifier, and one permission failure; confirm idempotency, alerting, recovery, and audit history. Use representative products, customer states, returns, consent records, and transaction volumes. Synthetic data covers destructive edge cases safely. If real customer data enters a vendor environment, document the disclosed identifiers, purchase history, balances, and consent fields, plus storage location, access, retention, and deletion terms. Define acceptance before configuration starts: all mandatory controls pass, all pilot ledger events reconcile or meet the documented sampling design, required export fields are complete, forced failures recover correctly, and operator time stays below your cost-model ceiling. Routine CSV patches count as failed automation. The classic failure: a vendor-led happy-path demo proves enrollment, then launch exposes missing refund reversals and promotions sent during service disputes. Define that second control with Lifecycle Suppression Rules: Stop Marketing Through Service Failures . Frequently asked questions How many vendors should make the shortlist? Score 4–6 vendors from documented evidence, invite 2–3 to scripted workflow demonstrations, then pilot the highest-ranked candidate that passes every mandatory control. Pilot a second vendor only when scores and three-year costs remain materially close. Which conditions increase migration risk? Missing transaction history, unstable customer identifiers, undocumented expiration rules, duplicate accounts, and unreconciled balances increase cutover uncertainty. Profile each defect as both a count and percentage of its relevant population before migration. When should a company build instead of buy? Build when distinctive loyalty logic creates enough economic value to justify continuing ownership of the ledger, security, support, compliance, and migrations. Buying transfers baseline product maintenance to a vendor; custom integrations and company-specific rules remain your responsibility. --- # Costco Membership Model: Renewal as Pricing Governance https://loyalflow.cc/blog/costco-membership-model-pricing-governance The short version: The Costco membership model is distinctive because membership renewal governs merchandise pricing. The fee creates recurring contribution; the risk of losing that fee constrains markups and protects the customer bargain. Key takeaways Treat renewal as a pricing constraint, not a marketing score. Separate membership contribution from merchandise contribution. Calculate allowable CAC from contribution and renewal assumptions. Test light, base, and heavy members before approving benefits. Copy Costco only when customers can verify value repeatedly. The Costco membership model governs pricing Most paid loyalty programs sell a bundle of benefits. Costco sells access to a retail system whose credibility depends on disciplined merchandise pricing. That difference matters: the membership fee does not merely fund perks; it gives the operator a recurring profit pool worth protecting. A retailer funded mainly through transaction margin can improve short-term profit by raising prices. Costco faces a counterweight. Higher merchandise margin may help this quarter, but obvious price deterioration weakens the argument for paying the next annual fee. Renewal therefore acts as pricing governance. Buyers still negotiate products, merchants still manage categories, and operators still pursue transaction contribution. The membership model places a ceiling on extraction because members can reassess the entire bargain once each year. This is the useful distinction from a generic paid-membership model. A program can charge $60, distribute $60 of shipping or credits, then hope incremental purchases cover the difference. Costco’s mechanism runs in the opposite direction: recurring fee contribution supports tighter merchandise economics, while those economics defend renewal. Operators can test this logic with one question: if merchandise margin rose by 2 percentage points, would members notice enough deterioration to reduce renewal? If nobody would notice, the fee probably is not governing pricing. The business merely has a subscription attached to ordinary retail. The classic failure: using membership revenue as permission to stack more margin on top. Customers then pay once for access and again through uncompetitive prices. Renewal becomes dependent on inertia rather than demonstrated value. Separate fee contribution from merchandise contribution Do not judge the model using membership revenue alone. Build two contribution lines. Membership contribution equals fee revenue minus benefit cost, payment fees, incremental service cost, and expected refunds. Merchandise contribution equals member gross profit minus fulfillment, returns, and other variable transaction costs. Two profit pools, one clearer decision. Suppose the annual fee is $60. Payment, service, and included-benefit costs total $18. Membership contribution is $42 before any merchandise activity. If the representative member generates another $35 of annual merchandise contribution, total annual contribution is $77. Now test a proposed price concession. Reducing merchandise contribution by $10 may be rational if the stronger value proposition protects more than $10 of expected fee contribution. That is the governance trade: sacrifice some transaction margin only when renewal economics plausibly repay it. Do not hide the trade inside blended gross margin. Review fee contribution, merchandise contribution, realized member savings, and renewal by signup cohort. Monthly review still matters for an annual plan because first purchase, second purchase, and first visible saving should usually occur within 30–45 days. Set the initial 30-day activation threshold as a launch hypothesis, not an industry benchmark. For example: at least 60% of new members must use the core value mechanism within 30 days. After two or three cohorts, replace that threshold with the activation level actually associated with profitable renewal. The classic failure: reporting the $60 fee as pure margin while benefits, support, refunds, and price concessions sit in other budgets. The program looks profitable because its costs have been scattered across the company. Use renewal math to set allowable CAC A universal renewal target is useless without contribution and acquisition cost. Calculate the renewal rate your model requires instead of borrowing a benchmark from a larger operator with different frequency, margins, and acquisition channels. CAC can stretch only as far as renewal pays. For a simple annual model, estimated lifetime contribution equals first-year contribution plus annual contribution multiplied by renewal probability divided by one minus renewal probability. This assumes constant contribution, constant renewal, and no discount rate, so use it as a screening calculation rather than a forecast. Using $77 of annual contribution and a 60% renewal assumption, expected future contribution is $77 multiplied by 0.60 divided by 0.40, or $115.50. Add the first year and estimated lifetime contribution is $192.50. A $120 CAC leaves only $72.50 before overhead, forecasting error, and capital cost; a $40 CAC leaves substantially more room. Run the same calculation at 40%, 60%, and 75% renewal. These are scenarios, not recommended targets. If the acquisition case works only at 75%, reject it until observed cohorts support that assumption. Then reverse the formula. Start with observed annual contribution, subtract the profit buffer required by the business, and treat the remainder as maximum CAC. Do not increase CAC because a blended renewal number looks healthy; calculate it separately for paid search, referrals, store conversion, partnerships, and promotional cohorts. The classic failure: assuming a high renewal rate makes any CAC affordable. Weak annual contribution can still produce poor lifetime economics, while aggressive first-year discounts can attract cohorts that disappear at full-price renewal. Run a light, base, and heavy-member worksheet A launch decision needs three scenarios. Use the same fields for each: annual fee, eligible spend, price concession, merchandise contribution, benefit cost, service cost, renewal assumption, and CAC. A spreadsheet with three rows is enough. One model, tested at three levels of appetite. Consider a $60 membership offering a 5% price advantage on eligible purchases. A light member spending $300 receives $15 of visible value. That member may be profitable but unlikely to renew because the fee remains unrecovered. A base member spending $1,500 receives $75 of visible value. If ordinary merchandise contribution before the concession is 20%, the 5% concession leaves $225 of merchandise contribution rather than $300. Add the fee, subtract $18 of membership costs, and annual contribution becomes $267 before CAC and overhead. A heavy member spending $5,000 receives $250 of visible value. The member may still produce strong contribution if the 5% concession applies to purchases with sufficient underlying margin. If it applies to low-margin categories, the same customer can become loss-making despite high revenue. The decision rule is blunt. Light members need enough early proof to renew. Base members must repay acquisition and operating costs. Heavy members must remain contribution-positive without manual exclusions. If one benefit cannot satisfy all three, narrow eligible categories, cap usage transparently, or reject the plan. The classic failure: designing around the average member. Averages conceal light users who receive no credible value and heavy users who consume every subsidy. Model both tails before collecting a fee. This mechanism also explains why categories with long replacement cycles should resist warehouse imitation; infrequent-purchase loyalty is better built on a recurring service or access habit than on transaction discounts . Frequently asked questions What renewal rate should a Costco-style membership target? No universal rate. Calculate the minimum rate required for lifetime contribution to cover CAC, overhead allocation, and a forecast-error buffer. Treat early rates as hypotheses until several renewal cohorts mature. How quickly should members recover the fee? Design for the representative member to see credible progress within 30–45 days and recover the fee during normal annual purchasing. Requiring abnormal spend makes the value proposition promotional rather than durable. When should an operator copy the Costco membership model? Copy it when customers purchase often, compare prices easily, and can verify recurring savings. Skip it when value depends on obscure calculations, rare purchases, or benefits whose variable cost rises faster than member contribution. --- # Loyalty Program Fraud Prevention: Six Minimum Controls https://loyalflow.cc/blog/loyalty-program-fraud-prevention The short version: Loyalty program fraud prevention starts with six controls, not a scoring platform: stronger authentication, risk-based redemption friction, referral limits, complete event logging, a transactional points ledger, and an operable review queue. Key takeaways Build a 90-day loss register before choosing fraud tools. Apply step-up verification to sensitive changes and valuable redemptions. Keep referral rewards pending through merchant-specific refund and dispute exposure. Process points through an atomic, idempotent, append-only ledger. Start with 3–5 explicit rules; report alert counts, precision, false positives, and loss. Start loyalty program fraud prevention with loss paths Map four loss paths first: account takeover, referral abuse, unauthorized points use, and staff adjustments. For each path, record incident count, attempted value, confirmed loss, recovered value, and investigation time over the previous 90 days. No history means start logging now, not inventing a risk score. Measure where value escapes before buying a better alarm. Compare frequency, value, and recoverability separately. One hundred $20 referral claims create different economics from one $2,000 account takeover. An unshipped order may be stopped; a transferred gift card may become unrecoverable within minutes. Logging enables attribution, reconciliation, and review. Capture customer_id , event time, session or device identifier, IP address, authentication result, profile changes, points before and after, order reference, actor, and reason code. Retain history through the longest applicable refund, dispute, and appeal period; 180–365 days is a provisional operating range, subject to legal and privacy requirements. Failure mode: unreconciled vendor scores. A platform produces alerts, but the team cannot connect them to confirmed loss, recovered value, customer harm, or points liability. Define the loss register and event schema before buying another alert feed. Control account takeover without challenging every visit Require MFA immediately for administrators and staff with adjustment rights. For customers, use step-up verification after combinations such as a new device plus profile change, a password reset followed by redemption, or a high-value portable reward claim. Small rewards pass lightly; portable value earns a harder check. A $50 reward threshold can be a provisional starting point, not a universal benchmark. Add an absolute ceiling, then adjust against normal order value, confirmed losses, and queue capacity. Percentage-of-annual-earn rules need special handling for accounts under 90 days old or with sparse history; those accounts should use the absolute threshold and account-age rules instead. Block known breached passwords during creation and reset. Invalidate existing sessions after password, email, phone, or MFA changes. Send immediate alerts with a recovery route that does not depend only on the potentially compromised email address or phone number. Consider a 24–72-hour redemption hold after sensitive profile changes when rewards are portable or hard to recover. Make that range provisional, measure abandoned legitimate redemptions, and allow documented manual verification. The hold buys response time; it does not establish fraud. Redemption friction should rise with recoverability and value. A $5 discount attached to an existing order may need no extra step. A $500 gift card, points transfer, or shipment to a new address warrants fresh authentication and may warrant approval. Failure mode: friction in the wrong place. MFA on every visit frustrates legitimate members while weak profile-change and redemption controls still let an attacker replace the recovery channel and cash out. Put referrals and points under transaction controls Referral programs need hard limits by customer and time window, with device, payment token, and delivery address used as review signals. Five rewarded referrals per customer per 30 days is a provisional test limit. Compare it with legitimate advocate behavior before enforcing it broadly; households, offices, and apartment buildings legitimately share attributes. Every points movement lands once—and stays accountable. Keep referral value pending until the qualifying transaction clears the merchant’s cancellation and refund deadlines. Check the actual processor and card-network dispute exposure rather than assuming 45–90 days covers it. If waiting through the full dispute period is commercially unacceptable, release after the return window while retaining disclosed reversal authority or funding a reserve for later disputes. Points need a ledger, not a mutable balance field. Record every earn, redemption, expiration, adjustment, and reversal as a new transaction. Store the original transaction reference on reversals and enforce an idempotency key so retries cannot redeem twice. Redemption must use a database transaction or conditional write that checks and deducts the available balance atomically. Reject unauthorized negative balances. This is deterministic transaction integrity, not a reviewer decision or fraud-model task. Use count and value velocity rules together. Provisional triggers might include more than 3 redemptions in 10 minutes, over $250 in reward value within 24 hours, or redemption from 2 new devices within 7 days. These conditions trigger review or step-up verification; they do not confirm fraud. Separate requester and approver for manual adjustments above a provisional $100–$250 threshold, calibrated to normal order and reward value. Log actor, reason code, linked case, previous balance, and resulting balance. Failure mode: trusting the displayed balance. Concurrent requests can both spend the same points unless deduction is atomic and idempotent. Missing actor and reason records also let staff adjustments become unexplained balance changes. Operate rules and review before adding scoring Start with 3–5 reproducible rules. Examples include new device plus profile change within 24 hours, password reset plus redemption within 60 minutes, or several accounts sharing a payment token and redeeming to one address. Three failed verifications followed by success should trigger step-up verification, never a fraud conclusion. Rules detect explicit conditions; arithmetic reconciles the ledger. Scoring becomes useful only after resolved cases provide labels for comparison. It cannot repair missing events, duplicate transactions, or broken balance calculations. Every alert needs evidence, an owner, and a deadline. Show triggering events, linked accounts, reward value, transaction history, authentication history, and customer contacts. Record fixed outcomes: confirmed fraud, legitimate, insufficient evidence, customer error, or policy abuse. Target review within 4 business hours for held, irreversible rewards and no later than 1 business day where staffing allows. Set appeal targets of 2–5 business days. These are service targets to test against queue volume, not claims that every team can meet them immediately. Publish counts beside every rate. Use precision = confirmed fraud alerts / resolved alerts . Use false-positive share = legitimate alerts / resolved alerts . Calculate review rate as reviewed eligible events divided by all eligible events, and recovery rate as recovered confirmed loss divided by confirmed recoverable loss. A customer false-positive rate requires a harder denominator: legitimate eligible events incorrectly held divided by all legitimate eligible events. That denominator may require later outcome matching. Never call every declined or held redemption prevented loss. Review each rule after at least one complete 30-day operating cycle and a predefined volume floor, such as 50 resolved alerts. Report small samples as counts, not confident rates. Keep a low-precision rule when it catches material, unrecoverable loss; remove or narrow rules that create work without actionable decisions. Failure mode: alert volume without denominators. Forty rules can fill a queue while revealing nothing about eligible transaction volume, customer impact, or confirmed loss. Start small, assign ownership, then tune using resolved cases and loss value. Ledger controls also protect reward accounting. Pair this fraud plan with Loyalty Points Liability: Build Controls Before Campaigns , then use Auditing Loyalty Data With AI: The Model Comes Last when checking event and balance integrity. Frequently asked questions When should customers face MFA? Use step-up MFA for sensitive profile changes, new recovery channels, portable rewards, and high-value redemptions. Avoid challenging every login unless measured account-takeover risk justifies that friction. Staff and administrator MFA should be mandatory immediately. How long should referral rewards remain pending? Use the qualifying purchase’s actual cancellation, refund, and dispute deadlines. If holding through the full dispute period would damage the referral offer, release after returns while retaining disclosed reversal authority or maintaining a reserve for later losses. How should a small team review suspicious redemptions? Begin with 3–5 rules, one daily owner, one backup, and fixed outcome codes. Prioritize irreversible rewards and provisional values above $50–$100. Review counts weekly; assess rates only after a defined cycle and sufficient resolved volume. What customer data does an external fraud vendor receive? Depending on the integration, the vendor may receive customer identifiers, transaction history, payment tokens, addresses, device identifiers, and network data. Document that disclosure, restrict fields to operational need, set retention terms, and confirm customer-facing privacy notices cover the transfer. --- # Shopify Loyalty Program Setup: A 30-Day Implementation Plan https://loyalflow.cc/blog/shopify-loyalty-program-setup Shopify loyalty program setup fails in the plumbing: rewards disappear from the cart, refunded orders keep their points, guest customers create duplicate accounts, and reports cannot separate members from everyone else. A clever points model cannot rescue broken implementation. Use 30 days to configure one earn rule, one reward, four customer-facing surfaces, and one controlled measurement plan. Do not add tiers, referrals, birthday rewards, or bonus campaigns until the basic transaction works from order creation through refund. Define the Shopify Data Flow Before Choosing Features Map six events during days 1–7: customer enrollment, eligible order, points approval, reward issuance, reward redemption, and order refund. For each event, identify the Shopify customer ID, order ID, timestamp, value, and status available in your loyalty app export. One durable ID keeps the loyalty ledger honest. Use Shopify customer IDs as the primary customer key. Email addresses change, guest checkouts create duplicates, and phone numbers arrive in inconsistent formats. Test whether the app merges a guest order after account creation or leaves two balances requiring manual repair. Set points to pending until the refund window closes. If most refunds arrive within 14 days, use 14 days as the starting assumption; if apparel returns remain open for 30 days, use 30. The setting should follow actual return data, not the app default. Write explicit rules for full refunds, partial refunds, cancellations, edited orders, gift cards, shipping, tax, discounts, and subscription renewals. A defensible default earns value on net eligible product spend after discounts, excluding tax, shipping, and gift-card purchases. Implementation trap: points become available when an order is placed, then get spent before the original order is refunded. The store loses the reward and the original revenue. Pending points plus automatic reversal closes that hole. This week’s test: place one order containing two products, a discount, tax, and shipping. Partially refund one item. The resulting balance must match the written rule without manual adjustment. Configure the Smallest Shopify Loyalty Program Setup During days 8–14, enable one purchase earn rule and one fixed-value reward . Customers should be able to explain both in two sentences. Disable tiers, social actions, referrals, multipliers, and automatic birthday grants. Generosity works better when the math stays balanced. Calculate the reward rate from margin tolerance rather than copying a benchmark. Use: maximum issued reward rate = allowable contribution-margin reduction divided by expected redemption rate . Treat redemption as an assumption until the store has its own data. Example: the store can tolerate a 2% reduction in contribution margin per eligible dollar. At an assumed 50% redemption rate, the maximum issued reward rate is 4%. At 25% redemption, the same model permits 8%, but building economics around high breakage is reckless; redemption can rise once customers understand the program. Check attainability against average order value and reorder timing. A $5 reward requiring $100 of cumulative eligible spend may suit a store with a $65 average order value and a 45-day reorder cycle. It will feel remote for a store with a $25 average order value and two purchases per year. Choose a threshold reachable after one or two normal orders without distorting basket behavior. Show the calculation in dollars, even if the app displays points: reward value divided by required spend equals the issued reward rate. Configuration trap: using 1,000 points for a $5 reward because large balances look exciting. Customers still receive $5; support now has to explain conversion math. Use the lowest point scale the app permits cleanly. Go forward only if reward cost remains inside the predeclared margin floor under low, expected, and high redemption scenarios. For a new program, 20%, 40%, and 60% are scenario inputs, not industry benchmarks. Place Rewards Inside Shopify’s Buying Surfaces During days 15–21, test four surfaces on mobile and desktop: customer account, product or collection page, cart, and post-purchase message. A floating launcher can support these placements; it cannot replace them. A reward unseen at checkout is barely a reward. The customer account should show approved balance, pending balance, available rewards, expiration terms, and transaction history. The cart should show dollar value rather than points alone: “$5 reward available” or “Spend $28 more to reach a $5 reward.” Confirm how the reward enters checkout. Test discount-code conflicts, automatic discounts, subscription products, sale items, minimum baskets, accelerated checkout, and multiple currencies where applicable. If Shopify plan or checkout restrictions block a placement, move the message upstream into the cart rather than promising unavailable checkout behavior. Send a post-purchase message after points become approved, not merely when the order is placed. Include eligible spend, points earned, pending or approved status, current reward value, and a direct route back to the store. Storefront trap: the program page promises rewards that disappear when a customer uses Shop Pay, a subscription item, or an existing discount. Test the actual checkout combinations responsible for most revenue, not only a clean test order. Before launch, complete at least 10 end-to-end transactions covering guest checkout, account login, discount stacking, cancellation, full refund, partial refund, reward redemption, failed payment, subscription renewal, and mobile checkout. Every failure needs either a configuration fix or clearly displayed restriction. Launch With Formulas, Comparison Groups, and Stop Gates Use days 22–30 for a controlled launch. Split one eligible customer segment into exposed and holdout groups where tooling permits. Keep acquisition channel, first-order month, geography, and initial order value reasonably balanced; comparing volunteers with non-members will overstate results because frequent buyers enroll more readily. Launch it like an experiment, not a leap of faith. Define activation rate as customers who earn approved value or redeem a reward divided by enrolled customers. Define redemption rate as reward value redeemed divided by reward value issued. Define repeat-purchase rate as customers placing another eligible order within the chosen window divided by first-time customers in that cohort. Calculate cohort lift as exposed-group repeat-purchase rate minus holdout-group repeat-purchase rate. Calculate contribution margin per customer as net revenue minus product cost, discounts, reward cost, payment fees, fulfillment, shipping subsidy, and variable app cost, divided by customers. Set gates before launch. One practical pilot rule is no broad expansion before each arm has at least 200 eligible customers; this is an operating threshold, not proof of statistical significance. Report the observed difference with a confidence interval, then wait for more data if the interval still includes material loss and material gain. Pause immediately if reward errors affect more than 1% of tested transactions, balances fail to reverse after refunds, or contribution margin per customer falls below the declared floor. Review direction after 30–60 days for short reorder cycles and 90–120 days for slower categories. Measurement trap: calling enrollment growth retention. Ten thousand members with unchanged repeat purchases and lower contribution margin represent a discount system, not a loyalty asset. After the pilot, remove placements nobody sees, messages nobody acts on, and rules support cannot explain. If the core transaction works but the reward structure still underperforms, use Points, Tiers, or Cashback to decide whether the model—not the Shopify setup—needs changing. Frequently asked questions Should points be awarded the moment an order is placed? No. Hold points as pending until the refund window closes, or refunded orders keep their points and balances drift away from real revenue. If most refunds arrive within 14 days, start with 14 days and adjust once you have your own return data — apparel and other high-return categories usually need longer. How is the reward rate set without copying a benchmark? Derive it from margin tolerance: the maximum issued reward rate equals the allowable contribution-margin reduction divided by the expected redemption rate. A store that can absorb a 2% margin reduction per eligible dollar can issue 4% at an assumed 50% redemption rate. Treat redemption as an assumption until the store has produced its own figure. Can email addresses be used as the customer key? Not reliably. Email addresses change, guest checkouts create duplicate profiles, and phone numbers arrive in inconsistent formats. Use the Shopify customer ID as the primary key and test explicitly whether your loyalty app merges a guest order after account creation or leaves two balances that need manual repair. --- # Auditing Loyalty Data With AI: The Model Comes Last https://loyalflow.cc/blog/ai-loyalty-data-audit The short version: duplicate customer identities are a defect worth auditing early, because they distort segments quietly and the damage compounds. This is the shape of that job — not a runbook. The model comes last: normalisation and deterministic matching resolve whatever they can, blocking is what makes the problem computable at all, and the model judges only the ambiguous remainder. The step that is easiest to skip is measuring the result against a slice you checked exhaustively, and that is the step that decides whether any of it worked. Bad loyalty data does not announce itself Some data problems fail loudly: a broken export, a schema change, a job that errors. Those get fixed, because something is visibly wrong. Identity fragmentation fails quietly. You still get five segments. Champions still have the highest scores. The report renders. Nothing tells you that your best customer exists as three profiles — a work email, a personal email, and a guest checkout — each looking like an ordinary two-order buyer, none looking like the ten-order customer they actually are. The consequence is not a wrong chart. It is a reward budget aimed at people who were never going to leave, while the fragmented customer sits in a segment that gets a win-back discount they did not need. The RFM spreadsheet method recommends inspecting twenty records before scoring: the five highest monetary values, five highest frequencies, five longest recencies, and five at random. That is a sound smoke test and it is what it says it is — a check for gross errors before you trust the file. It cannot tell you how many duplicates are in eighty thousand profiles, and it does not claim to. Start with normalisation, not with a model Before anything clever, flatten the obvious variation: Emails: lowercase, strip dots and +tags where the provider ignores them, trim whitespace. Phones: strip formatting, normalise to E.164, handle the local-vs-international prefix for your markets. Names: case-fold, strip titles and punctuation, normalise accents. Addresses: standardise to a postal format if you have a library for your country. Then match deterministically on the identifiers that are supposed to be unique: normalised email, normalised phone, payment token, loyalty card number. Where two profiles agree on one of those, you usually have a duplicate and you did not need a model to say so. How much this catches depends entirely on your data — how many customers use one email across purchases, whether guest checkout captures a phone, whether your payment provider exposes a stable token. Measure it on your own file rather than trusting anyone's figure, including this one. The point is that this step is cheap and its output is auditable, so it should absorb everything it can before you spend money on inference. Blocking: why you cannot just ask the model Here is the constraint that decides the whole design. Eighty thousand profiles produce roughly 3.2 billion possible pairs. You cannot send that to anything. Even at a hundredth of a cent per comparison it is an unaffordable job, and most of those pairs are two people who share nothing. So you generate candidates first. Group profiles into blocks that share something cheap and discriminating, and only compare within blocks: Same phone suffix (last six digits) Same first three characters of surname plus year of first order Same normalised street number plus postcode outward code Choose keys that are discriminating . A key that groups everyone in a dense urban postcode produces a block of thousands and has not reduced anything — check the size distribution of your blocks before trusting a key, and drop any that produce a long tail of huge ones. Use several keys, not one: a single key misses every duplicate where that field is wrong or absent, which is exactly the population you are hunting. Their union is what shrinks the problem, and by how much depends on your data — measure it. This step is pure code. No model. Leave it out and you end up with a workflow that cannot run on real data. Where the model actually earns its place You now have a few thousand candidate pairs. Compute comparison features for each one — string distance on the name, whether postcodes match, days between first orders, overlap in purchased categories, whether the domains differ — and let a scoring step rank them. For clearly-similar and clearly-different pairs, a threshold on those features is enough. The model is for the middle: two records that share a surname and a city but differ in everything else, a business name against a personal name at the same address, a transliterated name spelled two ways. Two rules that matter more than the model choice: Explanations must come from the computed features, not from the model's own account of itself. "Same postcode, card last four matches, names differ by one edit" is checkable. A free-text rationale the model composed can describe evidence that is not there. The output is a queue, never an action. Nothing merges automatically. This is not general caution — a wrong merge is unusually hard to reverse, because the record you would need to undo it is the one that got absorbed. Measure it against a slice you checked completely This is the step that gets skipped, and skipping it is how you end up confident and wrong. The intuitive check is to sample: take twenty pairs the model flagged and twenty records it passed, and inspect them. The first half is fine — it estimates precision, roughly, on a small sample. The second half does not work , and it is worth seeing why. Suppose duplicates are 2% of your records and the tool misses half of them. Then about 1% of the records it passed are misses. Sample twenty of them and your chance of catching even one is about 18%. You will almost certainly see nothing, and "I checked and found no misses" is precisely the wrong conclusion to draw from a test that fails to fire four times out of five. Do this instead. Take a narrow slice you can examine exhaustively and find every duplicate in it by hand. That gives you a labelled set with a known denominator, which is what the sample lacked. Run the tool over the same slice and compare: what fraction of real duplicates it found, and what fraction of its claims were right. Define the slice carefully, because the obvious choices leak. A surname slice misses the duplicate who married and changed name; a one-month order slice misses the same person's orders in other months. Search each in-slice profile against the whole customer table, not just against the slice, and write down the rule you used to call something a match before you start — otherwise you are labelling to match what the tool found. A small complete slice beats a large random sample, because it is the denominator that makes the numbers mean anything. This also fixes the reverse error: precision of 45% sounds poor, but if duplicates are 1% of pairs it means the tool concentrated the problem forty-five-fold, and that may be an excellent queue to work through. Precision without a base rate is not interpretable in either direction. What you send, and what you keep The article you are reading recommends sending customer records to a model. Say plainly what that means: unless you are running something locally, those records leave your infrastructure and land with a third party under their retention and training terms. Minimum discipline: send the computed comparison features rather than raw records wherever the judgement allows it; drop every field the decision does not need; check whether your provider trains on submitted data and turn that off; confirm the arrangement is covered by your processor agreements before anything is exported, and that your retention and deletion terms cover it. Two traps worth naming. Hashing is not anonymisation — an email or phone hash is pseudonymous and trivially reversible by enumeration, so a hashed identifier still carries the obligations of the original. And payment tokens are payment data : if you use a token prefix as a blocking key, that key stays inside your own infrastructure, and only the resulting comparison feature — matched or not — travels. This is a summary, not a compliance assessment. A deduplication project that creates a disclosure problem has not improved your data. Two jobs where AI is the wrong tool Worth stating, because both get sold as AI use cases. Points ledger reconciliation is accounting, not inference. Whether an account's balance rolls forward correctly, whether an adjustment carries a reason code, whether an approval exists — these are deterministic checks with exact answers, and a model can only make them less certain. Note also that individual earn and burn events are not supposed to balance, and negative balances are sometimes legitimate after a reversal, so the rules must encode your actual program terms. See points liability controls for the framework this sits inside. A model is useful at one edge only: classifying free-text adjustment notes after the deterministic checks have run, and even then with a defined taxonomy and an "unclear" option. Segment drift is a profiling job. If Champions shrank this month, compare field distributions, null rates, and volumes against previous periods, and check your deployment log. That is measurement. A model asked to explain the shift will produce a plausible narrative, which is worse than no answer because it is persuasive. What to run this month Normalise email, phone and name on a copy of your customer table. Count how many exact duplicates appear on each identifier alone. This costs an afternoon and may be most of your answer. Build two or three blocking keys and count the candidate pairs they produce. If the number is not in the thousands, adjust the keys before going further. Pick a slice you can check exhaustively and label it by hand. Do this before running anything, so the tool cannot influence what you count as a duplicate. Score the candidates, measure against the labelled slice, and only then decide whether the queue is worth working. After merging confirmed duplicates, recompute your retention inputs from scratch — frequency, contribution margin, cohort retention — rather than adjusting the old figures. The retention calculator recomputes lifetime value from those inputs, so feed it the corrected ones and compare. Merging generally raises per-customer frequency, but the direction of the final number depends on which inputs moved. Keep the margin-based definition the whole way through. Key takeaways Identity fragmentation is quiet and survives into the budget, which is what makes it worth auditing early. Normalisation and deterministic matching come before any model. How much they resolve depends on your data — measure it before buying anything. Blocking is what makes deduplication computable — eighty thousand profiles are 3.2 billion pairs. Judge the result against a slice you checked exhaustively. Sampling the records a tool passed cannot measure what it missed. Precision means nothing without a base rate; 45% may be excellent or useless depending on the denominator. Keep it read-only, send the minimum, and confirm your privacy policy already covers it. Frequently asked questions Can a model simply be asked to find the duplicate customers? Not at any realistic size. Eighty thousand profiles produce roughly 3.2 billion possible pairs, and even at a hundredth of a cent per comparison that is an unaffordable job for a set of pairs that are mostly two people sharing nothing. Generate candidates first by blocking on cheap, discriminating keys, which is pure code, and let the model judge only the ambiguous remainder. Is inspecting a sample of the records a tool passed enough to check it? No, and this is the test most likely to produce false confidence. If duplicates are 2% of records and the tool misses half of them, about 1% of what it passed is a miss; sampling twenty of those records gives roughly an 18% chance of seeing even one. Label a slice exhaustively before running anything, and measure against that. Does hashing email addresses make it safe to send records to a provider? No. Hashing is not anonymisation — an email address drawn from a known space can be recovered from its hash. Send computed comparison features rather than raw records wherever the judgement allows, drop every field the decision does not need, confirm the provider does not train on submitted data, and check the arrangement is covered by your processor agreements first. Should a model be used to reconcile the points ledger? No, that job is accounting rather than inference. Whether a balance rolls forward correctly, whether an adjustment carries a reason code, whether an approval exists — these are deterministic checks with exact answers, and a model can only make them less certain. The one useful edge is classifying free-text adjustment notes after the deterministic checks have run. --- # RFM Segmentation Spreadsheet: Build Five Usable Segments https://loyalflow.cc/blog/rfm-segmentation-spreadsheet An RFM segmentation spreadsheet can replace weeks of analytics work. Export 12 months of orders, calculate three scores, map every customer into five exclusive segments, then refresh monthly. That can be enough to make better retention decisions without a warehouse or predictive model. Do not optimize for analytical elegance. Optimize for a file one operator can refresh in under an hour and use without interpretation meetings. If a segment does not change treatment, delete it. Build the RFM Segmentation Spreadsheet Create an Orders sheet with customer ID in column A, order date in B, net revenue after refunds in C, and order status in D. Use completed orders only. Exclude tax, shipping, cancellations, gift-card purchases, and unidentifiable guest orders where possible. Create a Customers sheet with one row per stable customer ID. Put a fixed scoring date in B1. Assuming the customer ID is in A2, calculate recency with =B$1-MAXIFS(Orders!B:B,Orders!A:A,A2,Orders!D:D,"Completed") . Calculate frequency with =COUNTIFS(Orders!A:A,A2,Orders!D:D,"Completed") . Calculate monetary value with =SUMIFS(Orders!C:C,Orders!A:A,A2,Orders!D:D,"Completed") . Keep the fixed scoring date instead of TODAY(). Otherwise, two people opening the same file on different dates can produce different segments. Use a 12-month order window when normal repurchase occurs within 90 days. Test 18 or 24 months only when the median interval between orders exceeds six months. Data trap: one refunded wholesale order can create a false Champion. Duplicate profiles can turn a five-order buyer into three weak buyers. Before scoring, inspect at least 20 customer records: the five highest monetary values, five highest frequencies, five longest recencies, and five random rows. Score Quintiles Without Splitting Ties Store the 20th, 40th, 60th, and 80th percentiles for each metric in visible cells. For frequency in column C, the thresholds are =PERCENTILE.INC(C:C,0.2) , then 0.4, 0.6, and 0.8. Repeat for monetary value and recency. Equal customers stay together, even when the buckets come out uneven. For frequency or monetary value, assign scores with =1+(C2>$H$2)+(C2>$H$3)+(C2>$H$4)+(C2>$H$5) , where H2:H5 contains the four thresholds. For recency, where lower is better, use =5-(B2>$G$2)-(B2>$G$3)-(B2>$G$4)-(B2>$G$5) . The strict greater-than comparisons keep equal values together. That matters when thousands of customers have exactly one order. Quintiles may become uneven; accept that. Forcing exactly 20% into each bucket splits identical customers for no operational reason. If you would rather not build the sheet, the RFM segmentation tool runs these same formulas on an orders CSV in your browser: the same PERCENTILE.INC quintiles, the same strict comparisons, and the same five segments. Nothing is uploaded. Keep R, F, and M in separate columns. Do not sum them. A 155 customer bought recently but rarely; a 551 customer bought often and spent heavily but has gone quiet. Both total 11. They need opposite treatment. Scoring trap: turning all 125 combinations into campaigns. Preserve the three-digit score for analysis, then collapse it for execution. Below roughly 500 identifiable customers, start with three score bands rather than five because small percentile shifts can move too many customers between buckets. Map Every Score Into Five Exclusive Segments Apply these rules in order: Champions first, Loyal Customers second, Promising Customers third, At-Risk Customers fourth, Hibernating Customers fifth. The order prevents overlaps and provides a fallback for every possible score. Five destinations, no overlaps, nobody left wandering. In this sequence, Champions have R, F, and M of at least 4. Loyal Customers have R and F of at least 3 after Champions are removed. Promising Customers have R of at least 3 and F of 1 or 2. At-Risk Customers have R of 1 or 2 and F of at least 3. Hibernating Customers have R and F of 1 or 2. If R, F, and M are in E2:G2, use =IF(AND(E2>=4,F2>=4,G2>=4),"Champions",IF(AND(E2>=3,F2>=3),"Loyal Customers",IF(AND(E2>=3,F2<=2),"Promising Customers",IF(AND(E2<=2,F2>=3),"At-Risk Customers","Hibernating Customers")))) . Test boundary rows before rollout. A 555 is Champion. A 431 is Loyal because frequency is 3. A 112 is Hibernating. A 353 is Loyal, not Champion. A 235 is At-Risk because inactivity overrides historical spend. Mapping trap: assuming a segment deserves a campaign because it exists. Calculate reachable customers and expected outcomes first. If baseline conversion is 8%, a cell of 500 customers produces about 40 expected conversions; a 10% holdout contains 50 customers and only four expected conversions. That holdout is too thin for confident lift measurement. Pool several monthly cycles, enlarge the holdout, or combine treatments. Assign One Job, Then Measure Migration Champions: protect 90-day repeat rate. Prioritize recognition, service recovery, and benefit use over blanket discounts. Loyal Customers: shorten median time between orders. Compare the new interval with their own prior 90-day baseline. Promising Customers: drive order two within 30–45 days, adjusted to the category’s observed reorder interval. At-Risk Customers: trigger treatment after 1.5 times the customer or category median reorder interval, not an arbitrary calendar date. Hibernating Customers: limit acquisition cost. Use low-cost channels; suppress chronic non-openers. Treatment trap: sending every segment a renamed 15% discount. That changes copy, not strategy. Champions need reliability. Promising buyers need confidence. At-Risk buyers need a timely reason to return. Use 5–10% holdouts only when expected conversion counts support a useful comparison; otherwise rotate treatment by month. Save one snapshot every 30 days. Use columns for customer ID, snapshot date, previous segment, current segment, previous RFM score, current RFM score, reachable status, treatment, holdout flag, next-90-day orders, and next-90-day net revenue. Report upward, flat, and downward migration alongside customer counts. Judge the model over rolling 90-day windows. Clicks and redemptions diagnose campaign execution; they do not prove retention. A Promising customer moving to Loyal is success. An At-Risk customer making one discounted purchase but remaining At-Risk is weaker than the campaign dashboard claims. Keep RFM simple until migration stops explaining revenue differences. Then add one field—category, margin, or predicted reorder date—and test whether it changes action. Ground that decision in the retention math behind LTV, churn, and repeat rate , not demand for a prettier dashboard. Frequently asked questions Should R, F and M be added into a single score? No. A 155 customer bought recently but rarely; a 551 customer bought often and spent heavily but has gone quiet. Both total 11 and they need opposite treatment. Keep the three digits in separate columns for analysis and collapse them only at the point of execution. Why use a fixed scoring date instead of TODAY()? Because TODAY() makes the file disagree with itself. Two people opening the same spreadsheet on different dates get different recency values and therefore different segments, and neither can reproduce the other. Put a fixed scoring date in one visible cell and change it deliberately when you refresh. How much order history should the spreadsheet cover? Twelve months when normal repurchase happens within about 90 days. Test an 18- or 24-month window only when the median interval between orders exceeds six months, otherwise the longer window buries current behaviour under history the customer has moved on from. Does this work with only a few hundred customers? It works, but use three score bands rather than five below roughly 500 identifiable customers. With small counts a minor shift in a percentile threshold moves too many customers between buckets, and segments that reshuffle every month cannot support a treatment plan. --- # Domino’s Loyalty Strategy: A Habit-First Operating Thesis https://loyalflow.cc/blog/dominos-loyalty-strategy-habit-first The short version: Domino’s loyalty strategy supports a habit-first thesis: ordering convenience does the retention work; points reinforce it. Copy that sequence, then prove the economics with second-order rates, contribution margin, and a holdout. Key takeaways Treat Domino’s as an operating model, not proof that an app or points program causes retention. Baseline second-order rate, checkout completion, and identified-order share before changing rewards. Price rewards as a percentage of qualifying spend, then subtract that cost from contribution margin. Judge digital migration over 60–90 days against a baseline or holdout. Fix one repeated ordering task before building another loyalty feature. Domino’s loyalty strategy is a sequence, not a feature list Domino’s spent years making digital ordering useful through saved customer details, remembered baskets, order tracking, and repeat-order shortcuts. Its loyalty proposition sits on top of that ordering infrastructure. That sequence supports the thesis; it does not prove that points caused every improvement in frequency or digital sales. The distinction matters. Public company results combine pricing, promotions, store operations, delivery performance, advertising, menu changes, and channel migration. An operator cannot isolate loyalty impact by pointing at total digital revenue after launch. The attribution trap: calling every app order incremental. A customer who moves from phone ordering to the app may create no new revenue. The migration still has value if it lowers handling cost, improves identification, increases basket size, or produces more repeat purchases. Establish a pre-launch baseline for four measures: checkout completion, identified-order share, second-order rate, and contribution margin per order. Then compare the next 60–90 days with the prior period, a phased rollout, or an unexposed customer group. Without that comparison, the case study is branding, not analysis. The useful Domino’s lesson is therefore narrower and stronger: make the repeated transaction easier before paying for repetition . That claim can be tested in any business without copying Domino’s app, promotions, or program branding. Convenience should improve behavior before points enter the model A loyalty program cannot repair a purchase path customers dislike. Stored payment, saved addresses, clear fees, remembered orders, accurate status updates, and fast reordering create value on every transaction. A reward creates value only when the customer earns or redeems it. Untie the repeat purchase before rewarding it. This week, choose one high-volume task and measure its current completion rate and median time. Good candidates include account sign-in, address entry, payment, basket reconstruction, reward discovery, or order-status lookup. Remove one field, one screen, or one repeated decision before adding another campaign. Use a 30–45-day second-order window when that period covers at least one plausible repurchase cycle for the category. If customers normally buy every 90 days, use 90–120 days instead. The rule is simple: the window must include a realistic next purchase without becoming so long that product changes and promotions obscure the result. The classic failure: reporting downloads and registrations as retention. Those figures show distribution and account creation. Habit evidence appears in completed reorders, shorter reorder intervals, greater use of saved baskets, and fewer abandoned checkouts. Promotional messaging also needs operational discipline. Suppress routine offers while a delivery failure, refund, charge dispute, or unresolved complaint remains open. One badly timed coupon can tell the customer that internal systems do not share context; Lifecycle Suppression Rules: Stop Marketing Through Service Failures gives the practical control logic. Price rewards from margin, not competitor earn rates Do not adopt a 3%, 5%, or 8% reward value because another brand uses it. Calculate the cost directly: reward cost divided by qualifying spend equals reward rate . Then subtract expected reward cost, discounts, payment fees, fulfillment cost, and service recovery from order contribution. The reward budget lives inside the margin. Take a $30 qualifying basket. A 3% reward rate creates $0.90 of face value; 5% creates $1.50; 8% creates $2.40. If the order produces $6 of contribution before loyalty, those rates consume 15%, 25%, and 40% of that contribution respectively, before breakage or incremental behavior is considered. Set a margin floor before launch. Example: if finance requires at least $4.50 contribution from that $30 basket, a fully redeemed $1.50 reward reaches the floor before any extra discount or service credit. An 8% rate breaches it. The correct rate is the richest one that remains above the floor and produces enough incremental frequency to cover redeemed cost. Reward path matters too, but there is no universal purchase count. Model the customer’s normal frequency. A benefit requiring six purchases may feel close for a weekly buyer and irrelevant for a quarterly buyer. Show progress clearly, keep redemption to one or two actions, then test whether members reach the first benefit within one or two normal purchase cycles. The economics failure: funding points from revenue instead of contribution margin. Revenue can rise while profit falls because existing customers receive rewards on purchases they already intended to make. Use a holdout or phased rollout to estimate incremental orders rather than treating every redeemed reward as successful retention. Measure digital migration separately from incremental demand Digital ordering can improve economics without creating a single additional order. Identified transactions support cohort analysis and targeted messaging. Saved preferences can reduce checkout effort. Structured orders may reduce phone handling and manual re-entry. Visible add-ons can affect average order value. A new channel is not automatically a new customer. Measure those effects separately. For identified-order share, calculate identified digital orders divided by total eligible orders. For repeat rate, calculate customers placing another order inside the chosen window divided by first-time customers in the starting cohort. For contribution, use net revenue minus product cost, variable labor, payment fees, discounts, rewards, refunds, and other variable fulfillment costs. Run the comparison for 60–90 days. Report changes in identified-order share, handling cost, checkout conversion, average order value, repeat rate, service failures, and contribution margin. Label channel shifts as migration unless frequency, basket size, cost, or retention improves relative to the baseline or holdout. The measurement trap: combining migration savings and incremental revenue into one success number. They are different value sources with different confidence levels. Report each separately so management can see whether the program created demand, reduced cost, or merely changed where customers ordered. Behavior should outrank stated enthusiasm. NPS vs Repeat Rate: Behavior Proves Retention explains why completed purchases deserve more weight than survey intent. Once point balances become material, add issuance, expiration, redemption, fraud, and liability controls described in Loyalty Points Liability: Build Controls Before Campaigns . Frequently asked questions Does this Domino’s loyalty strategy require an app? No. Use the lowest-friction owned channel customers will revisit. Mobile web, stored browser checkout, an existing commerce account, or a wallet pass may solve the repeated task without native-app maintenance. When should an operator add points? Add points after checkout performs reliably and baseline repeat behavior is known. Launch with a margin floor, a defined reward rate, and a holdout or phased rollout; stop or revise the offer if contribution declines without measurable frequency lift. What should the first weekly audit include? Review checkout completion, payment failures, identified-order share, second-order rate, reward cost, contribution margin, unresolved service cases receiving promotions, and the most common abandonment step. Fix the largest repeated defect before adding features. --- # B2B Loyalty Programs: Design for Renewal, Not Enrollment https://loyalflow.cc/blog/b2b-loyalty-programs-renewal The short version: B2B loyalty programs should make renewal economically obvious before procurement turns the contract into a price comparison. Use account-level rebates for profitable incremental behavior, then give buying teams service and access benefits that support continued adoption. Key takeaways Start with the renewal date, then work backward 90–120 days. Pay rebates on incremental or strategically valuable behavior, not automatic baseline spend. Send economic value to the contracting account; give individual users approved service benefits. Show accrued value, retained status, and next-period economics before competitive bidding begins. Set the maximum reward from contribution economics , not a universal rebate benchmark. B2B loyalty programs win before renewal Consumer loyalty programs optimize repeat transactions. B2B retention has a different decisive moment: contract renewal, rebid, or budget approval. The account may buy regularly, but the real question arrives when procurement asks whether switching suppliers is worth the disruption. Set the renewal route before procurement reaches the junction. Work backward from that decision. For a contract expiring on 31 December, begin the renewal sequence around 90 days earlier. Confirm qualification, quantify earned value, resolve billing disputes, and surface unused benefits before procurement has already defined the conversation around price. The customer dashboard should answer four questions immediately: What did we earn? What did we use? What status do we retain? What disappears if we leave? Keep the last question factual. The objective is not a punitive exit fee; it is a clear comparison between continuing value and switching cost. The classic failure: launching enrollment in January, collecting activity data all year, then mentioning the program during the final renewal call. By that point, the buying committee may have issued a request for proposal. Treat renewal visibility as a lifecycle requirement, not a sales presentation. This week, list every active contract, expiry date, decision group, and current benefit balance. Add a 120-day alert for complex accounts and a 90-day alert for simpler renewals. Use rebates to fund incremental behavior A B2B relationship may already run on invoice credits, volume rebates, marketing funds, and service allowances. Points add a second currency to a relationship already governed by negotiated prices and contract terms. Use points only when their operational benefit clearly exceeds their accounting and redemption burden; otherwise, use a transparent rebate. Reward the new course, not the wall already standing. A rebate rate of 1–5% of qualifying spend can be a useful starting range, not a default promise. Qualifying spend might mean volume above a baseline, adoption of a higher-margin category, multi-year commitment, forecast accuracy, or payment performance. The rule must reward behavior that improves contribution or retention economics. Example: an account normally spends $500,000. It reaches $600,000 after adopting a product family with a 30% gross margin. The additional $100,000 creates $30,000 of gross profit. A 3% rebate on that incremental volume costs $3,000, leaving $27,000 before servicing costs. A retroactive 3% rebate on the full $600,000 costs $18,000 and may pay for demand the account would have generated anyway. Use incremental bands where possible. A rebate on spend from $500,001 to $600,000 protects the baseline. If a cliff is commercially necessary, model the full retroactive cost before approval and cap the exposure. The classic failure: calling an existing discount a loyalty reward. The account receives money but changes nothing. Establish the baseline from trailing 12-month spend, then document why each qualifying action deserves additional value. For low-frequency buying, points create even more friction: progress becomes invisible, redemption takes too long, and the buyer forgets the program between orders. A rebate or contract credit fits the purchasing rhythm better. See loyalty programs for infrequent purchases for the broader case against points in sparse purchase cycles. Separate account economics from buyer enablement The contracting company should receive the economic reward. Apply it as an invoice credit, renewal credit, approved marketing fund, service allowance, or payment to the legal entity. Record the qualifying activity, calculation, approval, and settlement date. Value feeds the account; support shelters the people using it. Individual users still influence adoption and renewal. Give them benefits that improve their work: priority support, training, certification, implementation reviews, advisory sessions, early product briefings, or relevant peer events. These benefits reinforce usage without creating an undisclosed personal payment for purchasing influence. Maintain two views. The account view shows qualified spend, estimated rebate, contract status, service usage, and renewal value. The user view shows training, permissions, support access, and recognition. Do not make a procurement user personally responsible for tracking corporate funds. The classic failure: sending gift cards or expensive personal rewards to employees who control supplier selection. Employer policies, procurement controls, and anti-bribery rules may prohibit them. Route material value to the account. Require documented employer approval for any individual benefit with meaningful cash value. Simple test: disclose the benefit to the buyer's finance director. If the arrangement becomes difficult to explain, replace it with training, access, or account-level value. Build the renewal value statement Do not count on a rebate balance alone to secure a complex renewal. Combine financial and operational evidence: earned credits, products adopted, service consumption, completed training, support outcomes, implementation milestones, and the next period's expected economics. Show the statement at least 60–120 days before expiry . For a 12-month contract, schedule a qualification review around day 245–275, a value review around day 275–305, and commercial negotiation afterward. Timing varies by procurement cycle; the principle does not. Include a plain comparison. “Renewal preserves $X in earned credit, Y active integrations, and Z agreed service capacity.” Do not claim savings without a defensible baseline. Do not hold an earned rebate hostage to signature unless the contract explicitly defined that condition before the account qualified. Retained status may require renewal, committed volume, or an annual business review. Give a 30–60 day grace period for documented contracting delays outside the customer's control. Communicate any status change before the renewal window, never after it. The classic failure: making benefits technically available but operationally invisible. Unused training, unclaimed service, and uncommunicated credits do not create perceived value. Assign an owner for each benefit and report usage before renewal. Set reward limits from contribution economics Do not use a universal rule such as “rewards must stay below 10–20% of incremental gross profit.” The correct ceiling depends on servicing cost, retention value, strategic fit, and the contribution required by the business. The reward comes from the margin, not the whole pie. Use this formula for each account or segment: maximum rebate = incremental gross profit − servicing cost − required contribution . If incremental gross profit is $30,000, servicing costs are $4,000, and the business requires $20,000 of contribution, the maximum rebate is $6,000. A $3,000 rebate works. A $10,000 rebate does not, even if the sales team expects renewal pressure. Review the calculation monthly. Settle rebates quarterly for frequent purchasing; settle annually for seasonal or contract-based volume. Display estimated accrual monthly, resolve disputes within 30 days, and prevent unapproved manual overrides. Measure renewal rate, incremental gross profit after reward cost, share of wallet, product breadth, service usage, and tier or status movement. Enrollment and points issued are activity metrics, not proof of retention. Use behavioral measures alongside satisfaction measures, as discussed in NPS vs repeat rate . The classic failure: treating a large renewal as proof that the program worked. Compare participating accounts with their own trailing 12-month baseline where possible. If revenue rises while contribution falls, the program is subsidizing demand, not retaining profit. Keep the first version narrow: one account-level rebate, one renewal dashboard, one buyer-benefit policy, and one approval formula. Add tiers only when customer behavior, contract complexity, and economics justify them. For model selection across points, tiers, and cashback, use the loyalty model comparison . Frequently asked questions Should B2B rebates be paid quarterly or annually? Use quarterly settlement when purchases are frequent and visible progress supports retention. Use annual settlement for seasonal volume or contract-based buying. Show estimated accrual monthly in both cases. Should rewards go to the account or the buyer? Send economic value to the contracting account. Give individual users approved training, access, recognition, and service benefits. Avoid personal cash equivalents unless the employer has explicitly approved them. How early should renewal value appear? Show accrued value 60–120 days before expiry. Use the longer window for multiple stakeholders, formal procurement, or competitive bids. Start later only when the buying cycle is demonstrably shorter. How do B2B loyalty programs avoid margin loss? Calculate the maximum rebate from incremental gross profit, servicing cost, and required contribution. Pay on incremental or strategically valuable behavior. Audit retroactive cliffs before launch. --- # Lifecycle Suppression Rules: Stop Marketing Through Service Failures https://loyalflow.cc/blog/lifecycle-suppression-rules-service-failures The short version: Lifecycle suppression rules should stop promotional messages when a customer has an unresolved delivery, payment, return, or support problem. Build the pause-and-restart logic before adding another onboarding, cross-sell, referral, or loyalty campaign. Key takeaways Suppress promotions within minutes of a service failure, not during the next daily audience refresh. Use explicit event rules for delays, failed payments, returns, low ratings, and open support cases. Keep transactional updates running while pausing discounts, referrals, reviews, and cross-sells. Restart messaging only after resolution plus a 24–72-hour cooling period. Measure prevented conflicts, post-resolution conversion, complaints, and margin—not email volume. Lifecycle suppression rules need an event hierarchy Most lifecycle systems decide who qualifies for a message. Better systems also decide who must not receive it. A customer with an open delivery problem should be excluded even when that customer qualifies for five revenue campaigns. One unresolved problem outranks every campaign qualification. Start with four event groups: fulfillment failures, payment failures, returns or refunds, and support problems. Useful triggers include a shipment delayed beyond the promised date, one failed delivery attempt, a payment failure, an initiated return, a rating of 1–2 out of 5, or a support case still open after 24 hours. Assign severity before adding channel logic. A missing order or disputed charge should suppress every promotional channel. A minor product question may pause cross-sell for 24 hours while leaving educational usage messages active. The counterexample: a customer reports a missing $120 order at 10:00, then receives a referral request at 14:00 because the campaign audience was built overnight. Both automations worked as configured. The operating rule failed. Use one precedence rule: unresolved service events outrank promotional eligibility. Do not reproduce that decision separately across email, SMS, push, and loyalty tools. Send a single suppression state downstream wherever the current stack permits it. Rule to apply this week: identify the five highest-severity customer events, map every promotional channel they should pause, then test whether the suppression arrives within 15 minutes. If the stack cannot move that quickly, use the shortest reliable sync interval and document the exposure window. Pause promotions, not necessary communication Suppression should not make the company disappear. Customers still need order updates, refund confirmations, security notices, password resets, support replies, and legally required messages. The rule separates necessary communication from messages asking for more money or effort. Pause discounts, product recommendations, replenishment prompts, referral requests, review requests, tier celebrations, points-expiry pressure, and subscription upgrades. Continue messages that explain status, required action, expected resolution, or completed remediation. Classify every automated message as transactional, service, educational, or promotional. This takes 60–90 minutes for a modest program with 20–40 active messages. Anything without an owner or classification should default to promotional until reviewed. The classic failure: a blanket suppression blocks the refund confirmation along with the cross-sell. The customer then contacts support again because the system withheld the one message needed to reduce uncertainty. Transactional labels cannot become a loophole. An email containing a shipping update plus a large “buy again” module is partly promotional. Remove the merchandising block during an active suppression state rather than pretending the whole message is operational. Keep suppression reasons visible to support agents. A simple status such as “promotion paused: return open until resolution” helps agents explain what will happen and prevents manual campaign enrollment during the dispute. Restart after resolution, not case closure A closed ticket does not prove restored confidence. The case may have been closed automatically, the refund may still be pending, or the replacement may not have arrived. Restart conditions should use the customer outcome, not the support team’s administrative status. Fixed is not the same as ready to ring again. For a delivery failure, wait until confirmed delivery or refund. For a return, wait until refund issuance or exchange shipment. For a failed payment, restart after successful payment unless the customer cancelled. For a low rating, require a response or a defined cooling period rather than assuming silence means recovery. Add a 24–72-hour delay after resolution before promotional messages resume. Use the shorter end for simple payment corrections; use 48–72 hours after missing deliveries, damaged products, or disputed charges. Apply a frequency cap so queued campaigns do not all release together. The counterexample: a replacement order arrives on Friday, then three paused campaigns send within 20 minutes: review request, replenishment offer, and points-expiry warning. Suppression prevented the initial conflict but the restart logic created another one. Discard stale messages instead of queueing them indefinitely. A delivery education email may remain useful for 7–14 days. A flash sale ending tomorrow does not. Every paused message needs an expiry condition, even if that condition is simply “skip this send.” Make the first post-resolution message low pressure. Confirm the remedy, provide relevant usage help, or ask whether the issue is actually solved. Do not use a coupon as the default apology; compensation should match failure severity and expected contribution margin. Measure conflicts prevented and value recovered Campaign engagement cannot tell you whether suppression works. Track the number of promotional sends blocked during active service events, the percentage released incorrectly, repeat contacts within 7 days, unsubscribe and complaint rates, and purchase behavior during the 30–60 days after resolution. Audit a sample of 25–50 suppressed customers each week during rollout. Check whether the trigger arrived on time, the correct channels paused, necessary messages continued, and restart happened only after the defined outcome. This manual review catches mapping errors faster than aggregate reporting. Use a holdout only when customer treatment remains fair. Compare normal restart timing with a longer promotional pause; never withhold shipment, refund, or support communication. Judge the result on incremental contribution margin after discounts, returns, and service cost. The classic failure: the team celebrates 10,000 suppressed emails without checking whether those customers later recovered. High suppression volume may indicate good controls, poor fulfillment, or both. The count diagnoses exposure; it does not prove retention. Wait until the final measured cohort has completed the full observation window. A 60-day post-resolution outcome requires 60 days after the last customer enters that cohort, plus any material return window. Leading indicators such as complaints can be read earlier; mature repeat-purchase results cannot. Set an operational target before launch: fewer than 1% of audited customers should receive a prohibited promotion during an active high-severity event. Then test whether post-resolution repeat rate holds or improves without excessive compensation. Suppression protects the measurement behind lifecycle work. Use the retention math behind LTV, churn, and repeat rate to evaluate recovered behavior rather than message activity. Frequently asked questions Should open support tickets suppress every campaign? No. Suppress by severity and subject. A missing order, disputed payment, return, or unresolved product defect should pause promotions. A simple usage question may only pause product recommendations for 24 hours. How long should suppression last? Keep it active until the customer outcome is complete, then add a 24–72-hour cooling period. Set a separate escalation for cases still unresolved after 3–7 days; never restart merely because a timer expired. What if the marketing platform cannot process real-time events? Use the fastest reliable audience sync, then remove the highest-risk campaigns from delayed channels. A 15-minute sync is a reasonable starting point; a 24-hour batch leaves too much room for conflicting messages. Should points-expiry messages continue during suppression? Usually not. Pause expiry pressure during high-severity failures, then extend the deadline by 7–30 days when the customer could not reasonably use the benefit. Keep the adjustment controlled because loyalty points liability requires clear issuance and expiry rules . --- # Loyalty Points Liability: Build Controls Before Campaigns https://loyalflow.cc/blog/loyalty-points-liability-controls The short version: Loyalty points liability requires measurement when a program creates a probable future obligation, but the accounting timing depends on award type, contract terms, and jurisdiction. Build the reconciliation, approval gates, and audit trail before issuing points at scale. Key takeaways Separate purchase-linked awards, promotional grants, and manual credits before applying accounting treatment. Reconcile point movement to the loyalty platform and general ledger every month. Estimate redemption from observed cohorts, not borrowed industry benchmarks. Approve campaigns using expected cost, a high-redemption case, and contribution margin . Keep every assumption, override, and approval in a dated audit trail. When loyalty points liability requires measurement A purchase-linked award can create a performance obligation or deferred-revenue component when the customer earns an enforceable right to a future benefit. A promotional grant issued without a purchase may instead be treated as a marketing expense or provision, depending on its terms. Service-recovery credits, partner-funded points, and discretionary adjustments can require different treatment again. Do not force every point into one accounting bucket. Start with an award-type register containing the earn trigger, funding party, customer right, expiry rule, redemption options, and approved accounting treatment. Finance should confirm the treatment with its accounting advisers; marketing should not infer it from the point label. Operational exposure begins earlier than formal recognition in some structures. Once customers can redeem an award, the program needs to forecast fulfillment and cash demand even if the ledger treatment differs. That distinction prevents an accounting debate from delaying basic cost control. Use expected fulfillment cost for operating forecasts, not customer-facing face value. If 100 million outstanding points have a modeled 70% redemption rate and weighted fulfillment cost of $0.006 per redeemed point, expected cost is $420,000. Those inputs are illustrative; replace them with observed redemption and contracted reward costs. Control failure: every point receives the same value because the platform exports one balance. The ledger then mixes purchase obligations, campaign expense, partner funding, and discretionary credits that should have been tracked separately. Build a monthly roll-forward finance can audit The monthly worksheet needs these fields: award type, opening points, issued points, redeemed points, expired points, manual adjustments, closing points, expected redemption rate, cost per redeemed point, expected cost, ledger balance, and reconciliation difference. Keep the data at award-type level; add cohort month when redemption behavior differs materially. One slipped tooth should never hide in the close. The point formula is simple: closing points equal opening points plus issued points minus redeemed points minus expired points, plus or minus adjustments. Expected cost equals closing points multiplied by expected redemption rate multiplied by weighted fulfillment cost per redeemed point. Reconciliation difference equals modeled expected cost minus the relevant ledger balance. Set an investigation threshold using materiality, not an arbitrary industry percentage. Use the lower of a fixed financial amount approved by finance or a percentage of modeled expected cost. A smaller program might investigate any difference above $5,000; a larger program may use 1% if that produces a lower threshold under its policy. Both formulas and that threshold are runnable in the points liability calculator : it rolls the balance forward, prices it at expected fulfillment cost and a high-redemption case, and flags the reconciliation difference when it exceeds your threshold. Every adjustment needs a reason code, approver, timestamp, and source reference. Separate fraud reversals, customer-service reinstatements, migration corrections, and expired-point reversals. A net adjustment line without evidence is not a control. Control failure: the platform balance reconciles only in total. A campaign over-issues 8 million points while a migration correction removes the same amount, leaving a clean closing balance and two hidden errors. Reconcile movement by type, not just the endpoint. Estimate redemption from cohorts, not benchmarks Calculate observed redemption by earn cohort: redeemed points from that cohort divided by points originally issued to that cohort, adjusted for reversals. Keep purchase-linked base earn, welcome bonuses, multipliers, service recovery, and partner awards separate until data proves their behavior is similar. Measure the behavior your customers actually leave behind. Do not declare eventual redemption from a three-month-old cohort. Use cohorts old enough to cover the program’s normal redemption cycle, then compare cumulative redemption after consistent windows such as 30, 90, 180, and 365 days. Programs with long purchase cycles may need 18–24 months before older cohorts provide a useful maturity anchor. Apply survival or runoff analysis when large balances remain redeemable beyond the observation window. Otherwise, use a documented tail assumption based on the oldest available cohorts. Refresh the estimate quarterly, or sooner after reward repricing, earn-rate changes, expiry changes, or a redemption variance above the threshold set by finance. Breakage is an output of customer behavior and contractual expiry, not a target marketing can select to make economics pass. Recognize it only under the approved accounting policy. Keep operational forecasts showing both expected redemption and a higher-redemption case. Model failure: finance copies a 70% redemption assumption from last year after marketing doubles the earn rate and adds cash-equivalent rewards. The historical cohort no longer represents the current proposition. Segment the new awards and reforecast. Put campaign exposure behind an approval gate Every material promotion should show baseline issuance, incremental issuance, expected redemption, weighted fulfillment cost, high-case cost, expected contribution margin, and funding owner. Use a high case based on internal forecast error or comparable campaigns; without history, test redemption 5–10 percentage points above the working estimate and issuance 10–20% above plan as explicit scenarios, not claimed benchmarks. Price the blast before pulling the trigger. Set gates against your economics. A practical starting policy requires finance approval when a campaign could raise monthly issuance by more than 10%, increase modeled expected cost by more than 5%, or introduce a new reward-cost structure. Tighten those limits when margins are thin or reward funding requires cash settlement. Approval must preserve the submitted assumptions, data extract date, model version, approver, and maximum authorized issuance. During launch, compare actual issuance with the approved cap daily for concentrated events and weekly for longer campaigns. Pause mechanics automatically where the platform supports a hard cap. Judge the campaign against contribution margin, not revenue. The same discipline used in retention economics and repeat-rate decisions applies here: incremental gross profit must exceed reward cost, campaign expense, and likely displacement. Approval failure: creative launches before finance receives the point multiplier rules. Finance can document the exposure afterward, but cannot control it. No approved model, no campaign. Control expiry without manufacturing breakage Expiry limits indefinite exposure only when the customer’s claim legally ends under clear program terms and the accounting policy permits recognition. A new expiry announcement does not erase existing obligations immediately. Retroactive changes require legal review and can create avoidable service costs. Expiry should end opportunity, not quietly obstruct it. Use a clear rule — 12–24 months from issuance or qualifying account activity is a workable starting range when it matches the purchase cycle. Send a reminder at least 30 days before expiry; consider another 7–14 days before expiry for material balances. Show the exact points, date, and available redemption path. Track expiry notices, delivery status, expired amounts, reinstatements, complaints, and manual overrides. A spike in reinstatements means the nominal expiry total overstates the lasting reduction and creates extra support expense. Finance needs the net outcome, not the batch-job output. Policy failure: engineering expires dormant balances without a signed rule, notice evidence, or reinstatement procedure. The apparent reduction becomes complaints, reversals, and an audit problem. For long buying cycles, skip points for infrequent purchases rather than relying on punitive expiry. Frequently asked questions Who should own the loyalty points liability model? Finance should own the model, accounting policy, materiality limits, and ledger reconciliation. Marketing owns campaign forecasts and mechanics; operations or engineering owns platform extracts and movement reconciliation. Named owners should sign each monthly close. How often should assumptions be updated? Reconcile point movement monthly and review redemption, breakage, timing, and reward cost quarterly. Reforecast immediately after material program changes or when actual results breach the approved variance threshold. Do unredeemed points equal profit? No. Unredeemed points can remain customer claims until redemption, valid expiry, or another contractual extinguishment. Expected breakage may affect measurement under the applicable policy, but an outstanding balance is not automatically profit. What evidence should an auditor receive? Provide program terms, award classifications, monthly roll-forwards, platform-to-ledger reconciliations, cohort calculations, reward-cost support, adjustment logs, campaign approvals, expiry evidence, assumption changes, and dated sign-offs. --- # Loyalty Programs for Infrequent Purchases: Skip Points https://loyalflow.cc/blog/loyalty-programs-infrequent-purchases The short version: Loyalty programs for infrequent purchases should skip points. When purchases sit 3–10 years apart, useful service preserves permission, referrals create interim value, and durable records help the brand win when replacement intent returns. Key takeaways Reject points when meaningful redemption takes longer than customers will remember the account. Build contact around ownership events, not campaign quotas. Cap referral rewards using allowable acquisition cost, not a generic percentage. Track reachable records by purchase cohort and improve the baseline each quarter. Measure service, referrals, recognition, and eventual category repurchase. Why loyalty programs for infrequent purchases fail with points Points require repeated transactions. A customer buying coffee weekly can see progress after several visits. A customer replacing a mattress, boiler, vehicle, roof, or premium appliance every 3–10 years cannot. Points that cannot arrive in time are not much of a reward. Take a $2,000 purchase with a proposed 2% earn rate. The account receives $40 in value, then sees no natural earning event for years. That balance creates neither habit nor switching cost. It is a delayed discount attached to an account the customer may forget. Use a cycle-relative test instead of an arbitrary redemption deadline. Estimate time to first meaningful redemption from actual purchase frequency and spend. Reject points when that time exceeds either the normal repurchase interval or the period during which customers still recognize and use the account. The decision rule is simple. Use points for frequent, measurable purchases. Use service benefits when ownership creates recurring needs. Use access when availability, priority, or expertise has standalone value. Use referrals when satisfied owners can generate demand before buying again. The broader choices appear in Points, Tiers, or Cashback: Choosing the Right Loyalty Program Model . The classic failure: points expire after 12 or 24 months while the category repurchase cycle lasts five years. Customers cannot earn enough to redeem, then discover that the small balance vanished. The program adds liability, support work, and irritation without changing behavior. Build the program around the ownership cycle The program needs a useful job after checkout. Map installation, registration, setup, warranty, maintenance, inspections, replacement parts, seasonal preparation, repairs, resale, and disposal. Keep only events where contact can prevent cost, save time, or improve product performance. Loyalty lasts longer when the product does. Start with a test cadence, not an industry benchmark. For example: onboarding within 7 days, a setup check after 30 days, a maintenance reminder at the product’s documented interval, and a warranty notice 60 days before expiry. Measure action rate and unsubscribes, then remove messages that produce neither service activity nor retained permission. Give every contact one action. Book service. Retrieve the correct manual. Confirm coverage. Order a compatible part. Store an inspection record. A message without a clear ownership outcome does not deserve space in the lifecycle. Make the customer record useful enough to revisit. Store model, serial number, purchase date, warranty status, invoices, parts, and completed work. Test retrieval internally: choose a target such as 10 seconds, measure current performance, then fix the largest identity or search failure. The classic failure: replacing purchase frequency with marketing frequency. Monthly newsletters and generic tips preserve a sending schedule, not a relationship. If two ownership events merit contact this year, send two useful messages rather than 24 forgettable ones. Use referral economics, then preserve customer identity A referral can act as the repeat transaction between major purchases, but it does not need a second loyalty program. Define one qualifying event: an attributable introduction that becomes a paid, non-cancelled customer. Ignore shares, clicks, leads, and quotes unless their downstream economics are proven. Let advocacy travel; keep the customer record rooted. Set the reward from allowable customer acquisition cost. Use this formula: maximum referral reward = allowable CAC − handling cost − expected fraud cost − expected cancellation cost . If allowable CAC is $300, administration costs $20, expected fraud costs $15, and cancellation exposure is $25, the reward ceiling is $240. Test below that ceiling; do not default to a percentage of order value. Choose one attribution method and a test window, such as a named referral lasting 60 days. Pay only after the cancellation period. Review repeated claims manually once observed fraud or support cost justifies the work. This keeps the referral layer small and tied to profitable demand. Meanwhile, preserve identity across email changes, phone changes, dealers, installers, and service partners. Match consented identifiers with product serial number, order number, address, or warranty registration. Do not force duplicate accounts because the original transaction came through a channel partner. Define reachability as deliverable, permissioned customer records ÷ eligible purchase cohort . Establish the baseline by purchase year and channel. Set the next quarterly target as a measured improvement, such as 3 percentage points, rather than claiming that one universal threshold fits every category. The classic failure: paying referral rewards for low-quality leads while customer records decay. Self-referrals consume budget, sales teams dispute attribution, and obsolete contact details make the eventual replacement campaign useless. One conversion event, one reward rule, one identity owner. Measure the relationship across the full replacement cycle Monthly active members mean little in a category bought once per decade. Measure whether the program keeps customers reachable, produces useful ownership behavior, creates profitable referrals, and improves recognition when category demand returns. Measure the whole relationship, not one quiet season. Track service uptake after each reminder, warranty registration, successful record retrieval, reachable-record rate, referral conversion, referral contribution margin, assisted revenue, and category repurchase. Keep cohorts based on original purchase year, product type, and channel for the full expected cycle. Compare customers who used service or completed a referral with similar customers who did neither. The comparison does not prove causation, but consistent differences in reachability, consideration, and repurchase tell operators where to test next. Enrollment alone proves only that checkout staff asked or an incentive worked. The classic failure: reporting a 40% enrollment rate as retention while ignoring dead email addresses, unused benefits, and absent repurchase data. Behavior remains the harder standard, as explained in NPS vs Repeat Rate: Behavior Proves Retention . This week, kill the points proposal, map five ownership events, define one referral conversion, calculate its reward ceiling, audit reachable records by cohort, and create a quarterly dashboard. The program should become quieter, easier to operate, and more useful. Frequently asked questions How often should an infrequent-purchase brand contact customers? Contact them when an ownership event creates a useful action. Start with onboarding, maintenance, warranty, safety, parts, or inspection events. Measure action and unsubscribe rates; remove contacts that produce neither customer value nor service activity. How large should a referral reward be? Start below the economic ceiling: allowable CAC minus handling, fraud, and expected cancellation costs. Use a fixed amount when clarity matters. Pay after the cancellation period and tighten review only when claim volume or observed abuse warrants it. How do you measure loyalty with a 10-year replacement cycle? Use leading indicators while repurchase matures: reachable records, service uptake, warranty activity, referral contribution margin, assisted revenue, and recognition during category research. Preserve purchase cohorts for the full cycle rather than resetting reporting annually. What if customers buy through dealers or marketplaces? Offer a direct ownership benefit worth registering for, such as warranty coverage, service history, parts lookup, or maintenance reminders. Record the originating channel, preserve dealer credit, and assign responsibility for consent, service contact, and replacement follow-up. --- # NPS vs Repeat Rate: Behavior Proves Retention https://loyalflow.cc/blog/nps-vs-repeat-rate The short version: In the NPS vs repeat rate debate, repeat rate wins. Purchases prove retention; NPS supplies hypotheses about why customer behavior changed. Key takeaways Define repeat rate using a fixed 30-, 60-, 90-, or 180-day window matched to the purchase cycle. Compare mature acquisition cohorts before reviewing NPS movements. Keep survey trigger, channel, wording, and timing stable. Link responses to later purchases, then control for tenure, channel, and previous frequency. Use behavioral confirmation for retention investment , not urgent safety, fraud, accessibility, or compliance fixes. NPS vs repeat rate: behavior wins NPS asks whether a customer would recommend the company. Repeat rate records whether that customer returned and bought again. One captures stated intent at a specific moment; the other captures an economically meaningful action. Retention leaves wear marks, not promises. Choose the repeat window from the natural purchase cycle. Monthly consumables may need 30- and 60-day views. Apparel may need 90 or 180 days. Compare customers acquired in the same period, then give every cohort equal observation time. A customer who scores the brand a 10 but never returns produces no retained revenue. A customer who scores it a 6 but buys four times in six months does. When sentiment and transactions disagree, transactions decide whether retention happened. The classic failure: celebrating an NPS increase from 42 to 47 while 90-day repeat rate falls from 28% to 22%. The survey may have reached happier customers, followed successful support cases, or missed silent defectors. None of those explanations repairs the six-point decline. Use one primary window and one secondary window. Review 30- and 90-day repeat for faster categories; 90- and 180-day repeat for slower ones. Fix those definitions for at least two reporting cycles rather than changing the window when results become uncomfortable. Survey design can manufacture an NPS trend NPS respondents are not a random customer sample. Customers with unusually good or bad experiences often respond more readily. Quiet defectors may disappear from survey data precisely when their behavior matters most. The survey may catch the loudest customers, not the whole market. Timing changes the measure. A survey sent minutes after delivery mainly captures delivery satisfaction. One sent after a refund captures service recovery . A survey sent 30–45 days later may better reflect product use, but usually attracts fewer responses. Channel changes create another distortion. Email, in-app, receipt, and support surveys reach different populations. Comparing an in-app score this month with an email score last month mixes customer selection with sentiment. Sample size also limits interpretation. With 100 responses, a simple proportion near 50% has an approximate 95% sampling margin of error near ±10 percentage points under random sampling. NPS combines promoter and detractor shares, while voluntary response bias adds uncertainty that this calculation cannot remove. The classic failure: treating 20 angry responses as proof that the whole customer base is leaving. Those comments can expose serious friction, but they do not establish prevalence. Check returns, support contacts, purchase delays, and repeat behavior before funding a broad retention intervention. Keep the survey channel, trigger, wording, and delay stable for 8–12 weeks when possible. That period is an operating heuristic, not a statistical guarantee: it usually provides enough cycles to separate persistent movement from a single campaign, outage, or fulfillment issue. Always show response counts beside the score. Measure the behavior behind the score Start with cohort repeat rate: the percentage of first-time buyers who place another order inside the chosen window. Add median time to second purchase, orders per returning customer, and retained revenue from the original cohort. Each measure answers a different question. Repeat rate shows how many customers return. Time to second purchase shows how quickly a habit forms. Purchase frequency measures depth among returners, while revenue retention catches customers who remain active but spend less. Keep the scorecard compact. For each monthly acquisition cohort, record the relevant 30-, 60-, 90-, or 180-day repeat rates. Add median days to order two, orders per returning customer, and retained revenue as a percentage of first-order cohort revenue. Segment only where an operator can act: acquisition source, first product, geography, membership status, or first-order value band. Five usable segments beat 40 cuts with tiny denominators. For formulas and cohort setup, use the retention math every founder should know . The classic failure: reporting one blended repeat rate after acquisition mix changes. If paid social grows from 20% to 50% of new customers, total repeat rate can fall even when every channel remains stable. Compare like-for-like cohorts before blaming the product or loyalty program. Do not declare a 90-day retention shift from a cohort aged 45 days. Require full observation time, then look for either two consecutive mature cohorts moving in the same direction or one large movement confirmed across meaningful segments. Two cohorts are a practical guardrail against reacting to one noisy period, not proof of causation. Use NPS to diagnose, not certify NPS becomes useful when linked to behavior. Compare scores and comments among fast repeaters, late repeaters, one-time buyers, high-value customers, and customers who returned products. Ask which experience changed before behavior moved, not whether the headline score rose. NPS detects a signal; purchases confirm the diagnosis. Review mature cohort repeat rate, time to second purchase, frequency, and retained revenue first. Flag a movement for investigation when it persists across two periods or is large enough to affect the operating plan. Avoid a universal 10% threshold; normal volatility differs sharply between a cohort of 200 customers and one of 20,000. Trigger surveys around specific experiences: 3–7 days after delivery, after support resolution, or after enough usage time to judge the product. Cap requests near one every 60–90 days to reduce fatigue and prevent frequent buyers from dominating responses. Store customer ID, order ID, trigger, response date, score, and consent status. Append purchases occurring 30, 60, and 90 days later. Compare later behavior across score bands while controlling for tenure, acquisition channel, and prior purchase frequency. The classic failure: seeing detractors repeat less and claiming NPS caused churn. Poor experiences can drive both outcomes; product fit, delivery region, or customer type may also explain the relationship. NPS identifies where to investigate. It does not establish causation. Require behavioral confirmation before committing substantial retention budget. Do not wait for repeat-rate evidence to address credible safety, fraud, accessibility, or compliance problems; those demand immediate investigation and containment regardless of revenue impact. The same behavior-first test applies to events and brand experiences: experiential loyalty needs a second habit, not a packed room . Positive comments matter only when they lead to another valuable action. Frequently asked questions How many NPS responses are enough? Calculate precision from the decision being made. Around 100 responses gives roughly ±10 percentage points for a proportion near 50% under random sampling; voluntary survey bias makes real uncertainty worse. Combine periods for small segments, inspect comments for hypotheses, and always report the denominator. How often should NPS and repeat rate be reviewed? Review survey themes and available behavior weekly. Make retention decisions monthly or quarterly, matched to the purchase cycle. A 90-day repeat metric cannot support a trustworthy weekly verdict. What if NPS rises while repeat rate falls? Trust the repeat-rate warning. Check cohort maturity, acquisition mix, survey channel, response rate, respondent composition, and purchase-window definitions. Treat higher NPS as a diagnostic clue, not proof that loyalty improved. How should responses be linked to purchases? Attach each response to a stable customer ID and timestamp under appropriate consent, access, and retention controls. Compare purchases before and after the response, then segment by tenure and prior frequency to avoid mistaking established loyalty for survey impact. --- # Experiential Loyalty Needs a Second Habit, Not a Packed Room https://loyalflow.cc/blog/experiential-loyalty-second-habit Experiential loyalty fails when the experience ends at the door. Tinder Events may fill rooms, generate social posts, and lift app opens for several days. None of that proves retention unless attendees return to another event, continue useful conversations in the app, or remain paying customers longer than comparable non-attendees. The standard is repeat behavior. If Tinder cannot connect first attendance to another valuable action within 30–45 days, Events is an acquisition campaign—not a loyalty program. Experiential Loyalty Starts With a Recurring Job An event must solve a customer problem that returns. For Tinder, that problem cannot be broad social discovery. It needs a recognizable recurrence window: meet compatible singles nearby, restart dating after a quiet week, enter a trusted social setting, or move stalled conversations offline. A memorable night becomes loyalty only when it leads somewhere again. The job determines the cadence. A neighborhood mixer every two or four weeks can become routine. A celebrity launch party cannot. A recurring interest-based meetup can build familiarity; an annual festival comes around too rarely to become a routine. The classic failure: treating one attendance as retention. A customer who attends once, posts twice, then stops using Tinder has not become more loyal. The event bought temporary attention. Test the job before expanding the format. Interview 10–15 attendees within 72 hours. Ask what problem the event solved, when that problem is likely to return, and what would make another booking worthwhile without a discount. Do not impose an arbitrary repeat-intent threshold. Start with historical behavior: how often eligible users already attend singles events, how often Tinder can offer a relevant local event, and how many repeat attendees are needed to cover fixed delivery costs. Then write a hypothesis before launch, such as: attendees offered one relevant event within 30 days will repeat more often than a comparable holdout group receiving no event invitation. Small samples need ranges, not declarations. Report the repeat-rate estimate with its confidence interval. If 8 of 40 attendees return, the observed rate is 20%, but the uncertainty remains too wide for a large rollout. Run more cycles before treating the result as stable. Build the Event Activation Funnel Tinder should operate Events as a product funnel: discovery, detail-page view, RSVP, attendance, post-event connection, second-event offer, then repeat attendance. Each stage needs one owner, one definition, and a weekly cohort review. The room matters less than the thread that brings people back. RSVP-to-attendance should be judged against Tinder’s own event history, split by free versus paid entry, lead time, city, venue distance, and reminder cadence. A free RSVP made 21 days ahead is not comparable with a paid booking made three days ahead. Blending them hides the actual leak. Measure post-event connection within 72 hours, while people still remember names and conversations. Define it tightly: a reciprocal match, exchanged messages, or another mutually agreed interaction. Profile views and app opens are too weak; both can rise without creating customer value. Second-event booking needs an eligible-opportunity denominator. Suppose a city runs one event every 30 days, but only 60% of first-time attendees qualify for the next format by age, location, or interest. Repeat rate should be reported for all first-time attendees and separately for those with a relevant second opportunity. Showing only exposed users exaggerates performance; showing only the full cohort can hide poor event supply. The funnel trap: optimizing registration because it is easy to move. A shorter form can lift RSVPs while attendance, connections, and repeat bookings remain flat. Fix the first behavioral leak, not the most visible interface. Use one 45-day cohort view. Compare users first exposed during the same week, then track every stage. If attendance is weak, change commitment devices, timing, or reminders. If connections are weak, change the room design and matching flow. More promotion will not repair a weak event. Measure App Retention and Break-Even Economics The primary behavioral metric should be repeat attendance within the next eligible event window. For a biweekly format, that may mean 30 days. For a monthly format, use 45–60 days. The window must allow at least one realistic chance to return. Events must also strengthen Tinder’s core product. Compare attendees with similar non-attendees by city, tenure, prior activity, and subscription status. Track meaningful behavior during the next 14 days: reciprocal matches, replies, active conversations, profile improvements, or intentional browsing. Raw app opens reward aggressive notifications. Paid effects need 30–60 days of observation. Separate new subscriptions, renewals, and prevented cancellations because each has different economics. A burst of upgrades can look attractive while subscriber churn remains unchanged. Replace generic churn targets with a break-even rule. Calculate total event cost, including venue, staffing, safety, incentives, support, and allocated local operations. Divide that cost by eligible attendees to get the required incremental retained margin per attendee. If an event costs $12,000 and reaches 300 eligible attendees, it needs $40 of incremental retained margin per attendee to break even. That value may come from additional renewals, lower cancellations, or profitable upgrades. Ticket revenue can reduce the cost base, but it should not be mistaken for retention value. Use a randomized holdout where practical. If not, use matched non-attendees and state the limitation. Compare incremental retained margin over the same period, then attach a confidence interval. Scale only when the lower end of the plausible range approaches break-even—not when the point estimate briefly clears it. The measurement failure: presenting registrations, impressions, or social reach as evidence of loyalty. Those metrics describe distribution. They do not establish changed behavior, reduced churn, or profitable retention. Close the Event-to-App Loop, Then Kill Weak Formats The event should create a useful reason to reopen Tinder within 24 hours. With mutual consent and clear privacy controls, the app can surface people met at the venue, conversation prompts, confirmed connections, or the next relevant local event. Keep the next action close. A follow-up should arrive within 24–72 hours; the next event option should appear within 7–14 days when supply permits. Booking should take fewer than three taps. Five screens, an unrelated home feed, or a generic thank-you message breaks continuity. No points system or blanket 20% discount is required. The reward is better access, trusted attendance, improved matching, and continuity between online and offline interaction. Discounts can test price sensitivity, but they cannot prove recurring demand. Give each format an 8–12 week test window, long enough for several occurrences and at least one repeat opportunity. Predeclare the decision rule: continue when incremental retained margin plausibly covers cost; redesign when one funnel stage clearly blocks repeat behavior; stop when three cycles produce no durable app or retention lift. The final trap: protecting a photogenic format because it fills the room. Crowds may be first-time visitors with no intention of returning. Attendance earns another test only when repeat behavior and cohort economics improve. Events deserve funding when the second habit pays for the first experience. Use LoyalFlow’s framework for LTV, churn, and repeat rate to calculate the retained margin Tinder Events must produce before expansion. Frequently asked questions Does a sold-out event prove the loyalty programme is working? No. Full rooms, social posts and several days of raised app opens measure attention, not retention. The standard is repeat behaviour: attendees returning to another event, continuing useful conversations in the app, or staying paying customers longer than comparable non-attendees. Without a second valuable action inside 30 to 45 days it was an acquisition campaign. How quickly does the follow-up need to arrive? Within 24 to 72 hours, while names and conversations are still fresh, with the next event option surfacing inside 7 to 14 days where supply permits. Booking should take fewer than three taps. Five screens, an unrelated home feed or a generic thank-you message breaks the continuity the event just created. Do experiential programmes need points or a discount attached? No. The reward is better access, trusted attendance, improved matching and continuity between the online and offline sides of the product. A blanket discount bolted onto an event buys a cheaper transaction, not a returning habit. --- # Burger King’s Whopper Guarantee Is a Retention Bet, Not a Refund Policy https://loyalflow.cc/blog/burger-kings-whopper-guarantee-is-a-retention-bet-not-a-refund-policy A bad Whopper can erase the next 5, 10, or 20 visits from a customer who decides the brand is unreliable. Replacing one burger matters only if it prevents that loss. Burger King should therefore treat the Whopper Guarantee as a retention mechanism, not a refund policy. The operating target is not replacements issued. It is customers recovered. The Guarantee Must Repair the Current Meal Product failures create an immediate decision: was this a random mistake, and will Burger King fix it without a fight? Fast replacement answers both questions before frustration becomes a reason to switch. The replacement has to rescue today’s meal before it can earn tomorrow’s visit. Use five minutes as a pilot target, not an industry benchmark. Start the clock when the customer reports the problem. Stop it when the corrected item reaches them. Measure the current median by location, then test whether frontline authority can reduce it over four weeks. A voucher delivered seven days later may reimburse the food, but it does not repair the meal. Points have the same limitation. Value redeemable on a future visit asks the customer to accept today’s failure and take another risk later. Set one decision rule: visible product-quality failures receive immediate replacement below a defined order-value limit. Managers handle ambiguous claims or repeated requests. Crew members should not need approval for a clearly incorrect, missing, cold, or badly prepared item. Failure signal: replacement time looks acceptable only because refused claims never enter the dataset. Log every request, including denials and abandonments. A low claim rate without denial data proves nothing. This week, choose 5–10 restaurants with different order volumes. Record acknowledgment time, resolution time, outcome, channel, failure type, and whether manager approval was required. That produces an operating baseline without pretending five minutes is universally correct. Use Store Economics, Not Generic Food-Cost Claims A replacement burger does not cost its menu price, but Burger King-specific direct cost cannot be inferred from public menu pricing. Operators should use their own ingredient, packaging, waste, and incremental labor data. The useful equation is simple: replacement direct cost ÷ preserved contribution margin per future visit . If replacement costs $2 and a normal future visit produces $4 of contribution margin, preserving one visit covers two replacements. Those figures are illustrative assumptions, not Burger King estimates. Run the calculation at location level. Menu mix, labor conditions, franchise economics, and delivery fees can change the answer materially. Use the customer’s normal order history where identity matching exists; otherwise use channel-specific average contribution margin. Set review thresholds from the pilot rather than importing arbitrary percentages. Establish each location’s weekly claims per 1,000 eligible orders, then investigate stores running at twice the pilot median or moving sharply for two consecutive weeks. Review patterns before restricting legitimate claims. The classic failure: finance attacks visible replacement cost while acquisition discounts remain buried in marketing spend. Compare both on the same basis: direct cost per retained or acquired customer, followed by contribution margin over 30 and 60 days. Do not require a full lifetime-value model. Start with the next two expected visits. If the recovered customer returns once at normal contribution margin, the guarantee may already pay back; if return behavior remains depressed, a cheap replacement was still a failed recovery. Build One Claim Record, Then Measure the Next Visit The minimum measurement schema needs one row per request. Store claim ID, customer or payment identifier where permitted, order ID, location, channel, failure type, request time, resolution time, outcome, replacement direct cost, manager involvement, and denial reason. Track the repair, then watch whether the customer comes back. Join that record to four behavioral fields: pre-incident visit frequency, pre-incident average spend, first return date, and spend during the next 30 and 60 days. Preserve an anonymous cohort for customers who cannot be matched rather than excluding their operational results. Build the baseline from the 60–90 days before launch. For each claimant, estimate expected visits using their own prior frequency when available. A customer who normally visits weekly should not be judged by the same 60-day standard as someone who visits quarterly. Use a compact weekly view: Operations: claims per 1,000 orders, median resolution time, first-contact resolution, denial rate, manager involvement. Quality: failure type, repeat complaint rate, location variance, recurring menu-item problems. Retention: 30-day and 60-day return rate, days to next visit, post-incident spend versus prior spend. Economics: replacement direct cost, preserved contribution margin, cost per recovered customer. A useful pilot target is relative improvement. Reduce median resolution time or denial rate by 25% over four weeks, then check whether 30-day return behavior improves. Relative targets remain defensible because they use Burger King’s own baseline. Counterexample: 90% of claims receive replacements, yet recovered customers return half as often as before. Operational completion looks strong; retention remains damaged. Compare post-incident frequency with both matched non-claimants and each customer’s prior behavior. Review execution weekly by location, customer cohorts monthly, economics quarterly. System averages hide the store where every claim requires a manager and the store where one equipment problem generates repeated failures. Keep Recovery Separate From Loyalty Rewards Points reward continued behavior. Guarantees repair broken behavior. Combining them lets loyalty mechanics obstruct a basic service obligation. A customer holding 800 points does not need another 200 when the burger is wrong. Replace the product first. Add points only as extra recognition when the failure involved unusual delay, repeated mistakes, or another reason the replacement alone was insufficient. Membership should never determine eligibility. Digital identity can simplify order matching and later retention analysis, but forcing enrollment turns recovery into lead capture. Honor the guarantee first; invite enrollment afterward. Keep claim intake under 60 seconds as a design hypothesis. Known digital orders should require only failure type, requested remedy, and optional evidence. Counter claims can use approximate purchase time, item, and location when the defect is visible. Failure signal: customers must upload multiple photos, verify an email, or wait 48 hours for a low-value decision. That process may reduce claims while increasing churn. Fraud controls should target repeated or anomalous behavior, not tax every claimant. Pilot the workflow across 5–10 varied locations for four weeks. Expand only after Burger King can identify who approves replacements, how quickly stores resolve them, what each replacement costs, and whether resolved customers return at something close to their prior frequency. Guarantees earn budget through preserved contribution margin, not free-food volume. Model that trade with the retention math every founder should know , then judge the Whopper Guarantee by the visit that proves recovery worked: the next one. Frequently asked questions Is a voucher an acceptable substitute for replacing the item? It reimburses the food; it does not repair the meal. A voucher delivered days later, like points credited for a future visit, asks the customer to absorb today’s failure and then take another chance on the brand. Fast replacement answers the two questions the customer is actually asking: was this random, and will it be fixed without a fight. How many replacements does one preserved visit pay for? Divide replacement direct cost by preserved contribution margin per future visit. On illustrative figures — $2 to replace, $4 of contribution margin per normal visit — preserving one visit covers two replacements. Run it at location level with your own ingredient, packaging, waste and incremental labour data, because menu mix, labour conditions, franchise economics and delivery fees can change the answer materially. Should the guarantee require loyalty membership? No. Membership should never determine eligibility. Digital identity makes order matching and later retention analysis easier, but requiring enrolment before honouring a guarantee turns service recovery into lead capture. Honour the guarantee first and invite enrolment afterwards. --- # What Starbucks Rewards Gets Right (and What Copycats Miss) https://loyalflow.cc/blog/what-starbucks-rewards-gets-right-and-what-most-copycats-miss Starbucks Rewards routinely drives more than half of U.S. company-operated revenue, and its stored-value balances rival a small bank's deposits. It is easy to copy the surface — stars, an app, free drinks — and miss the machine underneath. 1. The prepaid float is the program The genius is not points; it is stored value . Members load money onto cards before buying anything. That produces three effects a points-only copy cannot replicate: Starbucks holds billions in interest-free float, breakage on unspent balances flows to revenue, and — most important behaviorally — money already loaded feels spent, so the next purchase decision is pre-made in Starbucks' favor. 2. Rewards priced in perceived value, not cost A free latte costs Starbucks far less in marginal ingredients th a n the $5–6 a member pays for one, and that gap is the whole mechanism. That gap lets the program feel generous at a modest true cost. Retailers who sell other people's products at thin margins cannot reproduce this — which is why a supermarket copying the stars model ends up either stingy or unprofitable. 3. Frequency mechanics, not annual ones Coffee is a daily habit , and every mechanic matches that cadence: Stars expire six months after the month they are earned unless a member holds Gold or Reserve status, double-star days create short-term urgency, and challenges refresh on a short cycle. The lesson is not "add gamification" — it is match reward cadence to purchase cadence . A mattress brand with a punch card has copied the form and ignored the physics. 4. The app is the loyalty program Order-ahead, payment, and rewards live in one surface, so the program is not a discount layer — it is the most convenient way to buy. Convenience is the retention mechanism; the stars are the story members tell themselves. What to steal Prepaid or subscription mechanics if your frequency supports them — the float and pre-commitment do the heavy lifting Rewards with a perceived-value-to-cost gap (your own products, experiences, access) Expiration and cadence tuned to your natural purchase cycle Copy the physics, not the paint. The copy that fails, in order Picture the copy: a retailer ships stars, an app and a free item, then wonders why frequency did not move. Here is how it comes apart. The reward is funded from a thin resale margin, so it is set low enough to be uninspiring — a $5 reward after $500 of spend is a 1% rebate wearing a costume. Because the reward is distant, members stop tracking progress. Because nobody is tracking progress, the app has no reason to be opened between purchases. Because it is not opened, it never becomes the way to buy, and it stays a loyalty screen bolted onto a checkout that already worked. Notice what is absent at every step: money in advance. Without pre-commitment, the program can only react to purchases the customer was already making, which is the definition of a discount rather than a retention mechanism. So the diagnostic is one question. Does anything in your program change what the customer does before they decide to buy? Stars awarded afterwards do not. A loaded balance, a paid membership or a subscription does. Frequently asked questions Can a smaller brand run stored value? Mechanically, yes — most commerce platforms already sell gift-card or store-credit functionality. The parts that stop people are not mechanical. Prepaid balances are customer money until spent, which brings gift-card and unclaimed-property rules that vary by jurisdiction, and breakage recognition is an accounting policy rather than a marketing decision. Get both answered before you promote top-ups, not after the balances exist. Is breakage just revenue from customers who forgot? Partly, which is why the recognition policy matters. Breakage taken aggressively converts a customer-service problem into reported revenue, and it can come back later as complaints and refunds. Unspent is also not the same as forgotten: a customer who tops up every month permanently carries a float they fully intend to use. Estimate breakage from your own observed redemption cohorts rather than a borrowed rule of thumb. My customers buy monthly, not daily. What still carries over? The pricing logic and the pre-commitment, not the cadence mechanics. A reward with a wide gap between perceived value and marginal cost works at any frequency. Star expiry, weekly challenges and double-point days do not — they assume enough purchase occasions for urgency to land somewhere. Match the mechanic to your actual interval, or you are running a countdown the customer cannot beat. --- # Win-Back Emails That Actually Win: A Lifecycle Playbook https://loyalflow.cc/blog/win-back-emails-that-actually-win-a-lifecycle-playbook A win-back email sent on a generic timer can land months after the customer stopped being a customer. The playbook below is built on one principle: win-back begins before churn, not after . Define "lapsed" from your own data Forget generic 90-day rules. Pull the distribution of gaps between orders; your risk threshold is roughly the 80th percentile of that gap. If 80% of repeat purchases happen within 45 days, a customer at day 50 is already unusual — that is when the sequence starts, not at day 90 when the habit is gone. The four-touch sequence The nudge (at risk threshold). No discount. Best-sellers, what's new, a reason to visit. You are testing whether attention, not price, was the problem — and protecting margin on everyone this recovers. The reason-why (7–10 days later). Address the actual objection: restock reminders for consumables, social proof for considered purchases, sizing/fit help for apparel. Segment if you can; even two variants beat one generic blast. The offer (10–14 days later). Now the discount — single-use, expiring , and meaningful (pick the depth your margin floor allows, then let the holdout tell you whether it moved anyone). One offer, one deadline, no stacking. The goodbye (30+ days later). "We'll stop emailing." Honest, and it can prompt a last spike of recoveries while cleaning your list — deliverability is a retention asset too. Measure incrementality or measure nothing Hold out 10% of each lapsed segment from the entire sequence. Revenue per recipient versus holdout is the only number that justifies the discounts. Do not assume which step is doing the work: the nudge and goodbye emails can outperform expectations while the discount step does less than it appears — which is exactly why you test. Win-back is the highest-leverage flow in lifecycle marketing because the audience already trusted you once. Treat it as a system with a clock, not a coupon with a subject line. Setting the clock from your own data Pull every customer with at least two orders and list the gap in days between consecutive orders. Sort those gaps and read the 80th percentile. If 80% of repeat orders land within 38 days, 38 is your risk threshold — not 90, and not whatever the last agency deck said. Now hang the sequence off it. The nudge goes at day 38, the reason-why around day 46, the offer at day 58, the goodbye at day 90. Every date derives from one measured number, which is what makes the schedule defensible when someone asks why the discount fires when it does. Two things distort that percentile, and both matter. Customers with a single order are not in the distribution at all, so the number describes people who already repeat: it is a threshold for at-risk repeaters, and one-time buyers need a different flow entirely. And seasonal categories produce a gap distribution with two humps rather than one — if you see that, split the calculation by season instead of averaging into a threshold that fits neither. Recompute quarterly until the number stops moving. A threshold nobody has checked in a year is a generic rule with extra steps. Frequently asked questions I do not have enough order history to compute the 80th percentile. Now what? Use the distribution you have and mark the threshold as provisional. With a few hundred repeat orders you can still see where the mass of gaps sits, even while the exact percentile keeps moving. What does not work is importing a 90-day rule from another category: the gap distribution for coffee and the one for mattresses have nothing to say to each other. Should the goodbye email actually unsubscribe them? It should stop the marketing stream, because that is the promise it makes. Keep transactional and service messages running — different basis, different expectation. Suppressing rather than deleting also preserves the record you need if that customer returns through another channel and someone has to explain why they stopped hearing from you. Do consumables and considered purchases use the same sequence? Same shape, different clock and a different second touch. For consumables the risk threshold is a replenishment interval and the reason-why message is a restock reminder, which can recover the customer before any discount is needed. For considered purchases the normal gap is long enough that lapse and patience look identical, so the sequence matters less than fixing why the second purchase had no trigger in the first place. --- # The Retention Math Every Founder Should Know: LTV, Churn, and Repeat Rate https://loyalflow.cc/blog/the-retention-math-every-founder-should-know-ltv-churn-and-repeat-rate Loyalty conversations go wrong when they run on vibes — "engagement," "delight," "community." Getting retention right comes down to four numbers. None of them are complicated; all of them are easy to compute wrong. 1. Repeat purchase rate (RPR) The share of customers who buy a second time. Repeat purchase rate varies enormously by category, so the number that matters is the direction of your own, not a borrowed benchmark. It is the single most honest indicator of product-market fit for retention, because no incentive program can rescue a product nobody wants twice. 2. Churn — measured on a cohort, not a blend Blended churn hides everything. If you acquired heavily last month, your "average" churn looks great while every cohort is quietly leaking. Always read churn as: of customers acquired in month X, how many were still active in month X+n? Plot three cohorts and you will learn more than from a year of blended dashboards. 3. LTV — with margin, not revenue The first LTV inflation to check: using revenue instead of contribution margin. A $300 revenue LTV at 25% margin is a $75 customer. If acquisition costs $60, you are running a very tight boat while your dashboard celebrates. Loyalty rewards come out of that margin too — a 2% earn rate on a 25%-margin business consumes 8% of your profit pool. 4. Payback window How long until a cohort's cumulative margin covers its acquisition cost. Under 6 months and you can reinvest aggressively; over 18 and growth is financed on hope. Retention is a direct lever on this number, because every extra order lands inside an already-paid-for relationship. The uncomfortable conclusion A loyalty program is a margin reallocation: you tax every transaction to change future behavior. It pays back only if the incremental orders it creates exceed the discounts it hands to customers who would have returned anyway. Estimating that incrementality — not the point balance, not the signup count — is the entire game, and it is why every serious program needs a holdout group from day one. If you want to run these numbers against your own figures, the retention calculator does the arithmetic above, including what one percentage point of retention is actually worth to you. The four numbers on one business Take a store with 1,000 customers acquired in January, an average order value of $80, and a 25% contribution margin after payment fees, fulfilment and returns. Repeat purchase rate: 240 of them buy a second time, so RPR is 24%. That sits inside the normal band — nothing here is broken, and nothing is exciting either. Cohort churn: by month six, 180 of the original 1,000 are still buying. Read that as a cohort retained at 18% after six months, not as "82% churn", which sounds like a crisis and describes nothing you can act on. LTV: those repeat customers average 3.2 orders at $80. Revenue LTV reads $256. Contribution LTV is $64. If acquisition cost $45, the business works — barely, and only if that margin number is honest. Payback: at $20 of contribution per order, $45 of acquisition cost clears after roughly two and a quarter orders. On a six-week buying interval that lands in month four, which is inside the range where reinvesting is defensible. Now add a loyalty program earning 2% of spend. That is $1.60 per $80 order against $20 of contribution — 8% of the margin pool, charged on every repeat order including the ones that needed no incentive at all. The program has to create enough additional orders to cover that, which is the entire reason the holdout exists. Frequently asked questions How many cohorts do I need before cohort churn means anything? The constraint is cohort size, not cohort count. A cohort of forty customers moves several points of retention when two people leave, so the noise is larger than the signal you are looking for. Plot three consecutive cohorts and read the shape rather than the decimal. If your monthly volume is small enough that single-digit churn swings the line, widen the cohort to a quarter instead of reading noise as a trend. Gross margin or contribution margin in the LTV calculation? Contribution: gross margin minus the costs that scale with an order — payment fees, fulfilment, shipping subsidy, returns, and the reward itself. Gross margin flatters LTV precisely because it hides the costs that grow with every extra order a loyalty program buys you. If contribution margin is not available yet, run the number both ways and treat the gap between them as the size of your uncertainty rather than picking the friendlier one. How large does the holdout need to be? Large enough to detect the effect you would act on, which depends on your base rate and that effect — not on a fixed percentage. Work backwards: if repeat rate is 25% and you would only keep the program for a three-point lift, the holdout has to be big enough for three points to be distinguishable from ordinary variation. If that sample exceeds your monthly volume, run the holdout for longer rather than shrinking it, and accept that you are measuring a quarter rather than a month.