SaaS subscriptions (MRR)
Track the movement of your recurring revenue (MRR) directly in snorklee, without entrusting us with any of your subscribers' data. Your site sends cookieless events with no persistent identifier from its confirmation pages and buttons; snorklee keeps only aggregated amounts. No subscriber identifier and no customer list ever transit.
The "SaaS subscriptions" block appears on the Analytics tab, right under the funnel.
The events to send
A single event, subscription, with an action and the MRR amount involved:
snorklee('subscription', {
action: 'new', // new | trial | expansion | contraction | churn | reactivation
mrr: 29, // normalized monthly MRR, always positive
currency: 'EUR',
plan: 'pro', // the name of your tier
term: 'monthly' // monthly | annual
});
The net MRR shown = new + expansion + reactivation − contraction − churn. Trials (trial) are counted separately: a card-less trial is reported with mrr: 0 (or the planned MRR), and does not weigh on MRR until it turns into a new.
Where to place the calls
Place each call when your site shows a confirmation — that's when a browser is present and you already know the plan and the amount:
- "Thank you / subscription confirmed" page after payment →
action: 'new'. - Trial start (welcome page) →
action: 'trial'. - Upgrade / downgrade button, on the confirmation screen →
action: 'expansion'or'contraction'. - Cancellation confirmation page →
action: 'churn'.
Renewals need no event: they don't change MRR.
What is captured (and what isn't)
Let's be clear: this is movement observed in self-service, not exhaustive accounting.
- ✅ Captured: anything that goes through a page or button on your site (new subscription, upgrade, downgrade, voluntary cancellation, trial).
- ❌ Not captured client-side: involuntary churn (failed payment after dunning) and changes made outside your site (hosted billing portal). Those events arrive server-side, with no browser.
For a complete accounting view (involuntary churn included), a server-to-server channel or a billing-provider integration will be needed — coming later. In the meantime, this client-side tracking stays 100% sovereign and free of any personal data.