Pricing Academy Blog
Funnel builder CLI and API

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/cliNode.js 18 or newerIncluded on every plan
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
Build with AI agents

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 init writes CLAUDE.md, AGENTS.md and a Cursor rule
  • --json on every command, logs on stderr
  • Stable exit codes an agent can branch on
  • ef mcp serves 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
A terminal session: ef pull syncs the brand, claude -p asks Claude Code to change the hero button text in pages/lp-a.ef, Claude Code confirms the one-line change, and ef diff shows the page as changed and ready to push
Pull, let Claude Code edit, check the diff, then push.
Version control and CI/CD

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 diff shows drift before you push
  • --dry-run prints the plan and changes nothing
  • --draft for 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 }}
Analytics from the CLI

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
  • --json for scripts, reports and agents
  • Days counted in the timezone you pass
Terminal running ef stats by utm_source: revenue and sessions for the last 7 days per traffic source, facebook, google, youtube, newsletter and tiktok
Built for scripts

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
FAQ

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.

Put your funnel in git today

Create a brand, run ef init and pull it into your terminal.