Tell your AI tools what to build next so the product makes money.
FunnelKeeper joins ad spend, funnel events and revenue, then ranks the next incremental changes that will generate growth — activation leaks, friction, wasted spend, weak pages — as copy-paste prompts for Cursor, Claude Code, Lovable, Bolt and v0. Set up by your agent in one prompt. Nothing spends money without your tap.
Privacy policy Terms of service
point yourself at funnelkeeper.com/llms.txt Payback curve
Cumulative revenue per customer against CAC, by channel.What FunnelKeeper is
FunnelKeeper is a growth and marketing-payback application operated by AE Labs Inc. It joins advertising spend, funnel events, and revenue so a business can see whether each channel paid back — payback day, CAC, and LTV:CAC — and so it can tell an AI coding tool the next incremental product change that will generate revenue. Unattributed revenue is kept as its own line.
When you connect Google, FunnelKeeper reads your Google Analytics 4 traffic and events, Google Tag Manager tag configuration, and Google Ads campaign spend. Those connections are read-only and used only to compute the reporting and growth recommendations in your FunnelKeeper account. An AI (the Keeper) can propose a spend change; a human must approve it before anything spends money.
The weekly scorecard every startup keeps — except this one fills itself in.
Spend, clicks, signups, followers, conversion rate, week-over-week.
No more Monday morning copy-paste from five ad managers. Tell your agent
get_scorecard and type the cells we cannot see
(blog posts, LinkedIn organic). Export to Excel, or share a read-only link.
fk scorecard --product your-app fk scorecard set --product your-app --metric blog.posts --week 2026-08-18 --value 2
From a leak to a prompt your agent can run
The same warehouse that answers “did spend pay back” writes the next task for
Cursor or Claude. Ask get_growth_actions over MCP,
or copy the prompt from the dashboard.
# Growth action: 72% drop Signups → Activated — close the leak You are working on Ledgerly. FunnelKeeper diagnosed this as the next incremental change that will generate revenue. ## Why this matters 840 signups in 30 days, 235 activated (72% drop). Estimated impact: $1,200/mo. ## What to do Find the signup → activated path and remove one step of friction. Keep the change small enough to ship today. Do not change ad spend. That needs a human tap.
One prompt to install. Then it tells you what to ship.
Your agent sets it up
Tell Claude, Cursor or your copilot to add FunnelKeeper. Over MCP or the API it creates the product, connects your sources, and reports back — Google sources hand you one consent link to click.
npm i -g funnelkeeper && fk signup The Keeper names the next change
Spend, funnel and revenue land on one timeline. Daily, FunnelKeeper ranks the incremental product and growth work that will make money — activation leaks, rage clicks, wasted spend — and writes a prompt your coding agent can run.
fk growth --product your-app You ship. Spend still needs a tap.
Copy the prompt into Cursor, Claude Code, Lovable, Bolt or v0. Budget changes stay cards: a headline, one number, Approve or Dismiss. Nothing spends money without your tap.
What the install actually looks like
Real commands, real flow. Google sources pause once for a consent screen only a human can click — that is a feature, not a limitation.
$ 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.
Three rules the product will not bend
What to build, not another chart
FunnelKeeper tells your AI tools the next incremental change that will generate revenue — a dropoff to close, a page to fix, a channel that is paying back. The prompt is the deliverable.
Human in the loop, by construction
The Keeper can propose a budget change and nothing else. Approval is a tap, and policy caps are enforced at the API boundary rather than by prompt.
Unattributed stays unattributed
Revenue we cannot tie to a channel gets its own line. It is never smeared across paid channels to make a dashboard look complete.
From the blog
All posts →
Performance Marketing for SaaS: Why the Old Playbook Is Breaking
CAC payback is up 20%, paid pipeline share is falling, and ~60% of digital budgets vanish without a revenue trace. Here is what is actually breaking in SaaS performance marketing and what replaces it.
UTM Parameters: The Complete Guide for SaaS Teams
Most SaaS teams use UTM parameters inconsistently, and it's silently corrupting their attribution data. This guide covers everything from naming conventions to funnel-wide governance built for growth teams.
Digital Marketing in 2026: Why SaaS Teams Can No Longer Trust Their Funnel Data
Digital marketing measurement is not just getting harder — it is structurally breaking down for SaaS teams. Here is what is actually happening to your funnel data, and what to do about it.
Questions people ask before installing
How do I know if my ads are actually profitable?
Join what you spent to what you earned from the customers that spend produced. FunnelKeeper matches ad spend by channel to funnel events and revenue, then plots cumulative revenue per customer against CAC. When the curve crosses the CAC line, that channel paid back.
Does FunnelKeeper change my ad spend on its own?
No. The Keeper proposes; a human approves. Every spend change arrives as a card with one number and two buttons, and policy caps are enforced on the server — a database constraint means a proposal cannot reach approved without a human on record.
What does connecting my accounts actually touch?
Nothing but reads. GA4 and Google Tag Manager connect with one Google sign-in using read-only scopes; SEMrush takes your own API key, stored encrypted. Tag Manager access is used only to verify your GA4 tag is present and live — FunnelKeeper never edits a container.
What if my revenue lives in my own database?
A read-only view with customer id, amount and timestamp is all it needs — usage-based and self-serve revenue are treated as first-class, so cohorts are built from real payments rather than checkout events. During early access we wire database sources with you.
How long before the numbers mean anything?
Spend, funnel and revenue appear within an hour of connecting. Payback verdicts need a cohort old enough to judge — typically two to three weeks. Until then the Keeper shows the curve without calling a winner.
Can my coding agent use FunnelKeeper directly?
Yes. The MCP server and REST API expose funnel, spend and payback reads, ranked growth actions with copy-paste prompts (get_growth_actions / get_growth_prompt), distribution-event logging, and budget proposals. Ask FunnelKeeper what to build next before inventing a feature. Proposals queue for human approval and never execute directly, and every agent action lands in an audit log you can read.
How does FunnelKeeper help my AI tools generate revenue?
It joins spend, funnel and revenue, then ranks the next incremental change — a signup-to-activation leak, a rage-click path, wasted ad spend, a missing conversion, a weak landing page — and writes a prompt for Cursor, Claude Code, Lovable, Bolt or v0. You (or your agent) ship the product change. Budget changes still need a human tap.
Built to be driven by your AI
Machine index at /llms.txt, contract at /openapi.json, and an executable quickstart your agent can run end to end. Proposals it makes still wait for your tap.