Skip to main content
Webhooks let you receive HTTP POST requests when events happen in meetergo. Use them to sync bookings with your CRM, trigger workflows, or update your application in real-time.

How Webhooks Work

When an event occurs (booking created, cancelled, rescheduled), meetergo sends an HTTP POST request to your configured endpoint with event details.

Available Events

EventTrigger
booking_createdNew appointment is booked
booking_cancelledAppointment is cancelled
booking_rescheduledAppointment time is changed
new_employeeNew user is added to your company

Quick Setup

  1. Create a webhook endpoint on your server that accepts POST requests
  2. Register the endpoint via the API or dashboard
  3. Handle incoming events and return a 200 response

Example Endpoint (Node.js/Express)

const express = require('express');
const app = express();

app.use(express.json());

app.post('/webhooks/meetergo', (req, res) => {
  const event = req.body;

  console.log('Received event:', event.event);
  console.log('Data:', event.data);

  // Process the event
  switch (event.event) {
    case 'booking_created':
      handleNewBooking(event.data);
      break;
    case 'booking_cancelled':
      handleCancellation(event.data);
      break;
    case 'booking_rescheduled':
      handleReschedule(event.data);
      break;
  }

  // Always return 200 quickly
  res.status(200).send('OK');
});

app.listen(3000);

Example Endpoint (Python/Flask)

from flask import Flask, request

app = Flask(__name__)

@app.route('/webhooks/meetergo', methods=['POST'])
def handle_webhook():
    event = request.json

    print(f"Received event: {event['event']}")

    if event['event'] == 'booking_created':
        handle_new_booking(event['data'])
    elif event['event'] == 'booking_cancelled':
        handle_cancellation(event['data'])
    elif event['event'] == 'booking_rescheduled':
        handle_reschedule(event['data'])

    return 'OK', 200

if __name__ == '__main__':
    app.run(port=3000)

Webhook Payload Structure

All webhooks follow this structure:
{
  "event": "booking_created",
  "data": {
    // Event-specific data
  }
}

Limits

LimitValue
Webhooks per company6
Request timeout30 seconds
Payload size~100KB

Best Practices

Return 200 quickly - Process webhooks asynchronously to avoid timeouts
Use HTTPS - Always use secure endpoints in production
Handle duplicates - Webhooks may be delivered more than once; use idempotent processing
Log everything - Keep webhook logs for debugging

Next Steps