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 → Data → Submissions.
- Select or create a submission.
- Under Action buttons, enable POST to a URL on a button and enter your endpoint URL.
- Save the submission.
- Open Configurations → your product → Submission & tracking and select this submission under Submission.
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. A button with webhook enabled always asks for the customer's contact details and creates a quotation record.
Webhooks are not sent when the quotation is saved but the submission actions cannot run (for example when no submission is selected for the product), or when your subscription has expired.
Quotation event
Webhook event:
{
"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": []
}
}pdf_url is null when the button does not generate a PDF.
Buttons without PDF, email or webhook
A button with only postMessage (no PDF, no email, no webhook) skips the contact form and quotation creation. It does not send a webhook; use postMessage for this flow.
Enriched items array
Each item in data.items includes resolved feature names and selected subfeatures, in the language of the submission. For multiple_selection features, selected is an array:
{
"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.
Related
- postMessage — Browser-side alternative for iframe/inject
- Submissions & outputs — Manager configuration