How it works

One prompt to your agent. Then a two-minute card queue.

FunnelKeeper is built to be installed by the same AI that built your product, and run by you in the time it takes to drink the first coffee.

What does the AI set up?

Your agent creates the product, connects the sources, and verifies each one delivers data. Over MCP it holds the same tools the CLI has: create_product, connect_source_start (which returns the one Google consent link a human must click), set_semrush_key, test_connection. The whole exchange lands in the audit log under the agent's key.

What does the human approve?

Anything that touches money. The Keeper and your agent can propose a budget change — with a rationale and a rollback condition — and it becomes a card in your queue with one number and two buttons. A database constraint means a proposal cannot reach approved without a human on record. Everything else (reads, event logging) needs no ceremony.

$ fk signup                      # or start at https://app.funnelkeeper.com
$ fk login
$ fk product create --name "Ledgerly" --slug ledgerly
$ fk connect ga4 --product ledgerly

  open this url to connect ga4 for ledgerly:
  https://accounts.google.com/o/oauth2/v2/auth?…

  waiting for authorization …
  ga4 connected. property: Ledgerly (properties/4210…)

$ fk connect semrush --product ledgerly
  semrush connected. snapshots run weekly.

  Funnel is live. First payback verdict in ~18 days.
  Nothing spends money without your tap.

What data does it need?

Read access to where your traffic, spend and revenue already live. Every source is read-only, with two named exceptions: Tag Manager can publish the FunnelKeeper tracking snippet when you explicitly confirm it, and an ad budget change is possible only as a card a person approves. If your revenue is not in a database we can reach, send the events instead.

SourceWhat is readAccess
MySQL Rows in your tables become funnel events, identity, attribution and revenue read-only
Postgres The same row-to-event mapping as MySQL, across any schema read-only
MongoDB Documents become funnel events, addressed by dot-notation paths read-only
First-party event tracking Funnel events you send from the browser or your backend you send, we store
Google Analytics 4 Sessions and engagement by channel and landing page, daily read-only
PostHog Sessions, mapped events and session replay, on one API key read-only
Google Ads Spend, impressions and clicks at campaign, ad group, keyword and ad grain read + human-approved proposals
Meta Ads Daily campaign spend, impressions and clicks read + human-approved proposals
Microsoft Clarity Recording links plus rage-click and dead-click counts by page read-only, your token
Semrush Rank, organic keywords and traffic estimates, weekly read-only, your key
Google Tag Manager Live container version — is the GA4 tag present and unpaused read, plus publish on explicit confirm

Each row has its own page — what is pulled, what is never touched, and how to connect it: all integrations.

How long until the first verdict?

Spend, funnel and revenue appear within an hour of connecting. A payback verdict waits for a cohort old enough to judge — typically two to three weeks. Until then the curve is drawn without calling a winner, because calling it early would be a guess wearing a chart.

Start free Read the quickstart