Skip to main content
Webhooks are available on the Enterprise plan. See pricing for details.
Webhooks let you receive HTTP callbacks when resources in your workspace change. Instead of polling the API, you can subscribe to events like project creation or job updates and get notified automatically.

Setting up a webhook

  1. Log in to your DroneBundle dashboard
  2. Click Create Webhook
  3. Give it a name (e.g., “n8n Sync”, “HubSpot Integration”)
  4. Enter your HTTPS endpoint URL
  5. Select the events you want to subscribe to
  6. Copy the signing secret and store it somewhere safe
The signing secret is only shown once when you create the webhook. If you lose it, you will need to delete the webhook and create a new one.

Events

Subscribe to any combination of the following events:
EventTriggered when
project.createdA new project is created
project.updatedA project is modified
project.deletedA project is deleted
job.createdA new job is created
job.updatedA job is modified
job.deletedA job is deleted
job_type.createdA new job type is created
job_type.updatedA job type is modified
job_type.deletedA job type is deleted

Payload format

Every webhook delivery sends a POST request to your endpoint with a JSON body:
{
  "delivery_id": "019d4d2e-9104-774b-a0aa-fd2f8bd2e16d",
  "event": "project.created",
  "timestamp": 1775116390660,
  "workspace_id": "01986573-8d04-72fc-85b3-573c77a18511",
  "data": {
    "id": "019d4d2e-8af7-7609-8844-012c89671da9",
    "name": "Solar Farm Aerial Survey",
    "description": "Thermal and RGB drone inspection of the 40-acre Greenfield solar farm.",
    "status": "not_started",
    "start_date": "2026-05-01T00:00:00.000Z",
    "end_date": "2026-05-15T00:00:00.000Z",
    "external_id": "SF-2026-041",
    "laanc_number": null,
    "other_status_reason": null,
    "archived": false,
    "archived_at": null,
    "created": 1775116389112,
    "updated": 1775116389112,
    "created_by": {
      "type": "user",
      "id": "03144892-6021-705a-08f2-8e147cff3f28"
    }
  }
}
For delete events, data contains only the resource ID:
{
  "delivery_id": "019d4d36-1bc1-7315-b010-924ed0afbe87",
  "event": "project.deleted",
  "timestamp": 1775116884929,
  "workspace_id": "01986573-8d04-72fc-85b3-573c77a18511",
  "data": {
    "id": "019d4d2e-8af7-7609-8844-012c89671da9"
  }
}

Headers

Each delivery includes the following headers:
HeaderDescription
X-DroneBundle-SignatureHMAC-SHA256 signature for verifying authenticity (e.g., sha256=abc123...)
X-DroneBundle-EventThe event type (e.g., project.created)
X-DroneBundle-DeliveryUnique delivery ID for idempotency tracking
User-AgentDroneBundle-Webhook/1.0
Content-Typeapplication/json

Verifying signatures

Every delivery is signed with your webhook’s secret using HMAC-SHA256. Always verify the signature before processing the payload. See Verify Signatures for code examples in Node.js, Python, Java, C#, PHP, Go, and Rust.

Delivery behavior

  • Your endpoint must respond with a 2xx status code within 10 seconds
  • Non-2xx responses or timeouts are treated as failures
  • After 10 consecutive failures, the webhook is automatically paused
  • Reactivating a paused webhook from the dashboard resets the failure counter
  • Delivery logs are available in the dashboard for 30 days

Retry policy

If a delivery fails, it is retried up to 2 more times (3 total attempts) with a ~4 minute interval between each attempt. If all attempts fail, the event is dropped and the failure counter is incremented.
Deliveries may arrive more than once. Use the delivery_id field to deduplicate events on your end.