Javid
Javid
5 min read

Webhooks: Get Real-Time Notifications from DroneBundle

Cover Image for Webhooks: Get Real-Time Notifications from DroneBundle

Receive instant HTTP callbacks when projects, jobs, or job types change in your workspace. Connect DroneBundle to n8n, Zapier, HubSpot, or your own backend without polling.

Two days ago we launched API keys so you could push data into DroneBundle programmatically. Webhooks complete the other half. Now DroneBundle can push data to you.

Instead of polling the API every few minutes to check if something changed, you register a URL and DroneBundle sends an HTTP POST to it the moment a resource is created, updated, or deleted. Your integration reacts in real time.

Setting Up a Webhook

Webhooks live under your workspace settings, right next to API keys. Click Create Webhook, give it a name, enter your HTTPS endpoint URL, and select the events you want to subscribe to.

Webhooks list in workspace settings

Create webhook dialog

When you create a webhook, you get a signing secret. This is shown once. Copy it and store it somewhere secure. You will need it to verify that incoming requests are actually from DroneBundle and not a third party.

Events

You can subscribe to any combination of these events:

  • project.created / project.updated / project.deleted
  • job.created / job.updated / job.deleted
  • job_type.created / job_type.deleted

Pick only the events your integration needs. A webhook that syncs projects to your CRM does not need job type events.

Payload Format

Every delivery sends a POST request with a JSON body. The structure is consistent across all events:

{
  "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",
    "created": 1775116389112,
    "updated": 1775116389112,
    "created_by": {
      "type": "user",
      "id": "03144892-6021-705a-08f2-8e147cff3f28"
    }
  }
}

The top-level fields (delivery_id, event, timestamp, workspace_id) are the same for every event. The data object contains the full resource for create and update events, or just { "id": "..." } for deletes.

The created_by field tells you whether the change came from a user or an API key, along with the ID. If your integration needs the user's name or email, fetch it through the team members API using that ID.

Verifying Signatures

Every delivery includes an x-dronebundle-signature header with an HMAC-SHA256 hash of the request body. Always verify this before processing the payload.

import { createHmac, timingSafeEqual } from 'node:crypto';

function verifyWebhookSignature(body, secret, signatureHeader) {
  const expected = createHmac('sha256', secret).update(body).digest('hex');

  const received = signatureHeader.replace('sha256=', '');

  return timingSafeEqual(
    Buffer.from(expected, 'hex'),
    Buffer.from(received, 'hex'),
  );
}

The full documentation includes verified examples in Node.js, Python, Java, C#, PHP, Go, and Rust.

Delivery Logs

Every webhook delivery is logged and visible from the dashboard. You can see the event type, HTTP status code, response time, and the full request payload for each delivery.

Webhook delivery logs

Click on any delivery to inspect the full request payload that was sent, along with the response your endpoint returned.

Delivery log request details

When a delivery fails, you can see exactly what went wrong. The response body shows the error your endpoint returned, making it straightforward to debug integration issues.

Failed delivery showing error response

Logs are retained for 30 days. If your endpoint returns a non-2xx status or times out (10-second limit), the delivery is marked as failed and retried up to 2 more times with a 4-minute interval between attempts.

After 10 consecutive failures, the webhook is automatically paused. You can reactivate it from the dashboard once your endpoint is back up.

Use Cases

CRM sync. When a project is created or its status changes in DroneBundle, push the update to HubSpot or Salesforce automatically. No scheduled sync jobs, no stale data. The CRM record updates within seconds.

Slack notifications. Route job.created events to a Slack channel so your ops team knows the moment new work is scheduled. Include the job name, location, and priority right in the message.

n8n or Zapier workflows. Use webhooks as the trigger for automation workflows. A project.created event can kick off a chain: create a folder in Google Drive, add a row to a tracking spreadsheet, send an onboarding email to the assigned pilot, and create a matching record in your ERP.

Audit trail. Forward all webhook events to your own database or logging service to build a complete audit trail of every change made in DroneBundle, by whom, and when.

Webhooks + API Keys

Webhooks and API keys work together. API keys let you push data in. Webhooks push data out. Together they give you a two-way integration where your systems and DroneBundle stay in sync without manual work.

A typical flow: your CRM creates a project through the API using an API key. DroneBundle sends a project.created webhook to your backend. Your backend stores the DroneBundle project ID mapped to the CRM record. Later, when a team member updates the project status from the DroneBundle dashboard, a project.updated webhook fires and your backend pushes the new status back to the CRM.

Availability

Webhooks are available now on the Enterprise plan. Set up your first webhook from workspace settings and start receiving events.

Full webhook documentation with payload examples for every event type is at dronebundle.com/docs.

Start your free trial to get full Enterprise features for 14 days.

Book a demo to see how webhooks and API keys fit into your workflow.

Related Articles

API Keys: Build Custom Integrations with the DroneBundle API
DRONE OPERATIONS

API Keys: Build Custom Integrations with the DroneBundle API

Create API keys and manage projects, jobs, and job types programmatically. Connect DroneBundle to your CRM, ERP, or automation tools.

Read →
Risk Register: Track, Assess, and Mitigate Operational Risks
DRONE OPERATIONS

Risk Register: Track, Assess, and Mitigate Operational Risks

Log risks with a 5x5 severity and likelihood matrix. Assign owners. Track mitigation actions with deadlines, priorities, and verification methods. Built for teams running complex drone operations under regulatory oversight.

Read →
Job Feed: Timeline View, Filters, and Display Settings
DRONE OPERATIONS

Job Feed: Timeline View, Filters, and Display Settings

See all your jobs on a timeline. Filter by status, pilot, priority, job type, and project. Group by project, status, or pilot. Customize what you see and share filtered views with your team.

Read →
Export Project Data: Download Complete Reports in PDF and Excel
DRONE OPERATIONS

Export Project Data: Download Complete Reports in PDF and Excel

Export your entire drone project as a PDF report or Excel spreadsheet. Get project maps, job details, flight statistics, team assignments, and equipment lists in one download. Receive an email when your export is ready.

Read →