> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sequenzy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Submit Saved Form

> Submit a saved signup form and create or update a subscriber.

# Submit Saved Form

You can submit a saved signup form created in the dashboard without an API key. The endpoint accepts `application/x-www-form-urlencoded` form posts and JSON.

The form's stored settings are the source of truth for audience targeting (lists, tags) and success behavior (success message or redirect URL). When you change those settings in the dashboard, deployed embeds pick them up automatically - no re-embedding needed. List, tag, and redirect values in the request are ignored.

## Request

<ParamField path="formId" type="string" required>
  The saved form ID. You can find it in the form's embed code on the Forms
  screen.
</ParamField>

<ParamField body="email" type="string" required>
  The subscriber's email address.
</ParamField>

<ParamField body="firstName" type="string">
  The subscriber's first name.
</ParamField>

<ParamField body="lastName" type="string">
  The subscriber's last name.
</ParamField>

<ParamField body="phone" type="string">
  The subscriber's phone number when the saved form includes a phone field. It
  is normalized onto the base subscriber profile without changing SMS consent.
</ParamField>

<ParamField body="customAttributes[fieldKey]" type="string">
  Value for a custom field configured on the saved form. The `fieldKey` is
  stored as a subscriber custom attribute, for example
  `customAttributes[nickname]=Ace`.
</ParamField>

<ParamField body="customAttributes" type="object">
  JSON alternative for custom integrations. Saved forms only accept keys that
  are configured as custom fields on the form.
</ParamField>

<ParamField body="website" type="string">
  Honeypot field. Leave it empty.
</ParamField>

<Note>
  Generated saved-form HTML renders built-in name fields first, then email, then
  configured custom fields before the submit button. Custom fields cannot
  currently be interleaved with built-in fields.
</Note>

```bash theme={null}
curl -X POST "https://api.sequenzy.com/api/v1/forms/form_abc123" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "email=user@example.com" \
  --data-urlencode "customAttributes[nickname]=Ace"
```

<Note>
  Existing company-scoped saved form submission URLs continue to work.
</Note>

## Responses

Native HTML form posts that accept `text/html` receive a hosted confirmation page that mirrors the form's success screen (checkmark, heading, and message) instead of JSON. Forms configured to redirect respond with a `303` to the stored redirect URL.

<ResponseExample>
  ```json 200 theme={null}
  {"success": true}
  ```

  ```text 303 theme={null}
  Location: https://example.com/thank-you
  ```

  ```json 400 theme={null}
  { "success": false, "message": "Please enter a valid email address" }
  ```

  ```json 400 theme={null}
  { "success": false, "message": "This email address cannot be subscribed" }
  ```

  ```json 404 theme={null}
  { "success": false, "message": "Invalid form configuration" }
  ```

  ```json 429 theme={null}
  { "success": false, "message": "Too many requests. Please try again later." }
  ```

  ```json 500 theme={null}
  { "success": false, "message": "An error occurred. Please try again." }
  ```
</ResponseExample>
