Sign Customiser

Use this as the product creation callback for custom integrations. When a customer finishes a design, Sign Customiser POSTs this payload to the create-product URL configured on your custom integration. Verify the signature, create the product in your own platform, then return a 200 JSON response containing the external_id you will later send in POST /api/v2/orders .

WEBHOOK product:created

Verification

Sign Customiser delivers this webhook to your own endpoint and signs the payload with x-webhook-timestamp and x-webhook-signature. Validate both values before processing the payload.

Delivery headers

x-webhook-timestamp string header required

Unix timestamp used when generating the delivery signature.

Example: 1704067200

x-webhook-signature string header required

SHA-256 HMAC signature for the product:created payload.

Example: YOUR_GENERATED_SIGNATURE

Payload

product object body

Payload example

application/json
{
  "product": {
    "product_id": 1,
    "title": "Custom Neon: Hello World",
    "description": "Text: Hello World\nColour: Red\nFont: Comics",
    "description_html": "<p>Text: Hello World</p>\n<p>Colour: Red</p>\n<p>Font: Comics</p>",
    "external_id": "1234",
    "external_data": {},
    "price": 10000,
    "compare_price": 15000,
    "customiser_id": 1,
    "logo_upload_id": null,
    "product_image_url": "https://d1no4rdxmwcuog.cloudfront.net/default/app-images/demonstration_image_1.jpg",
    "uploads": [
      {
        "url": "https://d1no4rdxmwcuog.cloudfront.net/default/app-images/demonstration_image_1.jpg",
        "type": "product_image"
      }
    ],
    "created_at": "2024-01-01T00:00:00.000000Z",
    "updated_at": "2024-01-01T00:00:00.000000Z"
  }
}
Product created
curl https://your-app.example.com/sign-customiser/webhooks \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'x-webhook-timestamp: 1704067200' \
  --header 'x-webhook-signature: YOUR_GENERATED_SIGNATURE' \
  --data '{
  "product": {
    "product_id": 1,
    "title": "Custom Neon: Hello World",
    "description": "Text: Hello World\nColour: Red\nFont: Comics",
    "description_html": "<p>Text: Hello World</p>\n<p>Colour: Red</p>\n<p>Font: Comics</p>",
    "external_id": "1234",
    "external_data": {},
    "price": 10000,
    "compare_price": 15000,
    "customiser_id": 1,
    "logo_upload_id": null,
    "product_image_url": "https://d1no4rdxmwcuog.cloudfront.net/default/app-images/demonstration_image_1.jpg",
    "uploads": [
      {
        "url": "https://d1no4rdxmwcuog.cloudfront.net/default/app-images/demonstration_image_1.jpg",
        "type": "product_image"
      }
    ],
    "created_at": "2024-01-01T00:00:00.000000Z",
    "updated_at": "2024-01-01T00:00:00.000000Z"
  }
}'
Response to return 200
{
  "external_id": "your-product-id-123"
}