Skip to content

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

  1. Open ManagerConfigurations → your product.
  2. Go to Submission & trackingData Submissions.
  3. Select or create a submission output (linked to a template).
  4. On a submit button, enable POST to a URL and enter your endpoint URL.
  5. 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

PropertyValue
MethodPOST
Content-Typeapplication/json
BodyJSON payload above
RetriesNone (fire-and-forget)
Duplicate URLsDeduplicated per request

Your endpoint should respond with a 2xx status. Failures are logged server-side but not retried automatically.

Testing

  1. Create a test endpoint at webhook.site or an n8n/Zapier webhook.
  2. Paste the URL on a test submit button.
  3. Complete a configurator submission.
  4. 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.