What FunnelKeeper connects to
FunnelKeeper answers one question — did the spend pay back — so it reads the three things that question needs: what you spent, what people did, and what you earned. Every source below is read-only unless the row says otherwise.
One spend source, one traffic source, and one place your revenue lives. Google Ads + GA4 + your database is the common shape; PostHog and first-party tracking cover the case where there is no replica to expose.
Conversions & revenue
Where the money actually lands. Rows in your own database, or events you send us directly.
MySQL
read-onlyTurn rows in your existing MySQL database into a joined customer journey.
Read what it pulls →Postgres
read-onlyThe same row-to-funnel mapping as MySQL, schema-aware for Postgres.
Read what it pulls →MongoDB
read-onlyMap documents in your collections to funnel stages with dot-notation paths.
Read what it pulls →First-party event tracking
you sendNo database to connect? Send funnel events straight from your site or backend.
Read what it pulls →Traffic & behaviour
How people arrive and how far through the funnel they get.
Paid acquisition
What you spent, by channel and campaign, in the ad account's own currency.
Session recordings & friction
The rage clicks and dead clicks behind a step that leaks.
Search visibility
Organic position, so the unattributed line has a plausible explanation.
Tracking quality
Whether the measurement you are trusting is actually live.
Access at a glance
The same table the dashboard enforces. Two rows can write, and both need a person.
| Source | Contributes | Access | Cadence |
|---|---|---|---|
| MySQL | Conversions & revenue | read-only | Hourly |
| Postgres | Conversions & revenue | read-only | Hourly |
| MongoDB | Conversions & revenue | read-only | Hourly |
| First-party event tracking | Conversions & revenue | you send, we store | Real time |
| Google Analytics 4 | Traffic & behaviour | read-only | Daily |
| PostHog | Product analytics | read-only | Daily, and on demand |
| Google Ads | Paid acquisition | read + human-approved proposals | Daily |
| Meta Ads | Paid acquisition | read + human-approved proposals | Daily |
| Microsoft Clarity | Session recordings | read-only, your token | Daily, one sampled pull |
| Semrush | Search visibility | read-only, your key | Weekly, and only weekly |
| Google Tag Manager | Tracking quality | read, plus publish on explicit confirm | Daily tag audit |
Questions people ask before connecting
Which integrations do I need for a payback verdict?
Three things have to be present: spend, funnel events, and revenue. That is usually Google Ads or Meta for spend, GA4 or PostHog for traffic, and your own database or first-party event tracking for conversions and revenue. Everything else — Tag Manager, Clarity, Semrush — is context that makes the verdict easier to trust.
Does FunnelKeeper write to any of these systems?
Reads only, with two named exceptions. Tag Manager can publish the FunnelKeeper tracking snippet, but only when you explicitly confirm it. Google Ads and Meta budget changes are possible, but only as a proposal a human approves in the app — a database constraint stops a proposal reaching approved without a person recorded against it.
What if my tool is not on this list?
Send the events yourself. First-party event tracking accepts funnel events from a browser snippet or your backend, and the REST API and MCP server expose the same write path to an agent. If your revenue lives in a database we do not list, tell us — the database adapters are config-driven, not bespoke code.
Where are the credentials stored?
Encrypted at rest in Postgres with AES-256-GCM, bound per row, and never returned by the API or shown back in the dashboard. Public tracking write keys are the deliberate exception: they ship in your page source, so they can only write events and are revoked by rotating them.
Can an AI agent connect these for me?
Yes, and that is the intended path. Over MCP an agent holds connect_mysql, connect_posthog, connect_clarity, set_semrush_key and connect_source_start — the last returns the one Google consent link a human has to click. Every call lands in the audit log under the agent's key.
One source is enough to start. The first sync backfills 30 days, then keeps deepening.
Start free