Sign Customiser

Applies an RFC 7396 JSON Merge Patch to one form: properties omitted from the body are unchanged, and null clears a nullable property. Arrays replace wholesale, so sending fields replaces the whole field document and sending recipient_emails replaces the whole receiver list.

PATCH/api/v3/customisers/{customiser_id}/forms/{form_id}

Overview

An empty object {} is a valid no-op, and an empty fields list clears the field document. The create operation documents the whole field schema; the same properties and the same per-input-type rules apply here. Read-only and unknown properties are rejected. Requires customisers:write. Changing recipient_emails also clears any suppression the mail transport recorded against the old receivers and resumes delivery, which is the same repair the merchant admin performs. An Idempotency-Key is optional here: sending one makes the update safe to retry (an exact repeat replays the original response; the same key with a different body is a 409). The update clears the customiser's cached storefront configuration and runs the advisory language sync, and never regenerates Shopify products, product images, or the product cache.

Authorisation

Bearer token required. Include it in theAuthorization header.

Required scope: customisers:write

Path parameters

customiser_idstringpathrequired

The customiser id.

Example: 1

form_idstringpathrequired

The form id.

Example: 7

Request body

fieldsarraybody
namestringbody
descriptionstringbody
recipient_emailsarraybody
redirect_urlstringbody

Request body example

application/json
{
  "fields": [
    {
      "name": "Email",
      "input_type": "email"
    }
  ],
  "name": "Request a quote",
  "description": "Tell us about your project",
  "recipient_emails": [
    "sales@example.com"
  ],
  "redirect_url": "https://example.com/thank-you"
}
Update a form
curl https://web.signcustomiser.com/api/v3/customisers/1/forms/7 \
  --request PATCH \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "fields": [
    {
      "name": "Email",
      "input_type": "email"
    }
  ],
  "name": "Request a quote",
  "description": "Tell us about your project",
  "recipient_emails": [
    "sales@example.com"
  ],
  "redirect_url": "https://example.com/thank-you"
}'
Response
{
  "data": {
    "object": "form",
    "id": 7,
    "customiser_id": 42,
    "name": "Request a quote",
    "description": "Tell us about your project",
    "form_type": "quote",
    "button_label": "Send",
    "subject": "New quote request",
    "recipient_emails": [
      "sales@example.com"
    ],
    "save_customer_details": true,
    "post_submission_action": "default",
    "redirect_url": null,
    "emails_enabled": true,
    "suppressed_emails": [],
    "fields": [
      {
        "field_id": "3f2a9c1e-5d6b-4a7c-8e9f-0a1b2c3d4e5f",
        "name": "Email",
        "input_type": "email",
        "required": true,
        "customer_field": "email",
        "info": null,
        "placeholder": null,
        "checkbox_value": null,
        "min": null,
        "max": null,
        "min_date": null,
        "max_date": null,
        "allow_multiple": false,
        "reply_to": true,
        "options": []
      }
    ],
    "sort_order": 1,
    "created_at": "2026-08-14T00:00:00Z",
    "updated_at": "2026-08-14T00:05:00Z"
  },
  "links": {
    "self": "https://web.signcustomiser.com/api/v3/customisers/42/forms/7",
    "documentation": "https://www.signcustomiser.com/help/api/"
  },
  "meta": {
    "api_version": "v3",
    "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
  }
}