A funnel builder you can run from code
Meet ef. Pull every page, component and script into a folder, edit them in any editor or with an AI agent, and push them live.
npm i -g @elasticfunnels/cli ef init # sign in through the browser, bind this folder to a brand ef pull # pages, components, scripts, assets and variables ef lint pages/offer.ef # catch template errors before they reach the page ef push pages/offer.ef # publish; refused if the server changed since your pull ef stats by page --json # how it performed, as JSON
Your whole brand as files
The CLI calls the same API the app uses. Everything you can click, you can script. Part of the ElasticFunnels platform.
Pages and components
.ef files you pull, edit, lint and push, one file or a whole folder.
Split tests and page events
Event graphs as JSON, validated by the server before they go live.
CRM, forms and backend scripts
Entities, pipelines, collections and server-side JavaScript.
Analytics
ef stats for KPIs, breakdowns and split-test verdicts.
Products, assets, domains and SEO
Variables, tags, sitemap and llms.txt. See what shipped in the changelog.
Let Claude Code build the funnel
Point Claude Code, Codex or Cursor at the folder. It reads the page, edits the markup and publishes with ef push.
ef initwrites CLAUDE.md, AGENTS.md and a Cursor rule--jsonon every command, logs on stderr- Stable exit codes an agent can branch on
ef mcpserves the brand to Claude Desktop
ef claude # CLAUDE.md, skills and a session hook for Claude Code ef codex # AGENTS.md for Codex ef cursor # a Cursor project rule ef mcp # serve the brand to Claude Desktop over MCP

Review funnels like code
Keep pages in git, review them in a pull request and publish on merge. Roll back by reverting a commit.
ef diffshows drift before you push--dry-runprints the plan and changes nothing--draftfor previews, published by default
# .github/workflows/deploy.yml
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm i -g @elasticfunnels/cli
- run: ef lint && ef push pages/offer.ef
env:
EF_API_KEY: ${{ secrets.EF_API_KEY }}
Read your numbers from the terminal
ef stats prints headline metrics for any date range, then breaks them down by page, product, country, UTM source or day.
- Split-test results with the app's significance test
--jsonfor scripts, reports and agents- Days counted in the timezone you pass

Exit codes you can trust
Every command accepts --json. Data goes to stdout and logs to stderr, so pipes stay clean.
- 0
- Success
- 2
- Usage error
- 3
- Authentication
- 4
- Conflict: the server changed
- 5
- Network
- 6
- Server error
- 7
- Not found
- 130
- Interrupted, state saved
Everything about the CLI
Funnel builder CLI FAQ
Can I build landing pages with Claude Code?
Yes. Run ef init to bind a folder, then let Claude Code run ef pull, edit the .ef files and ef push. It creates, edits and publishes pages the same way you would by hand. ef init also writes a CLAUDE.md, an AGENTS.md for Codex and a Cursor rule that teach the agent the commands.
Does the ElasticFunnels CLI work with Cursor?
Yes. The Cursor agent runs ef from the terminal, and ef install-highlighter adds .ef syntax highlighting to Cursor, VS Code and VSCodium.
How does an agent avoid overwriting newer changes?
ef push checks whether the server changed since your last pull. If it did, the push is refused with exit code 4 and nothing is written. ef pull --merge then does a git-style three-way merge.
Can I script split tests from the CLI?
Yes. ef pages events pulls a page's event graph (split tests, redirects, conditions, popups) as JSON, validates it on the server and pushes it back. ef stats split reads a test's result with the significance result the app computed.
How do I sign in on a CI runner?
ef init signs in through your browser by default. On a runner, set EF_API_KEY in the environment instead. The stored key lives in .ef/auth with owner-only permissions and is never printed.
What can the CLI manage besides pages?
Components, backend scripts, assets, products, brand variables, CRM records, form collections, funnel graphs, tags, domains, sitemap and llms.txt settings, and analytics.