Start with a good question.
Start from scratch, choose a template, or describe an idea. Edit question titles, descriptions, options and placeholders. Set required fields and simple display conditions below each question.
In a question title, Enter adds the next question and Shift+Enter keeps a line break. Select the title and type / to choose a block type. Use the side + to insert a block, and the handle to reorder or open its settings.
Use Design to adjust colors, typography, corners and layout. Preview desktop and mobile versions before publishing.
Guest drafts stay in this browser. Sign in and choose Import drafts to bring them into your account.
Ready when you are.
Drafts and published versions are separate. Changes stay private until you publish again. Set a deadline and response limit in Form settings.
Explore individual responses, choice summaries and search results. CSV exports include the responses you have loaded. Closing collection keeps existing responses.
Recent saved versions can be restored as drafts. Export a form as JSON to move or reuse its structure.
Keep your spreadsheet in the loop.
Google Sheets uses an Apps Script web app. Download the script in Integrations, install it in your sheet, then save the web app URL and shared secret. You must complete Google authorization yourself.
Responses are saved in Forme before delivery. Retry failed syncs from response details. Submission IDs prevent duplicate rows in the same sheet.
Open integrations →From an idea to an editable form.
Describe your goal and the information you need. AI creates a draft for you to review and edit. It does not publish automatically. The interface language sets the default output language; you can explicitly request another.
The editor can also review existing questions for clarity and response effort. Apply suggestions individually. Respondent answers are not sent to AI.
AI uses Vercel AI Gateway. The current default is google/gemini-2.5-flash, configurable with AI_MODEL. Limits: 3 requests per minute and 20 per day per account.
Build with Forme.
Create a personal key in Integrations. Send Authorization: Bearer fm_… with each request. A key can access only its owner’s forms. Keep keys out of client-side code.
Use lib/schema.ts in the repository for the document structure. Include the current revision when saving. A 409 response means you should read the latest version and merge your changes.
GET /api/v1/forms PUT /api/v1/forms GET /api/v1/forms/:id POST /api/v1/forms/:id GET /api/v1/forms/:id/responses GET /api/v1/forms/:id/versions DELETE /api/v1/forms/:id
Meet your tools where they are.
The Streamable HTTP endpoint is /api/mcp. Tools: list_forms, get_form, create_form, update_form, publish_form and list_responses.
Copy the Claude Code command from Integrations. Codex and other MCP clients can use the same URL and Bearer header. For stdio, run connectors/mcp-server.mjs with FORME_URL and FORME_API_KEY.
Plugin source and a form-building skill are in plugins/forme. This is a source package, not a public marketplace listing.
What is included.
The current release includes individual accounts, form editing and publishing, responses, AI, API/MCP, and Apps Script connections.
File uploads, payments, signatures, advanced branching, quizzes, team editing and one-click Google OAuth are not included yet. Track the roadmap in docs/FEATURE-RESEARCH.md.
Published links show the published form, not private responses or integration secrets. API keys are hashed; integration secrets are encrypted on the server.