Webhooks
Receive real-time notifications when important events occur in your campaigns
Overview
Webhooks allow your application to receive real-time notifications when events occur in your campaigns. Configure a webhook URL in your campaign settings, and we'll send HTTP POST requests to your endpoint whenever important events happen.
Configure Webhooks
Available Events
This is the main webhook event for campaign integrations. Use it to sync meeting bookings with your CRM, trigger follow-up workflows, or notify your sales team.
Webhook Payload
When a meeting is booked, we'll send a POST request to your webhook URL with the following payload:
{
"event": "meeting_booked",
"campaignId": "campaign_abc123",
"prospect": {
"id": "prospect_xyz789",
"companyName": "Acme Corp",
"contactName": "John Smith",
"email": "john@acme.com",
"title": "VP of Sales"
},
"meeting": {
"id": "meeting_123",
"scheduledAt": "2026-01-20T14:00:00Z",
"duration": 30,
"title": "Discovery Call with Acme Corp"
},
"timestamp": "2026-01-16T10:30:00Z"
}Payload Fields
eventThe event type. Always "meeting_booked" for this webhook.
campaignIdThe ID of the campaign that generated this meeting.
prospectInformation about the prospect who booked the meeting, including their company name, contact name, email, and job title.
meetingMeeting details including the scheduled time, duration in minutes, and meeting title.
timestampWhen the webhook was sent.
Handling Webhooks
Your webhook endpoint should:
- Return a
200 OKresponse quickly (within 5 seconds) - Process the webhook asynchronously if needed
- Be idempotent (handle duplicate deliveries gracefully)
Example webhook handler in Node.js:
app.post('/webhooks/magnetite', async (req, res) => {
const { event, campaignId, prospect, meeting } = req.body;
if (event === 'meeting_booked') {
// Process the meeting booking
console.log(`Meeting booked with ${prospect.contactName}`);
console.log(`Scheduled for: ${meeting.scheduledAt}`);
// Sync to your CRM, notify team, etc.
await syncToCRM(prospect, meeting);
}
// Always return 200 quickly
res.status(200).json({ received: true });
});Retry Policy
If your webhook endpoint returns an error (non-2xx status code) or times out, we'll retry the delivery:
- First retry: 1 minute after initial attempt
- Second retry: 5 minutes after first retry
- Third retry: 30 minutes after second retry
- Final retry: 2 hours after third retry
After 4 failed attempts, the webhook will be marked as failed. You can view failed webhooks in your campaign dashboard.
Testing Webhooks
You can test your webhook endpoint by sending a test payload manually:
curl -X POST https://your-server.com/webhooks/magnetite \
-H "Content-Type: application/json" \
-d '{
"event": "meeting_booked",
"campaignId": "test_campaign",
"prospect": {
"id": "test_prospect",
"companyName": "Test Company",
"contactName": "Test User",
"email": "test@example.com",
"title": "CEO"
},
"meeting": {
"id": "test_meeting",
"scheduledAt": "2026-01-20T14:00:00Z",
"duration": 30,
"title": "Test Meeting"
},
"timestamp": "2026-01-16T10:30:00Z"
}'