> ## Documentation Index
> Fetch the complete documentation index at: https://partner-help.letsdothis.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Registration webhooks

> Send participant registration data to external tools and platforms the moment someone registers for your event.

<Info>
  Registration webhooks are enabled on a per-account basis. Contact your account
  manager to have this feature enabled for your account.
</Info>

Webhooks let you push registration data to other tools — email marketing platforms,
timing systems, shipping providers, or any system that accepts an HTTP request —
without manual exports or scheduled syncs. Each time a participant registers or
updates their registration, the data is sent automatically.

Set up a separate webhook for each destination you need. You can filter each one
to a specific race, ticket type, or event occurrence so only relevant registrations
are forwarded.

## How webhooks work

When a participant completes a registration or updates their existing registration,
your webhook receives the participant's data: name, email, selected ticket, custom
question answers, and other registration details. The webhook fires once per
triggering event, in close to real time.

If your receiving endpoint is temporarily unavailable, the webhook retries
automatically. If errors persist over time, the webhook is paused to protect your
receiving system. You can re-enable it once the issue is resolved.

## Creating a webhook

<Steps>
  <Step title="Open webhook settings">
    In your dashboard, go to **Settings** > **Integrations** > **Webhooks** and
    click **Add webhook**.
  </Step>

  <Step title="Choose a destination type">
    Select the type of system you're connecting:

    | Type         | What it connects to                                                              |
    | ------------ | -------------------------------------------------------------------------------- |
    | URL endpoint | Any system that accepts an HTTP POST request (custom integrations, Zapier, etc.) |
    | Mailchimp    | Your Mailchimp audience list                                                     |
    | Klaviyo      | Your Klaviyo list                                                                |
    | ChronoTrack  | ChronoTrack timing system                                                        |
    | ShipStation  | ShipStation order fulfillment                                                    |
  </Step>

  <Step title="Enter the destination details">
    Depending on the type you selected:

    * **URL endpoint** — enter the full URL that will receive the data.
    * **Mailchimp** — enter your Mailchimp list ID.
    * **Klaviyo** — enter your Klaviyo list ID and select your saved Klaviyo credentials.
    * **ChronoTrack** and **ShipStation** — follow the prompts for the required
      connection details.
  </Step>

  <Step title="Choose which events trigger the webhook">
    Select one or both trigger events:

    * **Entry created** — fires when a participant completes a new registration.
    * **Entry updated** — fires when a participant updates their existing
      registration (for example, changing a custom question answer or upgrading
      their ticket).
  </Step>

  <Step title="Filter by race, ticket, or occurrence (optional)">
    By default, the webhook fires for all registrations across your event. To
    narrow the scope, add filters:

    * **Event occurrence** — limit to a specific date or wave.
    * **Race** — limit to a specific race within the event.
    * **Ticket type** — limit to a specific ticket.

    Filters use OR logic: if a registration matches any one of the filters you've
    set, the webhook fires. If you add no filters, the webhook fires for every
    registration.
  </Step>

  <Step title="Save the webhook">
    Click **Save**. The webhook is now active and will fire for new registrations
    matching your configuration.
  </Step>
</Steps>

## Sending existing registrations

After you save a new webhook, it will only receive registrations going forward.
To send existing registrations to your destination, use the **Backfill** option.
This re-sends all registrations that match the webhook's filters, letting you
populate your external system from day one.

## Automatic pausing on errors

If your receiving endpoint returns repeated errors over a rolling time window,
the webhook is automatically paused to avoid sending data into a broken
destination. When this happens, the webhook's status shows **Disabled** with the
reason **High error rate**.

To resume the webhook, fix the issue on the receiving end and then re-enable it
from the webhook's settings. The webhook will pick up new registrations from the
moment you re-enable it; use **Backfill** if you need to catch up on registrations
that were missed while it was paused.

## Checking delivery history

Each webhook shows a delivery log where you can review recent executions, inspect
the data that was sent, and see the response your endpoint returned. Use this to
confirm data is arriving correctly or to diagnose delivery failures.
