Forms that carry
your client's brand
Pick a layout, override the design tokens, and put the form on a page, on its own address, or on somebody else's site. Answers land in your CRM as they arrive. No CSV to reconcile, and no embedded box that looks nothing like the site around it.
Six layouts, then every token is yours
Start from a preset — card-light, fullscreen-dark, conversational-left, form-on-image, minimal-print or agency-bold — then override the colours, fonts, radii and spacing without writing CSS. Drop a background image or a short clip behind an individual question when a quiz should feel like a landing page.
Six Presets
Starting pointA preset is where you begin, not where you are stuck. Every value on top of it is editable.
Safe By Default
Shadow DOMDesign values from an editor or an agent run through a sanitiser first, so a stray value cannot escape the form and bleed into the host page.
25 field types, actually typed
Not one text box with a regex in front of it. A place field returns structured address components, not a free-text city. A currency field carries its ISO code. An address field comes back as street, city, region, postal code and country you can write straight into a column.
Highlighted types are anchored to IDAP™, so each one emits a value shaped for a specific column in your normalised data.
Rules that react to answers
Show a field, hide it, or jump somewhere else based on what someone already answered. Variables carry a running value through the form. Hidden fields and URL prefill let you carry campaign context in, and recall lets you say the person's own answer back to them later.
The rule below sends bigger teams straight to a call instead of the self-serve branch. Each side of a comparison is a typed operand — {"type": …, "value": …} — and a constant's value is written as a string even when you are comparing numbers.
{
"trigger_field": "team_size",
"condition": {
"op": "greater_than",
"left": { "type": "field", "value": "team_size" },
"right": { "type": "constant", "value": "25" }
},
"actions": [
{ "type": "jump", "target": "field", "target_id": "book_a_call" }
]
}
Answers land in the CRM, not a spreadsheet
Map each field to the CRM column you want it in. On submit the answer is written to the form's own responses table and into your normalised CRM in the same pass. Every row shows where it got to, and a write that failed for a temporary reason can be replayed from the Responses tab.
Status Per Row
pending · written · failedYou can see which answers reached the CRM without opening a log.
One-Click Replay
RecoverableA temporary failure is a button, not a support ticket and a re-import.
One form, three places to put it
The same definition renders on a page of your site, at its own shareable address, or inside someone else's site — there you place a mount element where the form should appear and load the script once. There is nothing to keep in sync, because there is only one form.
// 1. Inline on a page of your own site
{% form flow_id="<flow_id>" %}
// 2. Its own address, on your domain
https://your-site.com/f/<flow_id>
// 3. Someone else's site — a mount element, then the loader
<div data-spiderflow-flow="<flow_id>"
data-spiderflow-mode="inline"></div>
<script src="https://embed.spideriq.ai/v1/loader.js" async></script>
Build it in the dashboard, or let an agent build it
The editor, the command line, the MCP tools and the IDE extension all write the same JSON shape and validate it the same way. So you can start a form in the dashboard, have an agent add fifteen fields to it from your terminal, and open it back up in the editor without anything drifting. Most form builders ship the UI first and the agent surface a year later; here they were one release.
A form is one kind of flow
Forms, booking pages and multi-step funnels are the same primitive with a different kind. They share the field set, the logic engine, the design layer and the canonical address. Which means the contact form you build this afternoon and the booking page you build next month are not two products you have to learn twice.
Highlighted kinds are the ones you can create today.