Connect Stripe
Stripe is how FunnelFizz distinguishes "someone visited your site" from "someone is paying you." Without it, TRIAL and CUSTOMER stages stay at zero.
Two ways to connect, both store the same encrypted read-only API key.
Option A: Paste a restricted API key (~60s)
-
Stripe dashboard → Developers → API keys → Create restricted key.
-
Name it
FunnelFizz (read-only). -
Set these seven permissions to Read (everything else None):
Customers Charges & Refunds Events Products & Prices Invoices Subscriptions -
Create key → Reveal. Copy the
rk_live_…(orrk_test_…). -
In FunnelFizz: Connect Stripe → paste → Validate. We probe each scope in parallel and surface any missing one with a specific error message.
Option B: Install the Stripe App (one-click)
Search "FunnelFizz" on the Stripe Apps Marketplace. The app creates the same restricted key automatically, then deep-links you back to FunnelFizz with the key pre-filled. Webhooks are auto-configured.
What we do with the data
- Replay your history on connect. All your existing Stripe customers retroactively land on the right funnel stages with their actual historical timestamps. Cohort cards show pre-existing customers immediately — you don't have to wait for the next webhook.
- Sync every 15 minutes. Customers, subscriptions, trials, charges.
- Listen to webhooks,
checkout.session.completed,customer.subscription.updated,customer.subscription.deleted,invoice.payment_failedfor near-real-time updates. - Stitch identities. When a tracked visitor becomes a Stripe customer, journey events link their anonymous sessions to the paying record.
- Compute the churn trichotomy, Retained / Upgraded / Churned (see stages).
What backfill can and can't resolve
Replay also re-runs every time you create a funnel, add a split or extension, or edit a conversion. Existing customers slot into the new tracks at their real historical moments — period conversion graphs bucket them by when they actually became paid, not by when you set up the funnel.
Re-trials, upgrades, and churn are all reflected if Stripe knows about them.
What replay CAN resolve, working from Stripe + profile data:
| Track condition | Resolvable? |
|---|---|
stripe_product, stripe_price | Yes, perfectly. |
traffic_source, utm | Yes, when first-touch attribution was previously captured on the profile via tracking. |
geography | Yes, when the profile already has a country set from prior tracking. |
device_type | Yes, when previously captured. |
What replay CAN'T resolve:
channel,custom_event,ab— these signals were never sent to Stripe and aren't recoverable.geography,device_type,utmfor Stripe-only customers who never had a tracking event.
When a track condition can't be evaluated for a profile, the profile gets a cohort_unresolvable_at_replay event on its activity timeline so you can see who needs manual resolution.
What replay does NOT do: trigger automations. Past-state customers don't get welcome emails. To message backfilled customers, create a one-shot campaign targeted at the relevant stage or split.
After Stripe connect, replay also fires automatically on funnel creation, on every new split or extension, and after conversion-config edits — so you usually don't need to think about it. After editing track conditions on an existing funnel, you can re-run it manually from the dashboard or via the replay_historical_journeys MCP tool.
One Stripe account per workspace
A given Stripe account can only be connected to one workspace at a time, prevents double-attribution across tenants. Move accounts by disconnecting first.
Test mode
rk_test_… keys with the same seven scopes work identically. Useful for dry-running setup without real charges. The dashboard shows which mode is connected.
Linking Stripe to a funnel
One Stripe connection per workspace, one logical link per funnel. Click Connect Stripe on a funnel (or call link_stripe_to_funnel over MCP), that one marker on the CUSTOMER stage is enough; data flows through every relevant stage and split branch automatically.
Troubleshooting
- "Missing scopes", Stripe → edit the key → add scopes → Update → paste into FunnelFizz again.
- Mode mismatch, generated the key in the wrong mode. Toggle and regenerate.
- No customers after 15 min, click Sync now in Settings → Integrations → Stripe.
- Webhook not firing (API-key mode only), the Stripe App handles this automatically. For API-key mode, add a webhook endpoint in Stripe pointing to
https://funnelfizz.com/api/webhooks/stripeand paste the signing secret in the integration settings.
Next: Connect providers →