> ## Documentation Index
> Fetch the complete documentation index at: https://developer.zeeg.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Routing Form Webhook Payload

> Schema reference for the webhook payload Zeeg sends when a routing form is submitted, including answers and the routed scheduling page.

This payload is delivered to your webhook callback URL when a `routing_form.submitted` event occurs.

## Event Info

<ResponseField name="event" type="string" required>
  Always `"routing_form.submitted"`.
</ResponseField>

<ResponseField name="reportId" type="string" required>
  Unique identifier for this specific form submission.
</ResponseField>

## Routing Form

<ResponseField name="routingFormId" type="string" required>
  UUID of the routing form.
</ResponseField>

<ResponseField name="routingFormName" type="string" required>
  Display name of the routing form.
</ResponseField>

<ResponseField name="routingFormSlug" type="string" required>
  URL slug of the routing form.
</ResponseField>

<ResponseField name="routingFormUrl" type="string" required>
  Full public URL of the routing form.
</ResponseField>

## Routing

<ResponseField name="routeType" type="string" required>
  How the visitor was routed after submission. Example: `"EVENT_TYPE"`.
</ResponseField>

<ResponseField name="routeCustomUrl" type="string | null">
  Custom redirect URL when the route type is a custom URL. `null` otherwise.
</ResponseField>

<ResponseField name="headline" type="string | null">
  Custom headline shown to the visitor after submission, if configured. `null` otherwise.
</ResponseField>

<ResponseField name="isFallbackRoute" type="boolean" required>
  `true` if the visitor was routed via the fallback (default) route, `false` if a specific routing rule matched.
</ResponseField>

## Event Type

<ResponseField name="eventType" type="object | null">
  The event type the visitor was routed to. `null` if the route does not lead to an event type.

  <Expandable title="Event type object">
    <ResponseField name="id" type="string">
      The event type ID.
    </ResponseField>

    <ResponseField name="title" type="string">
      The event type title.
    </ResponseField>

    <ResponseField name="slug" type="string">
      The event type URL slug.
    </ResponseField>

    <ResponseField name="uri" type="string">
      Full API URI for the event type. Example: `https://api.zeeg.me/v2/event-types/80f46bf5-eb01-4c07-960e-a9a3e18aae5e`.
    </ResponseField>
  </Expandable>
</ResponseField>

## Answers

<ResponseField name="answers" type="array" required>
  Ordered array of the visitor's responses to the routing form questions.

  <Expandable title="Answer object">
    <ResponseField name="question" type="string">
      The question text.
    </ResponseField>

    <ResponseField name="answer" type="string">
      The visitor's answer.
    </ResponseField>

    <ResponseField name="inputId" type="string">
      ID of the routing form input field.
    </ResponseField>

    <ResponseField name="order" type="integer">
      Display order of the question in the form.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="questionsAndAnswers" type="object" required>
  Flat key-value map of questions to answers (question text as key). Convenient for quick lookups.
</ResponseField>

## UTM Parameters

These fields capture UTM tracking parameters if they were present on the routing form URL when the visitor submitted.

<ResponseField name="utmCampaign" type="string | null">
  The `utm_campaign` value.
</ResponseField>

<ResponseField name="utmSource" type="string | null">
  The `utm_source` value.
</ResponseField>

<ResponseField name="utmMedium" type="string | null">
  The `utm_medium` value.
</ResponseField>

<ResponseField name="utmTerm" type="string | null">
  The `utm_term` value.
</ResponseField>

<ResponseField name="utmContent" type="string | null">
  The `utm_content` value.
</ResponseField>

<ResponseField name="adAttribution" type="object | null">
  Ad click identifiers captured at submission, or `null` when none were present. Keys: `gclid`, `gbraid`, `wbraid`, `fbclid`, `fbp`, `fbc`, `landingUrl` (all `string`, only the captured keys are present).
</ResponseField>

## Metadata

<ResponseField name="createdAt" type="string" required>
  Submission timestamp in UTC (ISO 8601).
</ResponseField>

## Full Payload Example

```json theme={null}
{
  "event": "routing_form.submitted",
  "reportId": "71621fb7-30b0-4d91-9f2e-a3e009cc6853",
  "routingFormId": "f1cbafc4-b646-4cf9-af29-193491b555d9",
  "routingFormName": "Inbound Lead Qualification",
  "routingFormSlug": "inbound-lead-qual",
  "routingFormUrl": "https://zeeg.me/RF/inbound-lead-qual",
  "routeType": "EVENT_TYPE",
  "routeCustomUrl": null,
  "headline": null,
  "isFallbackRoute": false,
  "eventType": {
    "id": "80f46bf5-eb01-4c07-960e-a9a3e18aae5e",
    "title": "30-Minute Discovery Call",
    "slug": "30min-discovery-call",
    "uri": "https://api.zeeg.me/v2/event-types/80f46bf5-eb01-4c07-960e-a9a3e18aae5e"
  },
  "answers": [
    {
      "question": "What is your company size?",
      "answer": "50-200 employees",
      "inputId": "f7c82298-6dd9-43bd-98e4-c437b5c0ae47",
      "order": 1
    }
  ],
  "questionsAndAnswers": {
    "What is your company size?": "50-200 employees"
  },
  "utmCampaign": "spring_launch",
  "utmSource": "linkedin",
  "utmMedium": null,
  "utmTerm": null,
  "utmContent": null,
  "adAttribution": {
    "gclid": "Cj0KCQjw_ndBhCrARIsAAy",
    "fbclid": "IwAR2xq9Zt",
    "landingUrl": "https://zeeg.me/RF/company-size?gclid=Cj0KCQjw_ndBhCrARIsAAy"
  },
  "createdAt": "2026-04-10T08:30:00+00:00"
}
```
