Webhooks

Receive real-time HTTP notifications when meetings are booked, confirmed, cancelled, rescheduled, or rejected.

Overview

Webhooks let you receive an HTTP POST request to a URL of your choice whenever a meeting event occurs in your QuickMeetly account. Use them to trigger workflows in Zapier, n8n, your own backend, or any other system that can receive HTTP requests.


Creating a Webhook

  1. Go to Dashboard → Webhooks.
  2. Click Add Webhook.
  3. Enter the URL that should receive the notifications (must be a valid https:// address).
  4. Select one or more events to subscribe to (see the table below).
  5. Click Save.

After saving, a secret key is displayed once — copy it immediately. This secret is used to verify that requests come from QuickMeetly (see Verifying Payloads below).


Subscribable Events

Event When it fires
meeting_booked A guest completes a new booking
meeting_confirmed You confirm a pending booking
meeting_cancelled A meeting is cancelled (by you or the guest)
meeting_rescheduled A guest reschedules an existing booking
meeting_rejected You reject a pending booking

You can subscribe to any combination of events on a single webhook endpoint, or create separate endpoints for each event.


Payload Format

QuickMeetly sends a JSON payload in the POST request body. The shape includes the event type, a timestamp, and the full meeting details:

{
  "event": "meeting_booked",
  "timestamp": 1686463078212,
  "data": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "event_type_title": "30-Minute Intro Call",
    "start_date_time": "2025-05-12T09:30:00",
    "duration_in_minutes": 30,
    "timezone": "Europe/London",
    "location": "phone_call",
    "status": "scheduled",
    "participants": [
      {
        "name": "Jane Doe",
        "email": "[email protected]",
        "phone_number": "1234567890"
      }
    ],
    "note": "",
    "online_link": "",
    "address": "",
    "cancellation_reason": ""
  }
}

Verifying Payloads

Each webhook request includes an X-Signature-256 header. Use your webhook’s secret key to verify the signature and confirm the request is genuine.

The signature is an HMAC-SHA256 hash of the raw request body, signed with your secret:

const crypto = require("crypto");

function isValidSignature(body, signature, secret) {
  const expected = crypto
    .createHmac("sha256", secret)
    .update(body)
    .digest("hex");
  return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
}

Always reject requests where the signature does not match.


Managing Webhooks

Action How
View secret The secret is only shown once at creation time. It cannot be retrieved afterwards — delete and recreate the webhook to rotate it.
Delete Click the trash icon on the webhook card and confirm.

Delivery & Retries

  • QuickMeetly expects a 2xx HTTP response within a reasonable timeout. If a non-2xx response is received or the request times out, delivery is considered failed.
  • Your endpoint should be idempotent — the same event may be delivered more than once in edge cases.

Tips

  • Use a tool like webhook.site or ngrok to inspect incoming payloads during development.
  • Subscribe only to the events you need to keep payloads manageable.
  • Store the secret in an environment variable — never hardcode it.