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
| Event | Trigger |
|---|
booking_created | New appointment is booked |
booking_cancelled | Appointment is cancelled |
booking_rescheduled | Appointment time is changed |
new_employee | New user is added to your company |
Quick Setup
- Create a webhook endpoint on your server that accepts POST requests
- Register the endpoint via the API or dashboard
- 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
| Limit | Value |
|---|
| Webhooks per company | 6 |
| Request timeout | 30 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