Browse documentation

CLI reference

Install: npm install -g funnelkeeper (or npx funnelkeeper …). The binary is fk. Credentials live in ~/.config/funnelkeeper/config.json (created 0600 by fk login).

fk signup

create a funnelkeeper workspace (email verification, or —agent for an immediate api key + claim link).

fk signup [flags]
FlagTypeRequiredDescription
--agentbooleannocreate via the agent path: returns an api key immediately plus a claim url for the human
--emailstringnoaccount email (prompted if omitted)
--namestringnoowner display name (agent path only)
--api-urlstringnoapi base url (default https://api.funnelkeeper.com)
fk signup
fk signup --agent --email you@example.com

fk login

sign in and store an api key in ~/.config/funnelkeeper (0600).

fk login [flags]
FlagTypeRequiredDescription
--keybooleannopaste an existing api key instead of using a password
--api-urlstringnoapi base url (default https://api.funnelkeeper.com)
fk login
fk login --key
fk login --api-url http://localhost:3100

fk logout

delete the stored api key.

fk logout
fk logout

fk account

show the current workspace (name, email, role).

fk account
fk account

fk billing

show the current plan, trial, and usage (prints a checkout or portal url with —checkout / —portal).

fk billing [flags]
FlagTypeRequiredDescription
--checkoutstringnoindie | growth — print a Stripe Checkout URL
--portalbooleannoprint the Stripe customer-portal URL
fk billing
fk billing --checkout growth
fk billing --portal

fk export

download events or transactions as csv (growth plan).

fk export <kind> [flags]
FlagTypeRequiredDescription
--productstringyesproject slug
--outstringnowrite to this file instead of stdout
fk export events --product demo
fk export transactions --product demo --out tx.csv

fk accounts

list workspaces this identity can see (api key: the key’s tenant).

fk accounts
fk accounts

fk team

list people in the current workspace.

fk team
fk team

fk team invite

invite someone to this workspace (existing funnelkeeper logins get a join link).

fk team invite [flags]
FlagTypeRequiredDescription
--emailstringyesinvitee email
--rolestringnoowner | member (default member)
fk team invite --email teammate@agency.com
fk team invite --email owner@client.com --role owner

print a fresh claim url so the human can set a password on an agent-created account.

fk claim-link
fk claim-link

fk product create

create a project in your account.

fk product create [flags]
FlagTypeRequiredDescription
--namestringyesdisplay name
--slugstringyesurl-safe id (lowercase, hyphens)
--currencystringnoiso currency code (default USD)
--domainstringnoproject domain
fk product create --name "Demo" --slug demo --currency AUD

fk detect

auto-detect active analytics, pixels, tag managers, and tools on a website or project.

fk detect <url> [flags]
FlagTypeRequiredDescription
--productstringnoproject slug (uses project domain if url omitted)
--urlstringnowebsite url to scan (e.g. https://motormerchants.com.au)
fk detect https://motormerchants.com.au
fk detect --product demo-product

fk connect

connect ga4 | gtm | google-ads | gsc (browser/SA), or semrush | clarity | posthog | opinly | bing | ahrefs | meta-ads | meta-ads-filter | linkedin-ads | meta-social | x-social | stripe (token).

fk connect <source> [flags]
FlagTypeRequiredDescription
--productstringyesproject slug
--prefixesstringnocomma-separated campaign name prefixes (meta-ads-filter only)
fk connect ga4 --product demo
fk connect google-sa --product demo
fk connect semrush --product demo
fk connect clarity --product demo
fk connect posthog --product demo
fk connect opinly --product demo
fk connect bing --product demo
fk connect ahrefs --product demo
fk connect stripe --product demo
fk connect meta-ads-filter --product demo --prefixes META_

fk connect test

verify a connected source can actually deliver data.

fk connect test <source> [flags]
FlagTypeRequiredDescription
--productstringyesproject slug
fk connect test ga4 --product demo

fk connect sync

sync mysql | postgres | mongo | ga4 | posthog | opinly | gsc | bing | meta-ads | linkedin-ads | meta-social | x-social | stripe now.

fk connect sync <source> [flags]
FlagTypeRequiredDescription
--productstringyesproject slug
fk connect sync mysql --product motor-merchants

fk status

pipeline health: jobs, sources, queue backlog.

fk status
fk status

fk track

send a first-party funnel event (server-side, uses your api key).

fk track [flags]
FlagTypeRequiredDescription
--productstringyesproject slug
--stagestringyescanonical stage (lead, converted, …)
--dedupestringyesidempotency key (required)
--namestringnofree-form event name
--emailstringnoidentity email
--external-idstringnoidentity external id
--scorestringnolead grade (A, B, C, D) or numeric score
--centsnumbernovalue in integer cents
--currencystringnoiso currency (defaults to the project)
fk track --product demo --stage converted --dedupe order-123 --cents 9900 --name purchase

fk tracking-key

show the publishable write key and install snippets.

fk tracking-key [flags]
FlagTypeRequiredDescription
--productstringyesproject slug
fk tracking-key --product demo

fk tracking-key rotate

mint a new write key and revoke the previous one.

fk tracking-key rotate [flags]
FlagTypeRequiredDescription
--productstringyesproject slug
fk tracking-key rotate --product demo

fk tracking-key deploy

publish the snippet via google tag manager (asks for typed confirmation).

fk tracking-key deploy [flags]
FlagTypeRequiredDescription
--productstringyesproject slug
fk tracking-key deploy --product demo

fk ads

roi by campaign, ad group, keyword or creative — spend, revenue, roas, cac.

fk ads [flags]
FlagTypeRequiredDescription
--productstringyesproject slug
--levelstringnocampaign | ad_group | keyword | ad (default campaign)
--daysnumbernowindow in days (default 30)
fk ads --product demo --level keyword
fk ads --product demo --level ad --days 7

fk ads url-suffix

show whether google ads tags landing urls with the params keyword-level roi needs.

fk ads url-suffix [flags]
FlagTypeRequiredDescription
--productstringyesproject slug
fk ads url-suffix --product demo

fk ads url-suffix apply

add those params to the google ads account (asks for typed confirmation — changes every ad’s landing url).

fk ads url-suffix apply [flags]
FlagTypeRequiredDescription
--productstringyesproject slug
fk ads url-suffix apply --product demo

fk portfolio

one row per project: spend, revenue, cac, ltv:cac.

fk portfolio
fk portfolio

fk queue list

pending keeper cards.

fk queue list
fk queue list

fk queue approve

approve a card (asks for typed confirmation — this can move money).

fk queue approve <id>
fk queue approve 3f1c…

fk queue reject

dismiss a card.

fk queue reject <id>
fk queue reject 3f1c…

fk queue snooze

snooze a card.

fk queue snooze <id> [flags]
FlagTypeRequiredDescription
--hoursnumbernosnooze duration (default 24)
fk queue snooze 3f1c… --hours 48

fk growth

ranked next actions that will generate revenue or growth (activation leaks, friction, wasted spend).

fk growth [flags]
FlagTypeRequiredDescription
--productstringyesproject slug
--daysnumbernolookback window (default 30)
--toolstringnocursor | claude | lovable | bolt | v0 — shapes the prompt text (default cursor)
fk growth --product demo-product
fk growth --product demo-product --tool claude

fk social

organic social: followers, reach, engagement, top posts (Meta + X).

fk social [flags]
FlagTypeRequiredDescription
--productstringyesproject slug
--daysnumbernowindow in days (default 30)
fk social --product demo-product

fk prompt

print the full coding-agent prompt for one growth action.

fk prompt <id> [flags]
FlagTypeRequiredDescription
--productstringyesproject slug
--toolstringnocursor | claude | lovable | bolt | v0 (default cursor)
--daysnumbernolookback window (default 30)
fk prompt activation.dropoff.signup-activated --product demo-product
fk prompt activation.dropoff.signup-activated --product demo-product --tool claude

fk scorecard

weekly growth scorecard (metrics × ISO weeks, auto-filled from the warehouse).

fk scorecard [flags]
FlagTypeRequiredDescription
--productstringyesproject slug
--weeksnumbernonumber of weeks (default 12)
fk scorecard --product demo-product
fk scorecard --product demo-product --weeks 8

fk scorecard set

write a manual scorecard cell (week_start is the ISO Monday).

fk scorecard set [flags]
FlagTypeRequiredDescription
--productstringyesproject slug
--metricstringyesmetric key, e.g. blog.posts
--weekstringyesISO week Monday YYYY-MM-DD
--valuenumberyesnumeric value (omit to clear)
fk scorecard set --product demo-product --metric blog.posts --week 2026-08-18 --value 2

fk scorecard export

download the scorecard as csv (growth plan).

fk scorecard export [flags]
FlagTypeRequiredDescription
--productstringyesproject slug
--weeksnumbernonumber of weeks (default 12)
--outstringnowrite to this file instead of stdout
fk scorecard export --product demo-product --out scorecard.csv