Stripe integration
Stripe revenue attribution by page, keyword and channel
Stripe knows who pays. It doesn't know which blog post, search query or launch post sent them. Joinsight links each Stripe customer to the first page they landed on, so MRR comes with its source.
No card required. The trial clock starts when your first revenue source connects.
What Joinsight answers with Stripe
- Which pages and blog posts brought paying customers, and how much MRR each one is worth
- Which channel (organic search, social, referral, direct, campaigns) drives new MRR, not just visits
- Why MRR moved last week, broken down by plan, country, channel and page
- At-risk MRR from past-due subscriptions and cards that expire this month
What it reads
- Customers, subscriptions, prices and invoices, through a restricted key with read access only
- Subscription changes as they happen, to compute new, expansion, contraction, churned and reactivated MRR
- metadata.user_id on the customer or subscription, set at Checkout, to match a payment to the visitor who signed up
Good to know
- MRR is gross, before Stripe fees, and excludes tax, trials and one-time payments.
- Customers who paid before the snippet was installed have no first touch and show as unattributed.
- Attribution needs about 30 days of snippet data before page revenue is useful.
Setup
- Create a restricted key in Stripe. The connection card lists the exact read permissions to tick.
- Paste the key in Joinsight. Combined MRR and movements are computed from your full subscription history.
- Add metadata.user_id to Checkout sessions so new subscriptions carry your app's user ID.
- Install the snippet and call identify() at signup. From then on, each new customer is linked to their first touch.
Questions
Can Joinsight change anything in my Stripe account?
No. It uses a restricted key with read permissions only, stored with envelope encryption. It cannot create charges, refunds or customers.
Will my MRR match the Stripe dashboard?
It should, within the definitions shown on every number: annual plans divided by 12, discounts applied, tax and trials excluded. Where Stripe's own figure differs, the definition explains why.
What if I don't set metadata.user_id?
Joinsight falls back to matching on email, hashed on our side. Setting the user ID gives a higher match rate, especially when people sign up with one email and pay with another.
Works well with
- RevenueCat
Connect RevenueCat to see mobile and web MRR as one number, deduplicated against Stripe, and tie App Store and Google Play revenue to the content and campaigns that drove it.
- Google Search Console
Join Google Search Console with Stripe and RevenueCat to see revenue per landing page and modeled revenue per query, plus keyword opportunities ranked by what they could earn.
See what makes you money.
Connect Stripe or RevenueCat and Search Console, and you see combined MRR and 16 months of search history on day one. Page and keyword revenue follow as the snippet collects first touches.
No card required. The trial clock starts when your first revenue source connects.