Skip to main content

About

Programmatic access to lead-capture (embed) forms: create and update forms, read submissions as they come in, and pull the analytics behind the app’s form dashboards — conversion funnels, traffic sources, engagement time, and lead routing. All operations go through the developer API gateway — one endpoint, called by operationId. If you haven’t set up a key yet, start with the Developer API Overview.

Operations

Forms and submissions (READ scope)

Form analytics (READ scope)

Writing forms (WRITE scope)

Prefer deactivating over deletingdeleteForm permanently destroys the form’s entire submission history. To simply stop collecting leads, use updateForm with status: INACTIVE.
fieldConfig validationA single-page form uses a flat field array. A multi-step form uses { fields, steps, showStepProgress }; each step has a unique id, required builder-facing name, and optional visitor-facing title, subtitle, and ctaLabel. Fields point to a page with stepId; an unknown step is rejected. Two or more steps render the paged experience.Field type is one of text | email | phone | number | dollar | dropdown | multiselect | textarea | checkbox | address | calendar; mapping is firstName | lastName | fullName | email | phone | address | note | none | customField:<id>; width is full | half | third. Fields may also carry hideLabel, validation rules, dropdown-to-custom-field option mappings, and calendarConfig. A calendar field without calendarConfig renders no picker, so always provide it. At least one field is required and at most one calendar field is allowed. Malformed entries are rejected with a validation error naming the field.
Styling is a full replacementstyleConfig controls colors, typography, spacing, borders, inputs, buttons, form width/padding/shadow, dividers, and sanitized custom CSS on both hosted and embedded forms. Read the current object with getForm, merge locally, then send the whole result; {} resets defaults. Unknown keys are ignored at render time, so use the supported key vocabulary in updateForm’s discovery detail rather than guessing property names.
Organization guardForm operations are org-guarded on the formId (or id on updateForm): a form outside your organization returns 403 forbidden. listForms and createForm take no cross-org id — they list / create under your org. See Authorization for the model.

Example

Pull this month’s conversion funnel for one form:
Full variable schemas, response shapes, and worked examples for every operation are available from the discovery endpoint.