The only major form builder with a real CLI. Declare your forms in YAML, commit them to git, review them in PRs, deploy them with ff push. Same workflow your code uses.
Requires Pro.
npm install -g @fantasticforms/cli
ff login --token ff_live_xxxxxxxxxxxx
ff init # scaffold form.yaml
ff push form.yaml # deploy
ff pull <form-id> -o form.yaml
ff listTally, Typeform, Jotform — all GUI-only. Fantastic Forms gives you the same elegant builder, plus a CLI for when clicking gets old.
YAML in your repo. Reviews, history, blame, rollback — all the things git already gives you for code.
`ff validate` exits 1 on errors. Drop it in your pre-commit hook or your GitHub Action.
Reuses your Pro API key. No new auth model, no new endpoints. Hits the same backend the web app does.
API keys are gated to the Pro plan. Free-plan keys are rejected with HTTP 402.
All 44+ field types from the Form Builder map cleanly to YAML. The CLI ships with a starter template and a schema validator. Pull any existing form into YAML to use as a reference:
ff pull <form-id> -o my-form.yaml# form.yaml — commit this to git
title: Customer feedback
status: published
pages:
- id: p1
title: Page 1
elements:
- id: name
type: full_name
label: What's your name?
required: true
- id: rating
type: rating
label: How likely are you to recommend us?
required: true
- id: feedback
type: long_text
label: Tell us more
required: false| Command | What it does |
|---|---|
| ff login --token <key> | Save your Pro API key (chmod 600 on the config file). |
| ff logout | Forget your saved key. |
| ff whoami | Show which account is logged in. |
| ff init [--from <form-id>] | Scaffold a form.yaml, or pull an existing form into one. |
| ff push [file] [--dry-run] | Create or update a form from YAML. |
| ff pull <form-id> [-o file] | Export a form to YAML (stdout or file). |
| ff list | List your forms. |
| ff validate [file] | Schema-check a YAML file. Exits 1 on errors. |
| ff submissions list <form-id> [-n 50] | Recent submissions, newest first. |
| ff submissions export <form-id> -f csv | Bulk export to CSV or JSON. |
| ff webhook test <url> | POST a realistic fake submission to debug your endpoint. |
Drop `ff validate forms/*.yaml` into your pull-request workflow. Catch broken field types, missing labels, and orphaned conditional rules before they ever reach production.
Zero runtime, zero infrastructure — the validator runs entirely client-side from the npm package.
# .github/workflows/forms.yml
name: Validate forms
on: [pull_request]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 20 }
- run: npm install -g @fantasticforms/cli
- run: ff validate forms/*.yamlGenerate a Pro API key and install the CLI in under 60 seconds.