Create a form
forms_createCreate a form or survey with its own public page at https://cncto.co/f/, which anyone can open and answer; share that link. Field types: short_text, long_text, email, phone (default_country), url, number (min, max, integer), choice and multi_choice (options; multi_choice also min_selections, max_selections), rating (scale 3 to 10, default 5; low_label, high_label), nps (0 to 10; low_label, high_label), date (include_time for a time too, range for a first and a last day, earliest and latest as "2026-11-01" or "today", "today+7", "today-30"; answers read 2026-11-03, 2026-11-03T09:30, 2026-11-03/2026-11-07), yes_no, consent (a checkbox; its label may hold one link written text), statement (text only, no answer). Every field takes type, label, help, required, an id (generated from the label when left out; answers are keyed by it) and show_if {"field": "<an earlier field's id>", "equals": } to show it only when that answer was given. Each response received costs $0.01, up to 10,000 a month per account. Costs $0.01 per call; nothing if it fails.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| fields | Yes | The questions in order. When changing a form, this replaces the whole list. | |
| close_at | No | Stop taking responses at this time (ISO 8601, like 2026-12-31T23:59:00Z; UTC when no offset is given). Empty or null: never. | |
| description | No | Shown under the title. | |
| on_response | No | What each response also does on its own, while you are away ($0.01 per action done): {"action": "open_ticket", "priority": "normal"} opens a help desk ticket for the respondent; {"action": "create_deal", "pipeline": "Sales", "stage": "New", "amount_field": "budget"} creates a deal with them as contact; {"action": "add_row", "table": "Leads", "columns": {"Email": "email", "Budget": "budget"}} adds a row, each column from a field id. [] or null: none. | |
| save_to_crm | No | Save the person behind each response as a CRM contact. The first email field is the email; a short_text field with id name or full_name (or first_name and last_name) is the name; the first phone field the phone. An existing contact only gets empty fields filled. | |
| notify_email | No | Email this address about new responses: at most one email a minute per form, later responses grouped into the next one. Empty or null: off. | |
| redirect_url | No | An https:// page to send people to after they submit. Empty or null: none. | |
| submit_label | No | The button's words (default "Submit"). | |
| hidden_fields | No | Link values kept with each response: ["ref", "utm_source"] keeps them from https://cncto.co/f/<slug>?ref=abc&utm_source=newsletter. | |
| max_responses | No | Stop after this many responses. 0 or null: no limit. | |
| thank_you_title | No | Shown after sending (default "Thank you"). | |
| thank_you_message | No | ||
| confirm_to_respondent | No | Email each respondent their answers in the brand kit (form_confirmation wording), to the address they typed in the first email field. $0.002 each; paid accounts only; at most three a day to one address. |