RECIPE: Create a Wix Form

Download skill
Copy

Create a form on a Wix site that appears in the Forms & Submissions dashboard. The form collects visitor information (e.g., name, email) and can automatically upsert contacts on submission.


Create the form

Call the Create Form endpoint with the wix.form_app.form namespace. The Wix Forms app (appDefId: 14ce1214-b278-a7e4-1373-00cebd1bef7c) is usually already installed on sites.

Copy

The response includes the created form with its id. Store this ID to manage the form later.

Verify the form in the dashboard: https://manage.wix.com/dashboard/{siteId}/forms

Key Details

Field Configuration

  • All id fields (for formFields, steps) and all fieldId references in the layout must be valid UUIDs. Generate fresh UUIDs for each form you create — do not reuse the example UUIDs above.
  • Each field needs a unique id and a unique target value. The target is used to map submissions to contact fields.
  • CRITICAL: The identifier must be a recognized Wix value. Custom identifiers like "product_name" or "color_preference" will cause the field to be silently dropped from the form — no error is thrown. For any generic/custom text field, use "TEXT_INPUT" as the identifier and set the display name via the label property in textInputOptions.
  • For plain text fields, use "format": "UNKNOWN_FORMAT". For email fields, use "format": "EMAIL". For phone fields, use "format": "PHONE". Valid format values: UNKNOWN_FORMAT, DATE, TIME, DATE_TIME, EMAIL, URL, UUID, PHONE, URI, HOSTNAME, COLOR_HEX, CURRENCY, LANGUAGE, DATE_OPTIONAL_TIME.
  • The submit button is a DISPLAY field with identifier: "SUBMIT_BUTTON".

Field Types Reference

IdentifiercomponentTypeformatUse case
TEXT_INPUTTEXT_INPUTUNKNOWN_FORMATGeneric single-line text (use label for display name)
CONTACTS_FIRST_NAMETEXT_INPUTUNKNOWN_FORMATContact first name
CONTACTS_LAST_NAMETEXT_INPUTUNKNOWN_FORMATContact last name
CONTACTS_EMAILTEXT_INPUTEMAILContact email
CONTACTS_PHONETEXT_INPUTPHONEContact phone
SUBMIT_BUTTONN/A (DISPLAY field)N/ASubmit button

Note: LONG_TEXT_INPUT is not supported as a componentType via REST — it throws INVALID_ARGUMENT. Use TEXT_INPUT for all text fields.

Layout

The steps[].layout.large.items array controls how fields are positioned:

  • row and column set the position (0-based grid)
  • width sets the column span (max 12 for full width, 6 for half)
  • height is typically 1

Post-Submission Triggers

The postSubmissionTriggers.upsertContact object maps form field targets to contact fields, so each submission automatically creates or updates a contact. The fieldsMapping keys must match the target values from the form fields.

Prerequisites

The Wix Forms app (appDefId: 14ce1214-b278-a7e4-1373-00cebd1bef7c) must be installed on the site. It is usually pre-installed, but if the API returns a "missing installed app" error, install it first using the Install Wix Apps recipe.

Troubleshooting

ErrorCauseFix
Unrecognized value passed for enumInvalid componentType value (e.g., LONG_TEXT_INPUT)Use only componentType values from the schema: TEXT_INPUT, RADIO_GROUP, DROPDOWN, DATE_TIME, PHONE_INPUT, DATE_INPUT, TIME_INPUT, DATE_PICKER, PASSWORD
Field silently missing from created formCustom identifier value (e.g., "product_name")Use a recognized identifier like TEXT_INPUT and set display name via label
Permissions for given namespace not foundwix.form_app.form namespace not activeEnsure the Wix Forms app is installed; try creating a form through the UI first to activate the namespace
missing installed appWix Forms app not installedInstall app 14ce1214-b278-a7e4-1373-00cebd1bef7c via the Install Wix Apps recipe
Did this help?