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

# Webhooks Overview

> Webhooks allow your application to receive real-time HTTP notifications when events occur in OrbitForms.

## How Webhooks Work

<Steps>
  <Step title="Configure endpoint">
    Configure a webhook endpoint URL in your dashboard
  </Step>

  <Step title="Select events">
    Select which events you want to receive
  </Step>

  <Step title="Receive notifications">
    When an event occurs, we send a POST request to your URL
  </Step>

  <Step title="Process payload">
    Your server processes the payload and returns a 2xx response
  </Step>
</Steps>

## Payload Format

All webhook payloads follow this structure:

```json theme={null}
{
  "event": "submission.created",
  "timestamp": "2024-01-15T14:30:00Z",
  "data": {
    "form_id": "550e8400-e29b-41d4-a716-446655440000",
    "form_title": "Contact Form",
    "form_slug": "contact-form",
    "submission_id": "660e8400-e29b-41d4-a716-446655440001",
    "submission_data": {
      "email": "user@example.com",
      "name": "John Doe"
    },
    "submitted_at": "2024-01-15T14:30:00Z",
    "metadata": {
      "referrer": "https://example.com",
      "user_agent": "Mozilla/5.0...",
      "device_type": "desktop",
      "utm_source": "google",
      "utm_medium": "cpc",
      "utm_campaign": "spring_sale"
    }
  }
}
```

## Learn More

<CardGroup cols={2}>
  <Card title="Events" icon="zap" href="/developers/webhooks/events">
    All available webhook events
  </Card>

  <Card title="Security" icon="shield" href="/developers/webhooks/security">
    Verify webhook signatures
  </Card>
</CardGroup>

## Best Practices

* Return a 2xx response within 5 seconds
* Process webhooks asynchronously for long operations
* Implement idempotency to handle duplicate deliveries
* Always verify the webhook signature
