{"edition":2,"updated":"2026-07-01","source":"https://churnkey.co/growth/library","tactics":[{"slug":"activation-rescue","name":"Activation Rescue","summary":"Detects new subscribers whose first-month activity falls below established activation thresholds and walks them along the activation chain that predicts retention for that product.","stage":"activate","triggerType":"threshold","surfaces":["in-app","email"],"grade":"validated","availability":null,"evidence":{"headlineStat":"+13.8 percentage points of retention for subscribers who complete three or more activation steps","sampleScale":"survival analysis and activation chains learned from usage data","confidencePhrase":"a strong, repeatable pattern validated at scale"},"agentSpec":{"trigger":"A new subscriber’s month-0 or month-1 activity falls below the product’s learned activation threshold.","surface":"In-app walkthrough at the subscriber’s next active session, stepping through the mined activation chain. A single email only after in-product attempts have been exhausted.","guardrails":["Rate limit: one walkthrough step per session by default, and no more than three walkthrough prompts in a subscriber’s first week.","Eligibility: subscribers in their first 60 days, with usage-data coverage deep enough to trust the learned threshold. Exit the moment the activation threshold is crossed.","Collision avoidance: suppress while any offer, save flow, or Payment Recovery sequence is active for the subscriber. Activation guidance never competes with another conversation.","Escalation discipline: email enters only after in-product attempts complete, and human outreach only after email. Never lead with channels outside the product."],"evidence":"Month one accounts for roughly half of all churn, and 49 percent of new subscribers never reach the core product. Subscribers completing three or more activation-chain steps retain at +13.8 percentage points. First-month in-product onboarding raises retention 17 percent. The analytics-plus-settings combination in month one carries 82 percent retention against a 55 percent baseline. Validated across usage data from roughly 90 subscription companies.","implementationSteps":["Mine historical usage data for the activation chain: the ordered steps that separate retained subscribers from churned ones for this product.","Learn the activation threshold from the month-0 and month-1 activity of past retained subscribers. Recompute it as usage data deepens.","Score every new subscriber against the threshold daily through their first 60 days.","When a subscriber tracks below the threshold, start an in-app walkthrough at their next session, targeting their next incomplete chain step.","Escalate to a single email only after in-product attempts have run their course. Cancel all escalation the moment the threshold is crossed.","Track chain completion, time-to-activation, and 90-day retention of guided subscribers. Tune the threshold and the chain against those outcomes."]},"featurePage":null,"calculators":["/tools/retention-rate-calculator"],"editionAdded":1},{"slug":"confusion-detection","name":"Confusion Detection","summary":"This tactic shows contextual help after three or more help-page visits in a declining session, catching frustrated subscribers while activation is still recoverable.","stage":"activate","triggerType":"threshold","surfaces":["in-app"],"grade":"validated","availability":null,"evidence":{"headlineStat":"22.6 percentage points separate the two help-seeking paths","sampleScale":"first-week session data across hundreds of organizations and 14.3M end users","confidencePhrase":"a validated behavioral split, large and repeatable in usage data, though not a controlled experiment"},"agentSpec":{"trigger":"A subscriber logs three or more help-page visits within a single session whose engagement is declining.","surface":"In-app help pop-up rendered in the live session, with guidance matched to the help pages the subscriber visited.","guardrails":["Direction gate: fire only when the session is declining. Help-page visits inside a rising session read as learning and are left alone.","Rate limit: at most one help pop-up per session, and a seven-day cooldown after an explicit dismissal.","Collision avoidance: suppress while any offer, save flow, or Payment Recovery in-app cue is active for the subscriber.","Relevance: pop-up content is built from the help pages visited in the session, never a generic prompt."],"evidence":"Help-seeking points in two directions: the same behavior precedes deep activation for one group and churn for the other, with 22.6 percentage points separating the two paths. Usability issues account for 14 percent of churn and show up in first-week URL patterns. Validated across session data from hundreds of organizations and 14.3M end users, a repeatable behavioral split rather than a controlled experiment.","implementationSteps":["Instrument help-page visits and per-session engagement direction from product usage data.","Define the firing condition: three or more help-page visits within a session whose engagement is declining.","Build the pop-up content map: for each cluster of help pages, the guidance that resolves the underlying task.","When the condition is met, render the help pop-up in the live session with the matched guidance.","On dismissal, start the seven-day cooldown. On engagement with the pop-up, record which guidance resolved the session.","Track session recovery rate, first-week activation of assisted subscribers, and pop-up dismissal rate. Tune the firing threshold against those outcomes."]},"featurePage":null,"calculators":["/tools/churn-rate-calculator"],"editionAdded":1},{"slug":"free-to-paid-conversion","name":"Free-to-Paid Conversion","summary":"Guides free-tier subscribers toward the behaviors that precede conversion and pitches the right paid plan at the moment intent shows.","stage":"activate","triggerType":"threshold","surfaces":["in-app","email"],"grade":"validated","availability":null,"evidence":{"headlineStat":"pre-conversion billing-page visits run 477 percent above baseline","sampleScale":"billing-page and product usage data across hundreds of organizations and 14.3M end users","confidencePhrase":"a validated predictive signal: shown a future converter and a non-converter, the model picks the converter about 77 times in 100"},"agentSpec":{"trigger":"A free-tier subscriber’s conversion-readiness score, built from billing-page visits, feature usage, and session patterns, crosses the configured threshold.","surface":"In-app plan pitch at the subscriber’s next active session, plus one follow-up email with identical terms if the pitch is not seen within seven days.","guardrails":["Rate limit: at most one plan pitch per subscriber per 30 days. Never re-pitch within 14 days of an explicit decline.","Eligibility: active free-tier subscribers with enough usage data to score. Exclude subscribers in their first three days.","Plan matching: the pitched plan is derived from observed usage, never the most expensive tier by default.","Restraint: below-threshold guidance is limited to in-product nudges toward conversion-predictive behaviors and never blocks free-tier functionality."],"evidence":"Pre-conversion billing-page visits run 477 percent above baseline among free-tier subscribers, and the combined readiness model picks the future converter over a non-converter about 77 times in 100. Validated across billing-page and product usage data from hundreds of organizations and 14.3M end users. Predictive accuracy, not a causal claim about any single pitch.","implementationSteps":["Instrument billing-page visits, feature usage, and session patterns for the free tier in product usage data.","Train a conversion-readiness score on historical free-to-paid outcomes, recomputed per subscriber daily.","Below the threshold, surface light in-product guidance toward the behaviors that historically precede conversion.","When the score crosses the threshold, render the plan pitch in-app at the next session, with the plan matched to observed usage.","If the pitch is not seen within seven days, send one follow-up email with the same terms, then stop. On acceptance, create the subscription in the billing provider.","Track pitch conversion, time-from-threshold-to-conversion, and decline rate. Tune the threshold against those outcomes."]},"featurePage":null,"calculators":["/tools/growth-rate-calculator"],"editionAdded":1},{"slug":"trial-conversion","name":"Trial Conversion","summary":"Targets conversion offers at engaged trialists instead of blanketing the whole trial pool—the engaged convert at 28 percent against nine percent for the unengaged.","stage":"activate","triggerType":"threshold","surfaces":["in-app","email"],"grade":"strong","availability":"live","evidence":{"headlineStat":"28 percent conversion for engaged trialists against 9 percent for the unengaged","sampleScale":"383,000 trial subscriptions across the platform dataset","confidencePhrase":"a strong, consistent gap in observed behavior—evidence for targeting, not a causal estimate of the offer itself"},"agentSpec":{"trigger":"An active trialist’s engagement score crosses the high-intent threshold during the trial window.","surface":"In-app offer at a moment of natural product use, then one email with identical terms near trial end if the in-app offer is not seen.","guardrails":["Rate limit: at most one conversion offer per trial. Never re-offer after an explicit decline within the same trial.","Targeting: offers go to trialists above the engagement threshold. Unengaged trialists are excluded rather than discounted.","Collision avoidance: suppress when the trialist has started checkout on their own, and never stack the offer with another active promotion.","Offer integrity: terms are resolved per trialist within operator-set bounds. The default offer is the lightest one that converts, not the deepest discount available."],"evidence":"Engaged trialists convert at 28 percent against nine percent for the unengaged, measured across 383,000 trial subscriptions. Trial length is not the lever: across 24 million trials, conversion holds flat at 10 to 13 percent regardless of duration. A strong observed gap that justifies targeting, not a causal estimate of any single offer.","implementationSteps":["Score trial engagement daily for every active trialist from product usage data: session frequency, feature usage, and depth.","Set the high-intent threshold from past trials: the engagement level at which conversion odds separate from the base rate.","When a trialist crosses the threshold, resolve the offer terms within operator-set bounds and render it in-app at the next moment of natural use.","If the in-app offer is not seen, send one email with the same terms near trial end, then stop.","On acceptance, convert the trial in the billing provider. On decline or trial expiry, exit without further offers.","Track offer conversion against the untargeted baseline, plus 90-day retention of converted trialists, and tune the threshold against those outcomes."]},"featurePage":"/feature/adaptive-offers","calculators":["/tools/growth-rate-calculator"],"editionAdded":1},{"slug":"trial-extension-save","name":"Trial Extension Save","summary":"When an engaged trialist cancels or expires unconverted, extend the runway instead of losing them—trial length alone holds conversion flat across 24 million trials, which is exactly why a targeted extension beats a blanket longer trial.","stage":"activate","triggerType":"event","surfaces":["cancel-modal","in-app"],"grade":"moderate","availability":"live","evidence":{"headlineStat":"Trial length alone holds conversion flat at 10 to 13 percent across 24M trials—extension only pays when targeted","sampleScale":"24 million trials in the platform dataset","confidencePhrase":"the targeting evidence is strong—trial length alone does not move conversion—while the extension’s isolated effect is still in validation, which is why the grade is moderate"},"agentSpec":{"trigger":"A trialist above the engagement floor initiates cancellation, or their trial approaches expiry unconverted.","surface":"Extension offer in the cancel modal, or an in-app prompt ahead of trial expiry.","guardrails":["Targeting: extend only trialists above an engagement floor—extending the unengaged just delays the same outcome.","Cap: one extension per trial, so the trial remains an evaluation with a deadline.","Clarity: the offer states the new trial end date plainly at the moment of acceptance.","Consent: never auto-extend silently—the trialist explicitly accepts the extension."],"evidence":"Trial length alone holds conversion flat at 10 to 13 percent across 24 million trials in the platform dataset, whether the trial runs 3 days or 30—so a blanket longer trial buys nothing. That makes the targeted extension the surgical move for engaged-but-unconverted trialists. The targeting evidence is strong; the extension’s isolated lift is still in validation, hence the moderate grade.","implementationSteps":["Define an engagement floor from the org’s activation signals—sessions, core actions, or seats invited—that separates real evaluations from abandoned signups.","Trigger the extension offer when a trialist above the floor cancels, or when their trial nears expiry unconverted.","Present one extension length with the new end date stated explicitly, and require the trialist to accept it.","Enforce one extension per trial at the billing layer so the cap cannot be renegotiated per cancel attempt.","Measure conversion of extended trialists against a matched engaged-but-unconverted holdout to isolate the extension’s lift."]},"featurePage":"/feature/cancel-flows","calculators":null,"editionAdded":1},{"slug":"staged-annual-offers","name":"Staged Annual Offers","summary":"Moves subscribers up the commitment ladder with staged offers, an annual term paired with a forever-percent discount, at the month-3 and month-12 milestones.","stage":"grow","triggerType":"scheduled","surfaces":["in-app","email"],"grade":"causal","availability":"live","evidence":{"headlineStat":"24 percentage points of churn removed when the annual term and forever-percent discount combine","sampleScale":"the comparison dataset behind both components: 50,000 subscriber pairs for the annual term, more than 100,000 for the forever-percent discount","confidencePhrase":"almost certainly causal, with both components tested against statistical twins and their combination the strongest interaction in the dataset"},"agentSpec":{"trigger":"An active monthly subscriber reaches the month-3 tenure milestone in good standing. A second window opens at month 12 for subscribers who declined or were ineligible at month 3.","surface":"In-app offer at the subscriber’s next active session after the milestone. One follow-up email with identical terms if the in-app offer is not seen within seven days.","guardrails":["Frequency: two pathway offers per subscriber lifetime, month 3 and month 12. A declined offer goes quiet until the next milestone, never sooner.","Eligibility: active monthly subscription in good standing, no open payment failure, no pending cancellation.","Offer integrity: the discount is forever-percent on the annual term only. Never stack with an existing discount.","Collision avoidance: suppress while any Cancel Flow, Payment Recovery sequence, or other conversion offer is active for the subscriber. If a readiness-triggered annual offer fired recently, the milestone offer waits out the cooldown."],"evidence":"Annual billing adds 189 days of subscriber lifetime and $146 per subscriber across 50,000 subscriber pairs. Forever-percent discounts remove 11.2 percentage points of churn across more than 100,000 pairs. Combined, the annual-plus-forever-percent structure removes 24 percentage points of churn, the strongest single-effect interaction in the research dataset. Graded causal because both components were tested against statistical twins, subscribers identical on every measure except the commitment structure.","implementationSteps":["Track tenure for every monthly subscriber and flag the month-3 and month-12 milestones on each subscriber’s own clock.","Define the staged offer: a 12-month term paired with a forever-percent discount, sized to your vertical and margins, with month-12 terms set independently of month 3.","At month 3, when eligibility checks pass, render the offer in-app at the next active session. Send one follow-up email with identical terms if it goes unseen for seven days.","On acceptance, switch the billing term and apply the forever-percent discount in the billing provider as a single transaction.","On decline, go quiet until month 12, then make the second ask as a fresh offer: new framing, tenure acknowledged, no reference to the first.","Track milestone conversion and the 12-month retention of converted subscribers against comparable monthly subscribers. Tune offer depth per milestone from those outcomes."]},"featurePage":"/feature/adaptive-offers","calculators":["/tools/lifetime-value-calculator"],"editionAdded":1},{"slug":"rising-usage-upsell","name":"Rising-Usage Upsell","summary":"Offers advanced features to subscribers riding a two-month upward usage trend, in the engagement pattern where these nudges land best.","stage":"grow","triggerType":"threshold","surfaces":["in-app","email"],"grade":"strong","availability":null,"evidence":{"headlineStat":"1.9× gain when advanced features meet a rising usage trend","sampleScale":"engagement-pattern analysis across classified organizations, with the target pattern covering roughly 30 percent of them","confidencePhrase":"a strong effect specific to one engagement pattern, measured where the targeting applies, not a universal effect"},"agentSpec":{"trigger":"A subscriber in an eligible engagement pattern sustains a rising usage trend for two consecutive months.","surface":"In-app offer of the adjacent advanced capability at the next active session. Email only for supporting material after in-app engagement.","guardrails":["Pattern gate: run only in organizations whose engagement pattern matches the one the gain was measured on. Classify before activating.","Trend integrity: the two-month climb is measured on usage trend, not absolute volume. A flattening trend pauses the tactic for that subscriber.","Rate limit: at most one advanced-feature offer per subscriber per quarter.","Anchoring: every offer names the subscriber’s observed usage growth as its hook, pointing at the capability adjacent to it. Never a generic feature announcement."],"evidence":"Advanced features offered on a two-month-plus upward usage trend convert at 1.9 times the rate of untimed promotion, measured within the ramp-and-plateau engagement pattern, roughly 30 percent of classified organizations. A strong pattern-specific effect: the gain belongs to the timing and the targeting together.","implementationSteps":["Classify the organization’s engagement pattern from usage data and activate the tactic only where it matches the measured shape.","Compute per-subscriber monthly usage trends and flag subscribers with two consecutive months of growth.","Map advanced capabilities to the usage areas they extend, so each flagged subscriber resolves to the capability adjacent to their growth.","Offer that capability in-app at the subscriber’s next active session, anchored to their observed usage growth.","Pause the tactic for any subscriber whose trend flattens. Resume eligibility when a new two-month climb completes.","Track advanced-feature adoption from these offers against untimed baselines, plus subsequent usage depth. Tune the trend window against those outcomes."]},"featurePage":null,"calculators":["/tools/stickiness-ratio-calculator"],"editionAdded":1},{"slug":"upgrade-readiness-score","name":"Upgrade Readiness Score","summary":"Maintains a continuous expansion-intent score for every subscriber, feeding downstream growth tactics and a watchlist of who to pitch, who to talk to, and who to leave alone.","stage":"grow","triggerType":"scheduled","surfaces":["webhook"],"grade":"validated","availability":"live","evidence":{"headlineStat":"62 percent of expansion events caught, with a 1.7× conversion gain from the combined score","sampleScale":"expansion-signal analysis across product usage data and a 110M+-subscription dataset","confidencePhrase":"validated predictive performance: a measured catch rate and gain, not a causal claim about any single signal"},"agentSpec":{"trigger":"Scheduled recomputation: every subscriber’s expansion-intent score is rebuilt daily from integrations adoption, billing-page visits, settings activity, and feature breadth.","surface":"Webhook feed of score changes and band crossings, consumed by downstream growth tactics, the CRM, and the operator watchlist.","guardrails":["Coverage honesty: subscribers without enough usage data are emitted as unscored, never given a default score that reads as signal.","Explainability: every score change ships with its contributing signals, so consumers can see why a subscriber moved.","Separation of concerns: this tactic scores and feeds. It never contacts a subscriber directly, since outreach belongs to the tactics and operators consuming the feed.","Band discipline: watchlist bands are operator-set, and the leave-alone bucket is respected by downstream consumers rather than treated as a backlog to work through."],"evidence":"The combined readiness score catches 62 percent of expansion events and converts at 1.7 times the rate of untargeted outreach. The component signals hold up on their own: pre-upgrade billing-page visits run 477 percent above baseline, and integrations adoption carries a 376 percent gain among upgraders, the strongest single expansion signal in the dataset. Measured across product usage data and a 110M+-subscription dataset.","implementationSteps":["Instrument the four component signals per subscriber: integrations adoption, billing-page visits, settings activity, and feature breadth.","Build the combined expansion-intent score from historical expansion outcomes. Recompute it for every subscriber daily.","Emit score changes and band crossings over a webhook feed, with contributing signals attached to every event.","Maintain the operator watchlist from the score bands (pitch, talk to, leave alone), with movement flags for fast risers.","Mark subscribers below the usage-data coverage floor as unscored and exclude them from bands until coverage improves.","Track catch rate against realized expansion events and the conversion gain of score-targeted outreach versus untargeted. Retune the score weights against those outcomes."]},"featurePage":"/feature/customer-health","calculators":["/tools/dollar-retention-rate-calculator"],"editionAdded":1},{"slug":"upgrade-moment-offers","name":"Upgrade-Moment Offers","summary":"Watches the behavioral signals that precede upgrades and makes the offer at the subscriber’s next natural moment of use, not on a calendar.","stage":"grow","triggerType":"event","surfaces":["in-app"],"grade":"validated","availability":null,"evidence":{"headlineStat":"1.7× upgrade conversion when readiness signals are combined into one score","sampleScale":"usage data from roughly 90 subscription companies","confidencePhrase":"a strong, repeatable pattern validated at scale, built on predictive signals rather than a controlled experiment"},"agentSpec":{"trigger":"A per-subscriber expansion-readiness score, combining integration adoption, billing-page visits, settings-page activity, and feature breadth, crosses the configured threshold.","surface":"In-app only, at the next natural moment of use: a pricing-page visit, a post-task completion moment, or the start of the next active session. Never a scheduled email and never mid-task.","guardrails":["Rate limit: at most one upgrade prompt per subscriber per 14 days, and no more than three per quarter.","Eligibility: active subscription in good standing, a higher tier available, no open payment failure, and no recent downgrade.","Collision avoidance: suppress while a Cancel Flow, Payment Recovery sequence, or any other offer is active for the subscriber. Defer rather than queue-jump.","Threshold discipline: calibrate the readiness threshold on historical upgrades before going live, and re-tune it per engagement pattern from observed conversion."],"evidence":"Billing-page visits run 477 percent above a subscriber’s own baseline in the window before an upgrade. Integration adopters upgrade at 376 percent the rate of non-adopters. A combined readiness score raises upgrade conversion to 1.7 times that of untargeted prompts. And 41 percent of upgrades happen in the subscriber’s first month. Validated at scale across usage data from roughly 90 subscription companies.","implementationSteps":["Instrument the four readiness signals: integration adoption, billing-page visits, settings-page activity, and feature breadth.","Combine them into a per-subscriber expansion-readiness score and recompute it on each new event.","Calibrate the threshold on historical upgrade data so the high-readiness group converts well above baseline before any subscriber sees a prompt.","When the score crosses the threshold, queue the offer and render it at the next natural moment of use: pricing-page visit, post-completion moment, or next session start.","Start scoring from the subscriber’s first day, since a large share of upgrades lands in the first month.","Track prompt-to-upgrade conversion by signal mix and re-weight the score on a regular cadence."]},"featurePage":null,"calculators":["/tools/dollar-retention-rate-calculator"],"editionAdded":1},{"slug":"feature-discovery","name":"Feature Discovery","summary":"Points subscribers locked in a single feature category toward a second and third, the breadth move that raises retention without nagging.","stage":"grow","triggerType":"threshold","surfaces":["in-app"],"grade":"strong","availability":null,"evidence":{"headlineStat":"+6.6 percentage points of retention from one to three feature categories","sampleScale":"feature-category usage data across hundreds of organizations","confidencePhrase":"a strong, consistent correlation: breadth tracks retention at scale, though not causally isolated"},"agentSpec":{"trigger":"An active subscriber’s feature usage remains confined to a single category past the learning period, while overall engagement holds steady.","surface":"In-app suggestion at a moment contextually adjacent to the subscriber’s current work, framing the next category as an extension of it.","guardrails":["Rate limit: at most one discovery suggestion per session and two per month per subscriber.","Sequencing: one new category at a time. Never present a menu of everything the subscriber has not tried.","Cooldown: after a dismissal, suppress suggestions for that category for 30 days and rotate to a different candidate on the next eligible surface.","Scope: stop suggesting once the subscriber is active in three categories. The measured retention effect is the one-to-three move."],"evidence":"Moving from one feature category to three carries 6.6 percentage points of additional retention, consistent across feature-category usage data from hundreds of organizations. Churn-reason data shows 19 percent of churn cites a missing feature, often one that exists unfound, making discovery both a retention lever and a correction for value the product shipped but never showed. A strong correlation, not a causally isolated effect.","implementationSteps":["Map the product’s features into categories from usage data, grouping by distinct jobs rather than navigation structure.","Track per-subscriber category breadth and flag active subscribers confined to one category past the learning period.","Resolve the next-best category per subscriber from the adoption sequences of retained subscribers with similar usage profiles.","Render the suggestion in-app at a moment adjacent to the subscriber’s current work, framed as an extension of it.","On dismissal, start the per-category cooldown and rotate candidates. On adoption, advance toward the three-category target and then stop.","Track second- and third-category adoption rates and the retention of broadened subscribers against single-category peers. Tune suggestion placement against those outcomes."]},"featurePage":null,"calculators":["/tools/retention-rate-calculator"],"editionAdded":1},{"slug":"post-upgrade-onboarding","name":"Post-Upgrade Onboarding","summary":"Opens a 48-hour premium onboarding the moment an upgrade lands, anchoring the value of the new tier while the decision is still fresh so the upgrade sticks.","stage":"grow","triggerType":"event","surfaces":["in-app","email"],"grade":"strong","availability":null,"evidence":{"headlineStat":"47 percent of upgraders churn back within 90 days when the new tier is never anchored","sampleScale":"plan-change and churn-back analysis across a 110M+-subscription dataset","confidencePhrase":"a strong observational pattern: large and consistent at scale, not yet a controlled test of the onboarding itself"},"agentSpec":{"trigger":"An upgrade event lands from the billing provider: a subscriber moves to a higher tier.","surface":"In-app guided onboarding steps at each session within the 48-hour window, with email carrying the thread if the subscriber does not return in time.","guardrails":["Window: the onboarding runs for 48 hours from the upgrade event, then ends regardless of completion.","Rate limit: at most two onboarding steps per session and one bridging email in the window.","Relevance: onboarding covers only the features unlocked by this specific tier change, derived from the plan comparison, never a generic premium tour.","Early exit: end the sequence immediately once the subscriber adopts the premium features on their own. Suppress if a Cancel Flow or Payment Recovery sequence becomes active."],"evidence":"Without post-upgrade anchoring, 47 percent of upgraders churn back within 90 days, having paid for a tier they never met, a strong and consistent pattern across plan-change analysis on a 110M+-subscription dataset. The tactic targets the mechanism directly: upgraders who adopt their premium features have a felt difference between tiers when the higher price comes up for review.","implementationSteps":["Listen for upgrade events from the billing provider and compute the plan comparison: the features this tier change unlocked.","Build the 48-hour onboarding sequence from that comparison, ordered by the capability most likely to have motivated the upgrade.","Render the first step in-app at the subscriber’s next session inside the window. Cap steps per session.","Send one bridging email if the subscriber has not returned within 24 hours, then continue in-app on return.","End the sequence on premium-feature adoption, on the 48-hour boundary, or immediately if the subscriber explores the features unaided.","Track premium-feature adoption within seven days and 90-day churn-back of anchored upgraders against the unanchored baseline. Tune sequence content against those outcomes."]},"featurePage":null,"calculators":["/tools/dollar-retention-rate-calculator"],"editionAdded":1},{"slug":"upgrade-prompt-timing","name":"Upgrade Prompt Timing","summary":"Gates upgrade prompts by lifecycle stage and behavior, because 41 percent of upgrades happen in month zero and the timing rules invert outside that window.","stage":"grow","triggerType":"threshold","surfaces":["in-app"],"grade":"validated","availability":null,"evidence":{"headlineStat":"41 percent of upgrades happen in month 0","sampleScale":"upgrade-timing analysis across a 110M+-subscription dataset","confidencePhrase":"a validated timing pattern: repeatable at scale, though observational rather than experimental"},"agentSpec":{"trigger":"A subscriber’s behavior crosses the upgrade-readiness rules for their current lifecycle stage: the month-zero rule set inside the first month, the inverted post-window rule set afterward.","surface":"In-app upgrade prompt at the subscriber’s next moment of natural product use.","guardrails":["Stage gating: never apply month-zero timing rules outside the month-zero window. The rule sets are separate by design.","Rate limit: at most one upgrade prompt per subscriber per 60 days. Never re-prompt within 30 days of a dismissal.","Collision avoidance: suppress while any Cancel Flow, Payment Recovery sequence, or other offer is active for the subscriber.","Prompt scarcity: when readiness is ambiguous, hold the prompt. A missed marginal upgrade costs less than a subscriber trained to ignore upgrade prompts."],"evidence":"Month zero carries 41 percent of all upgrades, and the behavioral rules that predict an upgrade invert outside that window, validated across upgrade-timing analysis using a dataset consisting of over 110M subscriptions. Among plan changers broadly, downgrades outnumber upgrades nearly two to one, which is the case for gated precision over calendar-driven prompting.","implementationSteps":["Segment each subscriber by lifecycle stage, with month zero as its own window.","Derive two rule sets from historical upgrade outcomes: the behaviors that precede month-zero upgrades, and the distinct behaviors that precede post-window upgrades.","Evaluate every active subscriber against the rule set for their stage. Recompute on each new usage event.","When the rules pass, render the upgrade prompt in-app at the next moment of natural use, with the target plan resolved from observed usage.","On acceptance, apply the plan change in the billing provider. On dismissal, start the 30-day cooldown and log the miss against the rule set.","Track prompt conversion by lifecycle stage and dismissal rate. Retune each rule set against its own window’s outcomes, never against the pooled average."]},"featurePage":null,"calculators":["/tools/dollar-retention-rate-calculator"],"editionAdded":1},{"slug":"bill-the-right-person","name":"Bill the Right Person","summary":"In B2B subscriptions the person who sees the dunning email is often not the person who owns the card—declare a billing contact and route recovery there, instead of letting payment-failure messages die in an end user’s inbox.","stage":"save","triggerType":"event","surfaces":["email"],"grade":"moderate","availability":"live","evidence":{"effectDirection":"Routing dunning to the billing owner outperforms end-user delivery in B2B recovery","sampleScale":"B2B recovery campaign outcomes across the platform","confidencePhrase":"directionally consistent across B2B recovery campaigns, though not yet isolated from campaign timing effects—hence the moderate grade"},"agentSpec":{"trigger":"A subscription payment fails for an account with a declared billing contact.","surface":"Recovery email sequence delivered to the declared billing contact, with a payment-update link.","guardrails":["Declaration: the billing contact is set explicitly by the org via the API—never inferred from email domains or titles.","Transparency: the end user receives one courtesy notice that billing was contacted, so suspension never arrives unannounced.","Scope: billing-contact data is used for recovery messaging only, never for marketing or other outreach.","Fallback: when no billing contact is declared, recovery routes to the subscriber of record so no failure goes unmailed."],"evidence":"Routing dunning to the billing owner outperforms end-user delivery in B2B recovery, measured on recovery campaign outcomes across the platform. The effect concentrates in B2B orgs with seat-based plans, where payer and user are rarely the same person. Directionally consistent, though not yet isolated from campaign timing effects.","implementationSteps":["Add a billing-contact field to the subscription record, settable only through an explicit API call from the org.","Route the dunning sequence and payment-update link to the billing contact whenever one is declared.","Send the end user a single courtesy notice that billing was contacted about the failed payment.","Fall back to the subscriber of record for any account without a declared billing contact.","Compare recovery rates for billing-contact-routed accounts against subscriber-of-record accounts, holding campaign timing constant."]},"featurePage":"/feature/payment-recovery","calculators":null,"editionAdded":1},{"slug":"dunning-sms","name":"Dunning SMS","summary":"Add SMS to the dunning sequence—a failed payment is time-boxed, and a text reaches the subscriber inside the window in a way email increasingly does not, with the gap widest at consumer membership orgs.","stage":"save","triggerType":"scheduled","surfaces":["sms","email"],"grade":"strong","availability":"live","evidence":{"effectDirection":"SMS-plus-email recovery outperforms email-only, widest at consumer membership orgs","sampleScale":"recovery campaign outcomes across orgs running multichannel dunning","confidencePhrase":"consistent multichannel lift across orgs—the channel-isolated effect varies by audience, with consumer membership subscribers showing the strongest response"},"agentSpec":{"trigger":"A scheduled dunning step fires for a subscriber with an open failed-payment episode and valid SMS consent on file.","surface":"SMS messages interleaved with the email steps of the dunning sequence, each carrying the no-login payment link.","guardrails":["Consent: SMS only to subscribers who have opted in to receive messages—verify the consent requirements that apply in your jurisdiction before enabling the channel.","Volume: cap message count per failure episode (at most two SMS), so the channel never becomes the reason a subscriber leaves.","Actionability: every SMS carries the no-login payment link and an opt-out—no message that informs without offering the fix.","Timing: respect quiet hours in the subscriber’s timezone; a 3am dunning text recovers nothing and burns the channel."],"evidence":"Recovery campaigns that pair SMS with email outperform email-only sequences, with the gap widest at consumer membership orgs. The multichannel lift is consistent in direction across orgs running multichannel dunning; the channel-isolated effect varies by audience.","implementationSteps":["Capture SMS consent at signup or checkout and store it as a hard precondition on the channel.","Add one to two SMS steps to the dunning schedule, placed where email engagement historically drops off.","Compose each message around the no-login payment link, with the failure stated plainly and an opt-out included.","Gate sends on quiet hours in the subscriber’s timezone and on the per-episode message cap.","Measure sequence-level recovery rate against the email-only baseline, segmented by audience type, and keep SMS only where it earns its lift."]},"featurePage":"/feature/payment-recovery/dunning-campaigns","calculators":null,"editionAdded":1},{"slug":"first-screen-save-offer","name":"First-Screen Save Offer","summary":"Put the best save offer on the first screen of the Cancel Flow, not after the exit survey—every screen before the offer sheds the very subscribers the offer could save.","stage":"save","triggerType":"event","surfaces":["cancel-modal"],"grade":"strong","availability":"live","evidence":{"effectDirection":"Offer-first flow order outperforms survey-first in cancel-flow tests","sampleScale":"cancel-flow A/B outcomes across orgs running offer-order tests","confidencePhrase":"the direction is strong and consistent across tested orgs—the magnitude is org-dependent"},"agentSpec":{"trigger":"A subscriber clicks cancel and the Cancel Flow opens.","surface":"The first screen of the cancel modal, ahead of the exit survey.","guardrails":["Survey placement: the exit survey still runs after the offer decision—never as a gate before the offer or before cancellation.","Offer selection: the chosen offer respects the org’s measured discount-effectiveness profile; discounts only where they demonstrably help that org.","One offer: never present more than one offer screen before accepting the cancellation.","Decline path: declining the offer leads to a working cancellation in at most two clicks, in line with click-to-cancel compliance."],"evidence":"Offer position and flow order materially move save rates in cancel-flow A/B tests across the platform, and offer-first order outperforms survey-first. The direction is strong and consistent across tested orgs; the magnitude is org-dependent and tracks how well the first-screen offer is matched per subscriber.","implementationSteps":["Move the save offer to the first screen of the Cancel Flow, ahead of the exit survey.","Select the offer per subscriber—pause, right-size, or discount—from plan, usage, and the org’s measured offer performance.","Run the exit survey after the offer decision, on both the accept and decline paths.","Build the decline path so a working cancellation is reachable in at most two clicks from the offer screen.","A/B test offer-first against the prior flow order and track save rate alongside flow-abandonment rate per screen."]},"featurePage":"/feature/adaptive-offers","calculators":null,"editionAdded":1},{"slug":"hidden-rescue-plan","name":"Hidden Rescue Plan","summary":"An unlisted, cheaper plan offered only inside the Cancel Flow—right-size the subscriber to a plan their usage justifies instead of discounting the one it no longer does.","stage":"save","triggerType":"event","surfaces":["cancel-modal"],"grade":"validated","availability":"live","evidence":{"effectDirection":"Plan right-sizing outperforms price-cutting at the save moment","sampleScale":"cancel-flow save outcomes across hundreds of orgs","confidencePhrase":"the right-sizing advantage replicates across orgs running both offer types in live Cancel Flows"},"agentSpec":{"trigger":"A subscriber in the Cancel Flow indicates a price-driven cancellation reason.","surface":"An offer screen inside the cancel modal, presented as an alternative to completing the cancellation.","guardrails":["Real plan: the rescue plan is billed, supported, and operable indefinitely—never a dead-end SKU that strands the subscriber.","Reason-gated: offer the rescue plan only on price-driven cancel reasons, not as a blanket counter to every cancellation.","Rate limit: one rescue-plan move per subscriber per year, so right-sizing stays a correction rather than a ratchet.","Price integrity: the hidden plan never appears on the public pricing page or in acquisition channels—it exists only inside the save moment."],"evidence":"Save-discounts at the cancel moment retain only 22 percent of takers, because the discount preserves the broken value equation. Plan right-sizing keeps the relationship at a price the usage justifies, and the advantage replicates across hundreds of orgs running cancel-flow saves.","implementationSteps":["Define a real, supportable plan below the lowest public tier, priced to what a low-usage subscriber’s activity justifies.","Keep the plan unlisted: exclude it from the pricing page, checkout, and all acquisition surfaces.","Gate the offer on price-driven cancel reasons captured in the Cancel Flow.","Execute accepted moves through the billing provider as a standard plan change, effective on the current cycle.","Track retention of rescued subscribers against discount-takers and cancellers, and enforce the one-move-per-year limit per subscriber."]},"featurePage":"/feature/cancel-flows","calculators":null,"editionAdded":1},{"slug":"no-login-payment-update","name":"No-Login Payment Update","summary":"Every dunning message links straight to a hosted payment-update page that needs no login—removing the password wall from the recovery path lifts completion and shortens click-to-fix time.","stage":"save","triggerType":"event","surfaces":["email","dunning-page"],"grade":"strong","availability":"live","evidence":{"effectDirection":"Removing the login wall from payment update measurably lifts recovery completion","sampleScale":"hosted payment-page outcomes across recovery campaigns platform-wide","confidencePhrase":"consistent direction across orgs—the magnitude depends on how much friction the baseline billing page imposed"},"agentSpec":{"trigger":"A subscription payment fails and the recovery sequence begins composing its first message.","surface":"A hosted, no-login payment-update page linked from every recovery channel—email, SMS, and the dunning wall.","guardrails":["Scope: links are single-purpose and expire—they update payment for one subscription and nothing else.","Privacy: the page never exposes account data beyond the failed invoice; no login means no session, and no session means minimal surface.","Legitimacy: the page lives on the org’s own payment-update domain, so the link looks like the org and not like phishing.","Consistency: every channel carries the same link, so the fix is one tap from anywhere the subscriber meets the failure."],"evidence":"Hosted no-login payment pages convert recovery clicks at a higher rate than login-walled billing pages, and click-to-fix time shortens to same-session completion. The direction is consistent across recovery campaigns platform-wide; the magnitude depends on the baseline billing-page friction.","implementationSteps":["Generate a single-purpose, expiring payment-update link when a subscription payment fails.","Build the hosted page to show only the failed invoice and one payment form, on the org’s own payment-update domain.","Thread the same link through every recovery channel—email, SMS, and the in-app wall.","Process the new payment method on submit and confirm recovery on the page itself, with no redirect into the product.","Measure click-to-completion rate and click-to-fix time against the prior login-walled path, and expire links on recovery or window close."]},"featurePage":"/feature/payment-recovery","calculators":null,"editionAdded":1},{"slug":"pause-offer-at-cancellation","name":"Pause Offer at Cancellation","summary":"Lead the Cancel Flow with a pause, not a discount—paused subscribers resume at up to 89 percent at top orgs, while save-discounts at the cancel moment retain only 22 percent.","stage":"save","triggerType":"event","surfaces":["cancel-modal"],"grade":"validated","availability":"live","evidence":{"headlineStat":"54 percent of paused subscribers resume, against 22 percent retention on save-discounts","sampleScale":"pause and discount outcomes across hundreds of orgs running live Cancel Flows","confidencePhrase":"measured intervention outcomes across the platform—the pause-versus-discount gap replicates at org after org"},"agentSpec":{"trigger":"A subscriber initiates cancellation and enters the Cancel Flow.","surface":"First offer screen of the cancel modal, before any price-based offer.","guardrails":["Order: pause is presented before any discount. A discount may follow a declined pause, never precede it.","Clarity: pause length, resume date, and billing behavior are stated explicitly on the offer screen.","Rate limit: cap consecutive pauses per subscriber so the pause remains a bridge, not a standing price cut.","Resume: schedule resume-day messaging that returns the subscriber to product value, not just to billing."],"evidence":"Paused subscribers resume at 54 percent on average across the platform, with top orgs reaching 89 percent. Save-discounts offered at the cancel moment retain 22 percent. Measured intervention outcomes replicated across hundreds of orgs running live Cancel Flows.","implementationSteps":["Add a pause option as the first screen of the Cancel Flow, with two or three pause lengths suited to the product’s usage cycle.","Suspend billing through the billing provider and schedule the resume date at selection time.","Send one confirmation at pause start and one resume-day message focused on what changed in the product while they were away.","Track resume rate against cancellation rate for the same cohort, and tune pause lengths toward the resume-rate peak.","Rate-limit repeat pauses and route serial pausers to a right-sizing offer instead."]},"featurePage":"/feature/subscription-pauses","calculators":null,"editionAdded":1},{"slug":"pause-wall","name":"Pause Wall","summary":"While a subscription is paused, show a wall that keeps resume one click away—the paused subscriber who opens the product mid-pause is the highest-intent resume candidate there is.","stage":"save","triggerType":"event","surfaces":["in-app"],"grade":"strong","availability":"live","evidence":{"headlineStat":"Resume rates run 43 to 89 percent by org—configuration is most of the gap","sampleScale":"pause outcomes across hundreds of orgs running live pause programs","confidencePhrase":"measured outcomes across the platform—the wall’s isolated contribution is not separately randomized, so the grade is strong rather than causal"},"agentSpec":{"trigger":"A subscriber with a paused subscription signs in or opens the product before the scheduled resume date.","surface":"A full-screen in-app wall replacing the normal product interface for the duration of the pause.","guardrails":["Transparency: the wall always shows the scheduled resume date and a visible way to contact support.","Data access: never block account-data export from behind the wall—the subscriber’s data stays reachable for the whole pause.","Term integrity: pause terms shown on the wall match exactly what was promised at pause time, with no mid-pause changes.","Instant resume: clicking resume restores full product access immediately, with no re-onboarding or checkout step."],"evidence":"Pause resume rates run from 43 to 89 percent by org across hundreds of orgs running live pause programs, and configuration—wall presence, resume messaging, timing—accounts for most of the spread. These are measured outcomes; the wall’s isolated contribution has not been separately randomized.","implementationSteps":["Render a Pause Wall at sign-in for any subscriber whose subscription is in a paused state, replacing the normal product interface.","Show the pause status, the scheduled resume date, a support contact, and a single resume button on the wall.","Keep account-data export reachable from the wall without requiring a resume.","Wire the resume button to restore billing and full access in one click, effective immediately.","Track mid-pause visits and wall-initiated resumes against scheduled-date resumes, and tune wall messaging toward the resume-rate peak."]},"featurePage":"/feature/subscription-pauses","calculators":null,"editionAdded":1},{"slug":"payment-failure-wall","name":"Payment-Failure Wall","summary":"When a payment fails, block product access behind a payment-update wall with the fix one form away—recovery runs 57 to 83 percent by org when the wall backs the email campaign.","stage":"save","triggerType":"event","surfaces":["in-app","dunning-page"],"grade":"validated","availability":"live","evidence":{"headlineStat":"57 to 83 percent of failed payments recovered by org with wall-backed campaigns","sampleScale":"Payment Recovery outcomes across hundreds of orgs","confidencePhrase":"measured recovery outcomes replicated across orgs—the wall converts recovery from an email problem into an in-product moment"},"agentSpec":{"trigger":"A subscription invoice enters a failed or open state within the recovery window.","surface":"Full-screen payment-update wall in-app, alongside the dunning email sequence.","guardrails":["Grace: allow a short grace period and at least one retry before walling access, so transient bank failures never block a paying subscriber.","Clarity: the wall states what failed, what it costs, and what happens on success—no dark patterns, one form, one action.","Restoration: access restores immediately on successful payment, with no manual review step.","Coverage: keep the email sequence running in parallel for subscribers who do not open the product during the failure window."],"evidence":"Payment Recovery runs 57 to 83 percent by org across the platform; wall-backed programs cluster at the top of the range. Measured recovery outcomes replicated across hundreds of orgs.","implementationSteps":["Detect open or failed invoices from the billing provider and open the recovery window.","After the grace period, present the payment-update wall on next product open, with the failure reason and a single payment form.","Process the new payment method and restore access immediately on success.","Run the dunning email sequence in parallel for subscribers who never hit the wall.","Track recovered revenue and time-to-recovery by channel (wall vs email) and tune grace timing against false-positive walls."]},"featurePage":"/feature/payment-recovery","calculators":null,"editionAdded":1},{"slug":"reason-matched-save-offers","name":"Reason-Matched Save Offers","summary":"Ask why the subscriber is cancelling, then route them to the offer that answers that reason—price objections get right-sizing, dormancy gets a pause, and a generic one-size-fits-all offer answers nobody.","stage":"save","triggerType":"event","surfaces":["cancel-modal"],"grade":"strong","availability":"live","evidence":{"effectDirection":"Reason-routed offers outperform one-size-fits-all offers in Cancel Flows","sampleScale":"structured cancel-reason and save outcomes across hundreds of orgs","confidencePhrase":"the direction is consistent across orgs running structured Cancel Flows—the magnitude varies with each org’s mix of cancel reasons"},"agentSpec":{"trigger":"A subscriber initiates cancellation and enters the Cancel Flow.","surface":"Reason question on the first screen of the cancel modal, with the matched offer on the screen that follows.","guardrails":["Friction: the reason question is one tap from a fixed list—never a free-text field as a gate before the exit.","Coverage: every reason has a route, including a respectful fast path to cancel for subscribers who are done.","Analytics: reason data feeds reporting even when no offer is accepted, so the cancel-reason mix is measured on losses too.","Restraint: never route \"switching tools\" to a discount reflexively—an exit interview beats a price cut for that population."],"evidence":"Reason-routed offers outperform one-size-fits-all offers in Cancel Flows, measured on structured cancel-reason and save outcomes across hundreds of orgs. Offer acceptance concentrates where the offer matches the stated reason. The direction is consistent across orgs; the magnitude varies with each org’s reason mix.","implementationSteps":["Define a short, fixed cancel-reason list that maps cleanly to the offers the org can actually honor.","Place the reason question as the first screen of the Cancel Flow, answerable in one tap.","Route each reason to its matched offer: price objections to right-sizing, dormancy to a pause, feature gaps to product help or the roadmap, tool-switchers to a clean exit.","Pipe every selected reason into analytics regardless of save outcome, and review the reason mix monthly.","Track acceptance rate per reason-offer pair and replace any pairing that underperforms the flow average."]},"featurePage":"/feature/cancel-flows","calculators":null,"editionAdded":1},{"slug":"recovery-discount-in-dunning","name":"Recovery Discount in Dunning","summary":"Late in the dunning sequence, offer a discount on the next cycle as the final recovery lever—platform data across 1,029 orgs shows discounts help at 55 percent of orgs and hurt at 19 percent, so measure before standardizing the play.","stage":"save","triggerType":"scheduled","surfaces":["email"],"grade":"strong","availability":"live","evidence":{"headlineStat":"Discounts help at 55 percent of orgs, are neutral at 26 percent, and hurt at 19 percent—measure before you standardize","sampleScale":"discount outcomes across 1,029 orgs in the platform dataset","confidencePhrase":"the org-level heterogeneity is the finding—the discount only earns its place at orgs where the data says discounts help"},"agentSpec":{"trigger":"A late scheduled step in the dunning sequence fires for a subscriber still unrecovered after the standard non-discount attempts.","surface":"A discount offer delivered in the final emails of the dunning sequence, applied to the next billing cycle on payment update.","guardrails":["Position: the discount fires late in the sequence, after at least two non-discount recovery attempts—never as the opening move.","Pre-check: verify the org’s own discount-effectiveness profile first and disable the step at orgs where discounts hurt.","Scope: the discount applies to the next cycle only, never silently recurring—the saving is a bridge, not a new price.","Exclusivity: never stack with any other active promotion; one concession per recovery, clearly stated."],"evidence":"Platform discount analysis across 1,029 orgs shows discounts help at 55 percent of orgs, are neutral at 26 percent, and hurt at 19 percent. The org-level heterogeneity is the finding—the discount only earns its place at orgs where the data says discounts help.","implementationSteps":["Measure the org’s discount-effectiveness profile from its own offer history before enabling the step.","Place the discount email late in the dunning schedule, gated on at least two prior non-discount attempts.","Configure the offer as next-cycle-only with automatic expiry, and block stacking with any other active promotion.","Apply the discount automatically when the subscriber updates payment through the recovery link.","Compare recovery rate and downstream retention for the discount step against the non-discount baseline, and disable it if the org’s data turns negative."]},"featurePage":"/feature/payment-recovery/dunning-campaigns","calculators":null,"editionAdded":1},{"slug":"right-plan-recommendations","name":"Right-Plan Recommendations","summary":"Reads each subscriber’s usage against vertical benchmarks and recommends the closest-fit plan at signup, upgrade, and save.","stage":"monetize","triggerType":"event","surfaces":["in-app","cancel-modal"],"grade":"validated","availability":null,"evidence":{"headlineStat":"88 percent churn for subscribers who land in the $50–$100 price dead zone","sampleScale":"628,000 subscribers in the pricing analysis, benchmarked across the platform","confidencePhrase":"a strong, repeatable pattern validated at scale, from pricing-structure analysis rather than a controlled test"},"agentSpec":{"trigger":"A subscriber reaches a plan decision point (a pricing-page visit, an in-product upgrade moment, or a cancel-flow entry) and the closest-fit tier computed from their usage profile differs from the plan the default presentation would surface.","surface":"In-app on the pricing page (closest-fit tier rendered first, standard ladder as fallback) and at the upgrade moment. In the Cancel Flow, as the right-sized downgrade offer.","guardrails":["Usage-data floor: never recommend from a thin usage profile. Require a minimum observation window and event coverage before trusting the closest-fit computation.","Rate limit: one plan recommendation per surface per session. Never stack a plan-match recommendation on top of another active offer.","Eligibility: live signup session or active subscription with no open payment failure. In the Cancel Flow, the downgrade offer follows the flow’s own pacing.","Recommendation integrity: recommend the closest-fit tier even when it is cheaper than the current plan. The match is to observed usage, never to revenue."],"evidence":"The $50–$100 price dead zone carries 88 percent churn across 628,000 subscribers. Roughly 82 percent of company pricing sits suboptimally against similar-vertical peers. Downward plan migrations run at an 83 percent baseline churn rate when no downgrade path exists. Validated at scale across the platform’s pricing analysis.","implementationSteps":["Build a per-subscriber usage profile (per feature, per event type, per activity level) and keep it current.","Load the plan catalog (tiers, limits, prices) and the vertical benchmark for typical plan distribution among similar companies.","Compute the closest-fit tier per subscriber by crossing the usage profile with the catalog and benchmark. Recompute when usage shifts materially.","At each decision point (pricing page, upgrade moment, Cancel Flow), render the closest-fit tier first, with the standard ladder as fallback.","On acceptance, apply the plan switch in the billing provider as a single transaction. In the save moment, treat an accepted downgrade as a retained subscriber.","Track plan-match acceptance, 90-day retention of matched subscribers, and dead-zone concentration over time. Tune the fit computation against those outcomes."]},"featurePage":null,"calculators":["/tools/churn-rate-calculator"],"editionAdded":1},{"slug":"discount-guardian","name":"Discount Guardian","summary":"Standardizes every discount on the structure with causal evidence behind it, substituting a forever-percent discount at the moment any discount is created.","stage":"monetize","triggerType":"event","surfaces":["webhook","cancel-modal"],"grade":"causal","availability":null,"evidence":{"headlineStat":"11.2 percentage points of churn removed by forever-percent discounts","sampleScale":"more than 100,000 subscriber pairs","confidencePhrase":"almost certainly causal: the paired comparison isolates the discount structure itself"},"agentSpec":{"trigger":"A discount is created anywhere in the stack (billing provider, campaign tooling, or a cancel-flow offer) and has not yet been applied to a subscriber.","surface":"Server-side on the discount-creation path via the billing integration. In the Cancel Flow, the resolved discount renders as the offer presented in the cancel modal.","guardrails":["Structure policy: every discount that reaches a subscriber is forever-percent, a percentage off for the life of the subscription, sized within operator-set depth bounds.","Scope: apply at creation only. Never modify a discount already attached to a subscriber.","Stacking: one discount per subscriber. When a discount already exists, take no action.","Audit: record every substitution with the original draft and the resolved structure, so discount policy stays reviewable by the operator."],"evidence":"Forever-percent discounts cut churn by 11.2 percentage points across more than 100,000 subscriber pairs. Graded causal because each discounted subscriber was compared against a statistical twin, isolating the discount structure from who receives it. Across the platform, the gap between everyday discount practice and this structure represents roughly $308M in addressable lifetime value.","implementationSteps":["Route every discount-creation path (billing provider, campaign tooling, cancel-flow offers) through a single policy point before any discount reaches a subscriber.","Define the standard: forever-percent structure, with depth bounds set per plan and per vertical by the operator.","On each creation event, resolve the draft discount to a forever-percent structure sized to preserve the intent of the original.","Apply the resolved discount through the billing provider and record the substitution, original draft plus resolved structure, for audit.","Enforce one discount per subscriber: when a discount already exists, take no action rather than stacking.","Track the churn of discounted groups against comparable undiscounted subscribers to confirm the structural effect holds in your data."]},"featurePage":null,"calculators":["/tools/lifetime-value-calculator"],"editionAdded":1},{"slug":"monthly-to-annual-conversion","name":"Monthly-to-Annual Conversion","summary":"Converts monthly subscribers to an annual plan at the moment they are most likely to commit, pairing the new term with a forever-percent discount.","stage":"monetize","triggerType":"threshold","surfaces":["in-app","email"],"grade":"causal","availability":"pilot","evidence":{"headlineStat":"+189 days of subscriber lifetime and +$146 per subscriber","sampleScale":"50,000 matched subscriber pairs","confidencePhrase":"almost certainly causal: twin matching isolates the billing term itself"},"agentSpec":{"trigger":"A monthly subscriber’s annual-readiness score, a combined measure of tenure, engagement depth, and usage consistency, crosses the configured threshold.","surface":"In-app offer at the subscriber’s next active session, plus one follow-up email with identical terms if the in-app offer is not seen within seven days.","guardrails":["Rate limit: at most one annual offer per subscriber per 90 days. Never re-offer within 30 days of an explicit dismissal.","Eligibility: active monthly subscription, at least 60 days of tenure, no open payment failure, no pending cancellation.","Collision avoidance: suppress while any Cancel Flow, Payment Recovery sequence, or other upgrade offer is active for the same subscriber.","Offer integrity: discounts are forever-percent on the annual term only. Never stack with an existing discount or convert an already-discounted subscriber without review."],"evidence":"Annual billing adds an average of 189 days of subscriber lifetime and $146 per subscriber across 50,000 matched pairs. A forever-percent discount on the annual term cuts churn by a further 11.2 percentage points across more than 100,000 matched pairs, and the two effects stack. Graded causal: each annual subscriber is compared against a statistical twin on monthly billing, identical on everything except the billing term, which separates the effect from subscriber self-selection.","implementationSteps":["Compute an annual-readiness score for every monthly subscriber from tenure, engagement depth, and usage consistency, recomputed daily.","Define the offer: a 12-month term with a forever-percent discount sized to your vertical and margins.","When the score crosses the threshold and all eligibility checks pass, render the offer in-app at the subscriber’s next session.","If the in-app offer is not seen within seven days, send one follow-up email with the same terms, then stop.","On acceptance, apply the discount and switch the billing term in the billing provider as a single transaction. On dismissal, start the 90-day cooldown.","Track offer conversion, 90-day retention of converted subscribers, and dismissal rate. Tune the readiness threshold against those outcomes."]},"featurePage":"/feature/adaptive-offers","calculators":["/tools/lifetime-value-calculator"],"editionAdded":1},{"slug":"price-testing","name":"Price Testing","summary":"Runs structured price tests on the pricing page, reads the results against how demand across the portfolio responds to price, and rolls the winning price into the billing catalog.","stage":"monetize","triggerType":"scheduled","surfaces":["in-app","webhook"],"grade":"strong","availability":null,"evidence":{"headlineStat":"82 percent of company pricing sits suboptimally against similar-vertical peers","sampleScale":"628,000 subscribers in the pricing analysis, with price response measured across the full portfolio","confidencePhrase":"a strong portfolio-wide pattern: benchmark and price-response analysis, not a causal test"},"agentSpec":{"trigger":"A scheduled experiment cycle opens once the previous cycle has concluded (reached its traffic floor and decision bar, or timed out) and a plan shows a material gap between its current price and the peer benchmark.","surface":"In-app on the pricing page, where new visitors are assigned a price variant. Winning prices write to the billing provider via the integration, with the experiment ledger available over webhook.","guardrails":["Subscriber protection: existing subscribers never see a test price and are never repriced by an experiment. Winning prices apply to new subscribers only, with everyone else grandfathered.","Traffic floor: no variant is declared a winner before the cycle reaches its minimum traffic. Cycles without enough traffic end without a decision rather than with a guess.","Variant bounds: every variant stays within operator-set price bounds and out of the $50–$100 dead zone. One experiment per plan at a time.","Operator control: the operator can pause or kill any experiment immediately, and every cycle is recorded (variants, traffic, outcome) in an auditable ledger."],"evidence":"Roughly 82 percent of company pricing sits suboptimally against similar-vertical peers, measured across a pricing analysis of 628,000 subscribers. The portfolio-wide price response is −0.82: a 10 percent price increase costs roughly 8.2 percent of demand, so well-sized increases usually net positive revenue. Graded strong: a large, consistent portfolio pattern, with each company’s own price response confirmed by the experiment itself.","implementationSteps":["Rank plans by the gap between current price and the similar-vertical peer benchmark. Pick the largest-gap plan as the next experiment candidate.","Define the variant set within operator-set bounds, sized using the portfolio price response as the starting estimate and excluding the $50–$100 dead zone.","Split new pricing-page traffic across variants, writing each test price through the billing provider so signups are real subscriptions at the assigned price.","Run the cycle until a variant reaches the traffic floor and clears the decision bar on revenue per visitor, or the cycle times out without a winner.","Roll the winning price into the catalog for new subscribers, grandfather existing subscribers, and record the full cycle in the experiment ledger.","Track post-rollout conversion, revenue per visitor, and early-tenure churn at the new price. Feed the company’s measured price response back into the next cycle’s variant sizing."]},"featurePage":null,"calculators":["/tools/average-revenue-calculator"],"editionAdded":1},{"slug":"plan-structure-review","name":"Plan Structure Review","summary":"Benchmarks a company’s plan structure against peers with similar growth profiles and recommends structural changes (entry tier, mid-tier weighting, dead-zone exposure) as an advisory report.","stage":"monetize","triggerType":"scheduled","surfaces":["email","webhook"],"grade":"strong","availability":null,"evidence":{"headlineStat":"plan structure explains 94 percent of the variation in growth among companies with similar growth profiles","sampleScale":"plan catalogs and growth histories across roughly 3,000 subscription companies in the billing dataset","confidencePhrase":"a strong structural relationship in the benchmark data: correlational evidence, not a causal test"},"agentSpec":{"trigger":"A scheduled benchmark pass, quarterly by default, or a material change to the plan catalog: a tier added or retired, or a price move that shifts dead-zone exposure.","surface":"An advisory report delivered to the operator by email, with the same content available as a structured webhook payload for internal tooling.","guardrails":["Advisory only: never write a price, plan, or catalog change to the billing provider. Every recommendation requires operator action.","Peer-group floor: never benchmark against fewer than a minimum number of peer companies. Suppress the report rather than compare against a thin group.","Transparency: label every comparison with the peer-group size and the structural dimension it measures, so the operator can weigh it.","Scope: read the plan catalog and aggregate benchmark data only. No subscriber-level data leaves the company’s account."],"evidence":"Plan structure explains 94 percent of the variation in growth among companies with similar growth profiles, measured across a billing dataset of roughly 3,000 subscription companies. Roughly 82 percent of company pricing sits suboptimally against similar-vertical peers, and the $50–$100 dead zone carries 88 percent churn across 628,000 subscribers. Graded strong: a large, consistent structural relationship, but correlational rather than causal.","implementationSteps":["Load the company’s plan catalog (tiers, prices, billing terms) and compute its structural profile: entry-tier position, mid-tier weighting, dead-zone exposure.","Assemble a peer group of companies with similar growth profiles from the benchmark dataset, subject to the minimum group size.","Score the company’s structure against the group’s on each dimension and identify the divergences large enough to matter.","Generate the report: each divergence paired with the peer pattern and a specific, operator-actionable structural change.","Deliver by email and webhook on the scheduled cadence, and off-cycle when the catalog changes materially.","Track which recommendations the operator adopts and how growth and dead-zone exposure move afterward. Feed the outcomes back into the next pass."]},"featurePage":null,"calculators":["/tools/average-revenue-calculator"],"editionAdded":1},{"slug":"tenure-loyalty-discounts","name":"Tenure Loyalty Discounts","summary":"Applies a forever-percent discount at the tenure milestone where price sensitivity turns upward, recognizing loyalty before the subscriber starts doing renewal math.","stage":"monetize","triggerType":"threshold","surfaces":["in-app","email"],"grade":"causal","availability":"live","evidence":{"headlineStat":"11.2 percentage points of churn removed by a forever-percent discount at the loyalty milestone","sampleScale":"more than 100,000 matched subscriber pairs","confidencePhrase":"almost certainly causal: twin matching isolates the discount from the loyalty it rewards"},"agentSpec":{"trigger":"An active subscriber’s tenure crosses the learned milestone where price sensitivity turns upward for the vertical, with the subscription in good standing.","surface":"In-app at the subscriber’s next active session, framed as loyalty recognition, plus one follow-up email with identical terms if the in-app offer is not seen within seven days.","guardrails":["Frequency: one loyalty-pricing offer per subscriber lifetime. Never repeat at later milestones without operator review.","Eligibility: active subscription in good standing, no existing discount, no open payment failure, no pending cancellation.","Offer integrity: forever-percent structure only, sized within operator-set depth bounds. Never stack with another discount.","Collision avoidance: suppress while any Cancel Flow, Payment Recovery sequence, or other offer is active for the subscriber."],"evidence":"Forever-percent discounts remove 11.2 percentage points of churn across more than 100,000 matched subscriber pairs, graded causal: each discounted subscriber is compared against a statistical twin identical on everything except the discount. Price sensitivity rises from 15 percent to 35 percent over a subscription’s life, and the milestone where it turns upward is where the proactive offer does the most work.","implementationSteps":["Learn the milestone from tenure-level churn curves for your vertical: the tenure point where price-driven churn risk turns upward.","Define the offer: a forever-percent discount sized within your margins, framed as recognition of the subscriber’s tenure.","Track tenure for every active subscriber and flag each one as they approach the milestone.","When tenure crosses the milestone and all eligibility checks pass, render the offer in-app at the next active session. Send one email with identical terms if it goes unseen for seven days.","On acceptance, apply the forever-percent discount in the billing provider. Record the milestone offer so it never repeats.","Track churn of milestone-offered subscribers against matched groups of non-offered subscribers, and tune the milestone as your tenure curves evolve."]},"featurePage":"/feature/adaptive-offers","calculators":["/tools/churn-rate-calculator"],"editionAdded":1},{"slug":"revenue-concentration-alert","name":"Revenue Concentration Alert","summary":"Flags heavy concentration when a single plan carries more than 70 percent of revenue and recommends plan-mix moves—diversified portfolios grow at more than twice the rate of concentrated ones.","stage":"monetize","triggerType":"threshold","surfaces":["email","webhook"],"grade":"strong","availability":null,"evidence":{"headlineStat":"18.3 percent growth for diversified revenue portfolios versus 8.8 percent for concentrated ones","sampleScale":"plan-level revenue mix across roughly 3,000 subscription companies in the billing dataset","confidencePhrase":"a strong pattern across portfolios—diversification correlates with much faster growth, though this is correlation, not a matched-pair causal test"},"agentSpec":{"trigger":"A single plan’s share of total revenue rises through 70 percent on a rolling basis, sustained rather than a one-month billing blip.","surface":"A diversification report delivered to the operator by email, with the same content available as a structured webhook payload for internal tooling.","guardrails":["Advisory only: never migrate a subscriber, change a plan, or touch the catalog. Every move requires operator action.","Revenue floor: do not flag concentration until the revenue base is large enough for mix percentages to be meaningful.","Clearance gap: clear the flag below the line it fired on and follow up only on meaningful mix changes, so a portfolio at the boundary is not warned monthly.","Grounded recommendations: every suggested plan-mix move names the observed usage fit or structural gap behind it. No diversification for its own sake."],"evidence":"Companies with diversified revenue portfolios grow at 18.3 percent versus 8.8 percent for concentrated ones, measured across plan-level revenue mix in a billing dataset of roughly 3,000 subscription companies, a gap that compounds to roughly 2.3 times versus 1.5 times revenue over five years. Graded strong: a large, consistent pattern across portfolios, not a matched-pair causal test.","implementationSteps":["Compute the plan-level revenue mix from billing data on a rolling basis, and track each plan’s share of total revenue over time.","When a single plan’s share rises through 70 percent and holds, assemble the diversification report rather than firing on a one-month blip.","Benchmark the company’s mix against the typical plan distribution of similar companies in the dataset.","Identify dominant-plan subscriber segments whose usage profile matches a different tier, and catalog gaps (entry tier, mid-tier weighting) that funnel revenue onto one plan.","Deliver the report by email and webhook, each recommendation paired with its usage evidence, and clear the flag below the line it fired on before any follow-up.","Track the revenue mix and growth rate after the operator acts, and surface the trend in subsequent reports so diversification progress is visible."]},"featurePage":null,"calculators":["/tools/growth-rate-calculator"],"editionAdded":1},{"slug":"seasonal-demand-pricing","name":"Seasonal Demand Pricing","summary":"Adjusts offers and promotional pricing to the vertical’s seasonal demand curve—cushioning predictable off-peak troughs and holding price through peaks.","stage":"monetize","triggerType":"scheduled","surfaces":["email","webhook"],"grade":"strong","availability":null,"evidence":{"headlineStat":"77 percent seasonal demand swing across the year in the education vertical, recurring at 0.91 year-over-year correlation","sampleScale":"three years of subscription history across the 22-vertical benchmark dataset","confidencePhrase":"a strong, recurring pattern—the seasonal curve repeats nearly unchanged each year, though offer timing itself has not been causally tested"},"agentSpec":{"trigger":"The seasonal calendar reaches a scheduled window boundary: a predicted demand trough approaches and the off-peak window opens, or a predicted peak approaches and the window closes.","surface":"Off-peak offers announced by email to prospects and dormant accounts, applied through the billing provider via the integration. The seasonal schedule is available over webhook for operator tooling.","guardrails":["Vertical eligibility: only operate where the measured seasonal swing is large and the year-over-year correlation is high. Flat or noisy demand curves get no seasonal windows.","Window integrity: every window is declared in advance, time-boxed, and visible to the operator before it opens. No retroactive or open-ended seasonal offers.","Offer bounds: depth stays within operator-set limits, offers never stack, and peak windows hold full price rather than discounting into demand the season delivers anyway.","Subscriber protection: seasonal adjustments apply to off-peak promotional offers only. Existing subscriptions are never repriced by a seasonal window."],"evidence":"Demand in the education vertical swings 77 percent across the year and the curve recurs at a 0.91 year-over-year correlation, measured across three years of subscription history in the 22-vertical benchmark dataset. Platform-wide, churn rises from May through July and again in late Q4. Graded strong: the seasonal curve is firmly established, while the revenue effect of offer timing is the strategy built on it rather than a causal result.","implementationSteps":["Build the vertical’s seasonal demand curve from the benchmark dataset and confirm eligibility: a large measured swing with high year-over-year correlation.","Project the company’s own demand and churn history onto the vertical curve to set the year’s expected peaks and troughs.","Schedule the offer calendar in advance (off-peak windows with operator-bounded promotional offers, peak windows held at full price) and share it with the operator for review.","At each window opening, announce the off-peak offer by email to prospects and dormant accounts and apply it through the billing provider. At each closing, return the catalog to full price.","Keep every window time-boxed and non-stacking, and never touch the price of an existing subscription.","Compare each window’s new subscriptions, returning subscriptions, and revenue against the same season in prior years, and tune window timing and depth from the year-over-year changes."]},"featurePage":null,"calculators":null,"editionAdded":1},{"slug":"usage-limit-upgrade-offers","name":"Usage-Limit Upgrade Offers","summary":"Catches subscribers tracking toward a metered limit and offers the next tier before they hit the wall, where conversion is eight times higher.","stage":"monetize","triggerType":"threshold","surfaces":["in-app"],"grade":"validated","availability":null,"evidence":{"headlineStat":"43 percent conversion when prompted before the limit, versus 5.5 percent after—an 8× margin","sampleScale":"millions of limit and wall encounters across the behavioral dataset","confidencePhrase":"validated at scale—the before-versus-after gap is large and consistent across the dataset"},"agentSpec":{"trigger":"A subscriber’s metered usage (credits, seats, API calls, storage) crosses 80 percent of any plan limit, or projected end-of-period usage crosses the limit.","surface":"In-app, in the same surface where the limit is being approached. At 100 percent of the limit, a soft block with an inline pay-to-continue path, never a hard error or a redirect to a billing page.","guardrails":["Rate limit: one upgrade prompt per limit per billing period at the 80 percent threshold. The 100 percent soft block may persist but must never destroy work in progress.","Eligibility: active subscription with a higher tier available. Never prompt subscribers who are mid-cancel or in a Payment Recovery sequence.","Collision avoidance: when multiple limits are approached at once, consolidate into a single offer. Suppress while any other offer or save flow is active.","Price integrity: the quoted price is exactly what the remainder of the period costs on the new plan, with no surprise proration and no fine print."],"evidence":"Upgrade prompts shown before a limit is reached convert at 43 percent, versus 5.5 percent for the same ask after the subscriber hits the wall, an eight-times margin measured across millions of wall encounters. Wall-encounter analysis shows no fatigue effect up to 50 encounters per day. Validated at scale across the behavioral dataset.","implementationSteps":["Meter every plan limit that can block work (credits, seats, API calls, storage) and stream usage against each one.","Project end-of-period consumption per limit and flag subscribers tracking toward an overrun.","At 80 percent of any limit, show the next-tier offer in the same surface where the limit is being approached, with the rest-of-period price quoted exactly.","At 100 percent, switch to a soft block with an inline pay-to-continue path, and keep the subscriber’s work on screen.","On acceptance, upgrade the subscription immediately so the block clears within the same session.","Compare pre-limit and post-limit conversion to confirm the margin holds, and tune the 80 percent threshold per limit from observed outcomes."]},"featurePage":null,"calculators":["/tools/dollar-retention-rate-calculator"],"editionAdded":1},{"slug":"welcome-back-flows","name":"Welcome-Back Flows","summary":"Recognizes a former subscriber the moment they return and replaces the generic signup path with a personalized welcome-back experience.","stage":"reengage","triggerType":"event","surfaces":["in-app"],"grade":"causal","availability":null,"evidence":{"headlineStat":"2.2× the lifetime value of the first subscription on a returning subscriber’s second run","sampleScale":"223,000 matched subscriber pairs in the returning-subscriber analysis","confidencePhrase":"almost certainly causal—the returner effect is one of four effects in the research measured with matched subscriber pairs"},"agentSpec":{"trigger":"A former subscriber is identified on a return visit: a recognized login, a matched identity at signup, or a direct return from a saved link.","surface":"In-app, as the first screen of the return: a welcome-back experience with prior context restored and a one-step re-subscription path.","guardrails":["Frequency: one welcome-back experience per return. If the returner leaves without re-subscribing, do not repeat it on every subsequent visit.","Eligibility: a confirmed identity match to an ended subscription. On uncertain matches, fall back to the standard path rather than guessing.","Offer discipline: match the offer to the returner’s engagement profile and stay within operator-approved bounds. The return moment never deepens the discount.","Collision avoidance: suppress separate lifecycle outreach the moment a return is detected. The in-product experience takes over."],"evidence":"Matched former-subscriber programs cut downstream churn by 3.48 percentage points and add an average of $722 of lifetime value per subscriber across 223,000 matched subscriber pairs, graded causal. Returners carry 2.2 times the lifetime value of their first subscription and engage 77 percent more than first-time subscribers.","implementationSteps":["Maintain a former-subscriber record with identity keys (login credentials, email, billing identity) for every ended subscription.","Match arriving visitors against that record at login, at signup, and on direct return links.","On a confirmed match, render the welcome-back experience as the first screen: prior context restored, tenure acknowledged, one-step re-subscription.","Select the offer from the returner’s engagement profile and prior plan, then apply it to the re-subscription path so acceptance is a single action.","Suppress any separate lifecycle outreach for the subscriber the moment the return is detected.","Track return-to-resubscribe conversion and the second subscription’s 90-day retention, and tune the experience against both."]},"featurePage":null,"calculators":["/tools/lifetime-value-calculator"],"editionAdded":1}]}