Skip to content

For subscription apps

Trials, renewals and the churn nobody chose

A consumer subscription business is a trial funnel with a renewal problem attached. Most of the churn is not a decision anyone made.

What does Bastle do for subscription apps?

Consumer subscription apps live on high trial volume, short billing cycles and a large share of churn that is involuntary rather than intentional. Bastle reports trial conversion and trial length, decomposes churn into voluntary cancellation and failed payment, and runs recovery and cancellation flows against the same billing history. App Store and Google Play connectors are on the roadmap and not available today; app-store revenue reaches Bastle through the import API.

The job

What you are actually trying to do

Not a feature list rearranged. These are the tasks that bring this reader to a subscription analytics tool in the first place, and what in Bastle does each one.

Know what the trial funnel actually converts

Trial conversion rate, trial length, trials currently running and which high-value trials expire this week — reported as metrics rather than assembled from a query. Trials are excluded from MRR by default, because counting them makes the number stop meaning recurring revenue, and that exclusion is a policy you can change.

Split the churn that was chosen from the churn that was not

Expired cards, insufficient funds and issuer declines look identical to a cancellation in a headline churn number and need a completely different response. Bastle reports them separately and Recover chases the payment failures on their own schedule.

Get the reason out of a cancellation flow you already own

Cancellation Insights ships an embeddable widget, but if you have already built your own flow — or your cancellations happen in a platform you do not control — you can post the reason to the API and it lands in the same reporting: reasons weighted by lost MRR, trends over time, per-reason follow-ups.

Segment by something other than plan

At consumer volumes the plan tells you very little. Segmentation stacks filters across tenure, MRR band, signup date, geography and any custom attribute you import — acquisition source, onboarding path, app version — and any saved segment applies across metrics, cohorts and the assistant.

Friction

The complaints people actually write down

Taken from published reviews and public discussion of the incumbent tools rather than invented for this page. Where Bastle does not solve one of them, the answer below says so rather than changing the subject.

  • The complaint

    The analytics tool counts trialing users as customers, so both the customer count and MRR are inflated and the trial funnel is invisible.

    What Bastle does

    Trials are excluded from MRR and reported as their own metric set — conversion rate, trial length, active trials, expiring high-value trials. Whether trialing subscriptions count as revenue is workspace policy, so the decision is yours and it is written down.

  • The complaint

    Dunning is a separate purchase from analytics, English-only, and limited to email with maybe a banner.

    What Bastle does

    Recover is part of Bastle rather than an add-on, and runs email, SMS and an in-app banner across three separate campaigns — delinquency, card expiry and annual renewal. Localisation is a real gap: sequences are authored by you per campaign, and Bastle does not auto-translate them the way some retention specialists do.

  • The complaint

    Mobile subscriptions live in the app stores and never reach the analytics tool, so the picture is permanently partial.

    What Bastle does

    App Store and Google Play connectors are in beta: Bastle reads auto-renewable subscriptions through the App Store Server API and Play Billing through the Android Publisher API, with store commission applied as a fee so net revenue reflects actual proceeds. Beta means the ingestion path has had less production mileage than Stripe, so reconcile your first month against your own store reports. The import API remains available if you would rather push the history yourself.

  • The complaint

    Churn is reported as one rate, so a bad month reads the same whether the cause was a pricing change or a batch of card failures.

    What Bastle does

    Every movement decomposes into new, expansion, reactivation, contraction and churn, with the customers behind each, and cancellation reasons are weighted by the MRR they cost. Ask will explain a movement in a sentence and cite the records it used.

  • The complaint

    Monthly cycles mean any measurement error compounds twelve times a year, and the tool's rules for coupons, refunds and same-day cancellations are undocumented.

    What Bastle does

    Coupon handling, refund treatment, the delinquency window and the same-day start-and-cancel wash are explicit workspace policy. Change one and history recalculates against the new rule. Bastle does not yet version or attribute that change, so keep your own note of when a rule moved.

The shape of a consumer subscription business

High volume, low price, short cycles and a trial at the front. That combination produces two measurement problems that barely exist in B2B SaaS. First, trials dominate the customer count if you let them, and a tool that counts a trialing user as a customer reports a business you do not have. Second, monthly billing means a payment method is presented twelve times a year, so card failures accumulate into a churn rate that has nothing to do with whether anyone liked the product.

Bastle handles both explicitly. Trials are excluded from MRR by default and reported as their own metric set — conversion rate, trial length, active trials, and which high-value trials expire this week. Failed payments are reported as a distinct cause of churn and handled by Recover rather than folded into the same number as cancellations.

Involuntary churn is where the money is

Expired cards, insufficient funds and issuer declines typically account for a mid-to-high single-digit share of subscription revenue. Those customers were not leaving. Recover treats the three situations that produce them as separate campaigns — a delinquency sequence that starts when a charge fails, a card-expiry warning before anything can fail, and an annual-renewal heads-up before a large charge lands — because a single generic sequence wastes most of the opportunity.

Messages carry a link to a hosted card-update page you can brand, and the new card is written back to your payment processor so the next charge simply works. What happens to outstanding invoices afterwards is a setting, deliberately conservative by default: recovering everything at once collects more and surprises the customer with a total they did not expect.

One honest limitation. Recover's sequences are authored by you, per campaign, in the languages you write them in. Retention specialists that auto-localise dunning across a dozen-plus languages have a real advantage if your base is genuinely international, and it would be misleading to imply otherwise.

The app stores, stated plainly

If your subscriptions are sold through the App Store or Google Play, Bastle connects to both, and both are in beta. It reads auto-renewable subscriptions through the App Store Server API and Play Billing through the Android Publisher API, and applies store commission as a fee so net revenue reflects what the store actually remits rather than the list price.

Beta is not a formality here. These paths have had far less production mileage than Stripe, and store reporting has its own delays and restatements, so plan to check your first month against the store's own reports rather than assuming agreement. If the whole of your revenue is in-app, weigh that against tools built specifically around mobile purchase events, which have been doing only this for longer. The import API remains an alternative if you would rather push the history yourself, and imported sources appear alongside native ones in one set of metrics.

Asking why, at consumer volume

At tens of thousands of subscribers you cannot read the underlying list, so the decomposition has to do the work. Every movement in revenue breaks into new, expansion, reactivation, contraction and churn with the customers behind each, cancellation reasons are weighted by the MRR they cost rather than counted, and saved segments apply across metrics, cohorts and the assistant so you can ask a question about one cohort by name.

Cancellation Insights covers the collection side either through an embeddable widget or by posting reasons from a flow you already built, which matters here because consumer apps usually own their cancellation experience and are not going to replace it.

Where to start

The parts you will use first

All of it sits in one workspace reading one normalised billing history, and Bastle is free while in beta — so nothing here is a tier, an add-on or a separate subscription.

The same product from another seat: founders, finance teams, investors and boards and saas startups.

Or go straight to the detail: everything Bastle does, the metric glossary for the maths behind any number, an honest comparison with the alternatives, or the live demo — the real application running on a generated dataset, no signup.

Frequently asked questions

Does Bastle connect to the App Store or Google Play?

Not today. There is no native App Store or Google Play connector and both are on the connector roadmap. App-store subscription data can be pushed through the import API with real start and cancellation dates so the history backfills into the same metrics as a native billing source, but that is an integration you build rather than a connection you authorise.

How are trials handled?

Trialing subscriptions are excluded from MRR by default and reported separately as trial metrics: conversion rate, trial length, active trials and high-value trials expiring soon. Whether trials count as revenue is workspace policy, so you can change it, and changing it recalculates history against the new rule rather than only affecting figures from that day onward.

What share of churn is usually involuntary?

It varies with price point, geography and card mix enough that a single headline figure would be misleading, but failed payments are commonly a mid-to-high single-digit share of subscription revenue for consumer subscription businesses. Bastle reports your own recovered amount and recovery rate rather than an industry average, because that is the only figure you can act on.

Can Recover send in other languages?

You write the sequences, so they can be in any language you author them in — but Bastle does not automatically localise a dunning sequence per recipient. Retention tools that auto-translate across many languages are genuinely better at this, and if your subscriber base is broadly international that is a real point against Bastle rather than a detail.

Does it handle monthly and annual plans in the same view?

Yes, and the normalisation is explicit: an annual plan at 1,200 a year contributes 100 a month to MRR, with quarterly and custom intervals handled through the interval count. Annual churn also gets its own lookback window, because a thirty-day churn measurement is effectively blind to annual plans and blending them produces a rate that describes neither.

Can we keep our own cancellation flow?

Yes. Post the cancellation reason to the cancellation-insights API endpoint and everything downstream works identically — reasons weighted by lost MRR, trends over time, per-reason follow-up emails. The embeddable widget is an option, not a requirement, which matters for apps that have already invested in their own flow.

See your own numbers in about two minutes.

Connect Stripe and Bastle backfills your full history. Free while in beta — no card, no sales call.