Attribution for SaaS.

Attribution for SaaS founders.

See MRR by channel, trial-to-paid by source, CAC payback by cohort. Paste a Stripe restricted key, install the pixel, ship in 10 minutes. 14-day free trial on every plan. No credit card required.

Built for trial-led growth and freemium funnels. Works alongside PostHog, Datafast, and Stripe's own dashboard — each answers a different question. Admaxxer answers acquisition: which channels deliver MRR, which sources convert trials, when each cohort pays back its CAC.

Start 14-day free trial See the install guide

Trusted by SaaS teams running paid acquisition

Trial-led growth. Freemium funnels. Self-serve B2B. Admaxxer is built for the recurring-revenue stack — every signup, trial, and subscription event attached to the channel that drove it.

How it works — three steps, about ten minutes

1. Install the pixel in <head>

Paste script.plus.js into your <head>. The Pro variant auto-captures form submits, outbound clicks, downloads, and rage clicks — so your Signup form fires a goal even before you wire any programmatic call. Full walkthrough at /documentation/install/saas.

2. Paste a Stripe restricted key

Read-only restricted key (rk_live_*). Admaxxer registers the customer.subscription.* webhook automatically — no merchant-side handler code, no full-access-key exposure. Trial Started, Trial Converted, and Subscription Cancelled fire on the server. See /documentation/revenue/stripe for the exact permission scopes we request.

3. Watch MRR by channel populate

Within 5 minutes you'll see every signup, trial conversion, and subscription event attributed to its acquisition channel — last-click, first-touch, or any of the 6 attribution models. Start now.

Stripe restricted key — read-only by design

Restricted keys (rk_live_*) are scoped to read events, customers, subscriptions, and invoices. No write permission, no checkout permission, no payment-method access. We never ask for, never accept, and never need a full-access key. The webhook subscription is registered programmatically on your behalf so you don't write or maintain any webhook handler code.

The same model applies to every revenue provider Admaxxer supports — Stripe, Paddle, Lemon Squeezy, Polar, Dodo, WooCommerce, and Shopify. Paste-token, read-only, auto-webhook. See /documentation/revenue/stripe for the canonical Stripe walkthrough.

The SaaS attribution stack — what you get

MRR & ARR attribution per channel

Every recurring dollar tied back to its acquisition source. See which channels deliver $9 vs $99 vs $999/mo plans, and how new MRR splits across Meta, Google, organic, direct, and referral.

Trial → Paid conversion by source

Cohort visitors into trials, then trials into paid by their original UTM source. Compare conversion rate by channel so you know which acquisition path attracts trialists who actually convert.

CAC payback by cohort

Group customers by signup month and channel. Watch cumulative LTV cross the CAC line — typically week 6 for content, month 4 for paid social, month 7 for affiliate. Forecast next quarter's payback.

Cross-validation pixel + Stripe (Match Quality Score)

Match Quality Score per workspace. Pixel-tracked signups reconciled against Stripe checkout.session.completed events on identical event_ids. Drift > 5% flags before it burns a reporting cycle.

Server-side webhook auto-registration

Paste your Stripe restricted key once. Admaxxer programmatically registers the webhook endpoint, subscribes to the six subscription-lifecycle events, and validates the signature on every payload. You write zero webhook code.

Trial Started / Trial Converted / Subscription Cancelled fire automatically

Four named goals fire from the Stripe webhook: Trial Started (subscription.created with trial_end), Trial Converted (active after trial), Subscription Cancelled (deleted), Trial Ending Soon (trial_will_end). No handler code on your side.

Where SaaS attribution fits — comparison

Datafast supports SaaS. Triple Whale is DTC-only (built around AOV + ROAS, not MRR). Here's how the three approaches line up.

SaaS-funnel support across Admaxxer, Datafast, and Triple Whale. Reflects each vendor's publicly documented SaaS support as of May 2026.
Tool SaaS support Positioning
Admaxxer Yes — built-in Stripe restricted key, auto-webhook, MRR by source, trial-to-paid cohorts, CAC payback. From $9/mo. Analytics + attribution + server-side tracking, one platform, SaaS-funnel native.
Datafast Yes — pixel + Stripe ingestion, basic MRR view. From $9/mo. Pixel analytics + revenue. No CAC-payback cohort view, no trial-to-paid by source cohorting.
Triple Whale No — DTC e-commerce only (Shopify-first; built around AOV + ROAS, not MRR). Best-in-class for Shopify DTC. Not a fit for trial-led SaaS funnels.

Frequently asked

Do I need to migrate from Datafast or another analytics tool?
No. Install the Admaxxer pixel alongside whatever you have today — pixels don't conflict. Run both in parallel for 7–14 days, compare numbers, then switch DNS for your CNAME when you're confident the data matches. Most SaaS teams cut over inside two weeks.
What if I use Paddle or Lemon Squeezy instead of Stripe?
Both supported. Paste a Paddle API key or a Lemon Squeezy API key in /onboarding the same way you would a Stripe restricted key — the auto-webhook + trial-lifecycle goals work identically. See /documentation/revenue for the seven supported providers (Stripe, Paddle, Lemon Squeezy, Polar, Dodo, WooCommerce, Shopify).
How is this different from Stripe's own dashboard?
Stripe shows MRR, churn, and revenue cohorts — but only for customers who already reached checkout. Admaxxer attaches every signup, trial, and conversion to the original acquisition channel (Meta, Google, organic search query, content piece, referral). You see MRR by source, trial-to-paid by channel, and CAC payback by cohort — three views Stripe's dashboard doesn't expose because it doesn't know about your top-of-funnel.
Does this work for trial-led growth?
Yes — trial-led is the canonical model. The six Stripe subscription events Admaxxer subscribes to (created with trial_end, trial_will_end, updated, deleted, plus the two checkout events) cover the full free-trial lifecycle. Goals fire automatically: Trial Started, Trial Ending Soon (3 days out), Trial Converted, Subscription Cancelled. No code.
What about freemium products with no trial?
Same model — the Signup goal fires on freemium account creation, and Stripe events fire when free users upgrade to a paid plan. Trial Started doesn't fire (no trial_end on the subscription), but Trial Converted is replaced semantically by the first paid subscription.created event. You'll see freemium-to-paid conversion rate by channel the same way trial-led SaaS sees trial-to-paid.
Can I use this on top of an existing Datafast / PostHog setup?
Yes — pixels and Stripe webhooks don't conflict. PostHog handles product analytics (feature flags, session replays, in-product events). Admaxxer handles acquisition attribution (which channel drove the signup, MRR by source, CAC payback). Running both is the canonical SaaS stack — they answer different questions.

Start your free trial — no credit card required

14-day free trial on every plan. No credit card required.

Start 14-day free trial See pricing

See also: /documentation/install/saas, /documentation/revenue/stripe, /integrations, Home.