Appearance
Webhooks
Webhooks send a JSON POST request to your URL when a user completes a configured submit action. Configure them per submit button in Manager.
Enable a webhook
- Open Manager → Configurations → your product.
- Go to Submission & tracking → Data Submissions.
- Select or create a submission output (linked to a template).
- On a submit button, enable POST to a URL and enter your endpoint URL.
- Save the product.
You can combine webhook with PDF, email, and postMessage on the same or different buttons.
When webhooks fire
Webhooks are sent from the add-quote API when the user submits through a button that has webhook enabled. Two paths exist:
Quotation path (contact form + PDF/email flow)
Creates a quotation record. Webhook event:
json
{
"event": "quotation.created",
"source": "iconfigure",
"timestamp": "2026-06-17T12:00:00.000Z",
"data": {
"quotation_id": "uuid",
"quotation_number": 1234,
"pdf_url": "https://...",
"total_price": 1250.5,
"language": "NL",
"status": 0,
"created_at": "2026-06-17T12:00:00.000Z",
"customer": {
"first_name": "Jane",
"last_name": "Doe",
"email": "jane@example.com",
"phone": 612345678,
"address": {}
},
"extra_fields": {},
"company": {
"id": "company-uuid",
"name": "Your Company",
"email": "info@example.com"
},
"product_id": "product-uuid",
"dealer_id": null,
"dealer_product_id": null,
"items": []
}
}Cart / no-contact path
Used when the button has no PDF and no email (webhook and/or postMessage only). Skips quotation creation. Webhook event:
json
{
"event": "cart.action",
"source": "iconfigure",
"timestamp": "2026-06-17T12:00:00.000Z",
"data": {
"button_id": "button-internal-id",
"product_id": "product-uuid",
"dealer_id": null,
"dealer_product_id": null,
"language": "NL",
"extra_fields": {},
"items": []
}
}Enriched items array
Each item in data.items includes resolved feature names and selected subfeatures:
json
{
"product_id": "uuid",
"product_name": "Table configurator",
"image": "https://.../temporary/.../screenshot.png",
"items": [
{
"repetitions": [
[
{
"ID": "material",
"feature_name": "Material",
"type": "single_selection",
"value": "oak",
"selected": {
"ID": "oak",
"name": "Oak",
"custom_properties": {}
}
}
]
]
}
]
}HTTP details
| Property | Value |
|---|---|
| Method | POST |
| Content-Type | application/json |
| Body | JSON payload above |
| Retries | None (fire-and-forget) |
| Duplicate URLs | Deduplicated per request |
Your endpoint should respond with a 2xx status. Failures are logged server-side but not retried automatically.
Testing
- Create a test endpoint at webhook.site or an n8n/Zapier webhook.
- Paste the URL on a test submit button.
- Complete a configurator submission.
- Inspect the received JSON.
Legacy webhooks
Products without a modern submission output may fall back to legacy webhooks table URLs. New integrations should use Data Submissions buttons instead.
Related
- postMessage — Browser-side alternative for iframe/inject
- Submissions & outputs — Manager configuration