Skip to main content

Overview

Setter AI sends webhook notifications to your server when important events occur, allowing you to build real-time integrations and automate workflows.

Setting Your Webhook URL

Configure your webhook URL in the Setter AI dashboard:
  1. Navigate to Settings > General
  2. Enter your webhook endpoint URL in the “Webhook URL” field
  3. Save your settings
Alternatively, you can configure it via API:
Your webhook endpoint must accept POST requests with Content-Type: application/json.

Webhook Events

Appointment Booked

Triggered when a contact successfully books an appointment through any connected calendar integration. Event Type: appointment_booked

Payload Example

Conversation Inactive

Triggered 23 hours after the last user message in a conversation. Event Type: conversation_inactive

Payload Example

Message Delivery Failed

Triggered when a WhatsApp message fails to deliver. Use this to implement fallback workflows — for example, triggering an SMS via Zapier when a WhatsApp message can’t be delivered. Event Type: message_delivery_failed

Payload Example

Use case: SMS fallback via Zapier

If a WhatsApp message fails to deliver, you can use this webhook to trigger an SMS to the same contact:
  1. Create a Zap with Webhook by Zapier as the trigger (Catch Hook)
  2. Set your Zapier webhook URL as the Webhook URL in your Setter AI settings
  3. Filter on type === "message_delivery_failed"
  4. Use contactPhoneNumber to send an SMS via Twilio or another SMS provider

Payload Fields

Common Fields

Appointment-Specific Fields

Conversation Inactive Fields

Message Delivery Failed Fields

Best Practices

Implement Idempotency: Your webhook endpoint should handle duplicate events gracefully. Use the timestamp and event-specific fields to deduplicate requests.
  • Respond Quickly: Return a 2xx status code within 5 seconds to acknowledge receipt
  • Process Asynchronously: Queue webhook processing for longer operations
  • Secure Your Endpoint: Use HTTPS and validate webhook signatures (if implemented)
  • Handle Failures: Implement retry logic with exponential backoff on your side