Skip to main content

Outbound Webhooks Pro

Outbound Webhooks let you push real-time event data from Sydx AI to any external URL. Whenever something happens in your CRM — a new message arrives, a contact is created, a lead is captured — Sydx AI instantly sends a POST request to your configured webhook URL.


How It Works Real-time

1. Event occurs in Sydx AI  (e.g., customer sends a WhatsApp message)
2. Sydx AI builds event payload (contact name, phone, message text, etc.)
3. Payload is signed with HMAC-SHA256 (using your webhook's secret key)
4. POST request sent to your URL (with security headers)
5. Your server/tool processes the data (n8n, Zapier, Make.com, custom server)

This is a PUSH model — Sydx AI proactively sends data to you in real-time. No polling required.


Supported Events

EventTriggered WhenPayload Data
message.receivedA customer sends a WhatsApp messageContact phone, name, message body, message type
message.sentAn outbound message is sent to a customerContact phone, message body, status
contact.createdA new contact messages for the first timeContact name, WhatsApp ID, source
contact.updatedA contact's profile or tags are updatedContact details, changed fields
lead.capturedA lead is captured via Facebook Ad, web form, or chatbot flowLead name, phone, email, source, campaign
lead.assignedA lead is assigned to a team memberLead details, assigned agent
campaign.sentA broadcast campaign is sentCampaign name, recipient count
campaign.completedA broadcast campaign finishes deliveryCampaign name, success/failure stats
flow.completedA chatbot flow completes executionFlow name, contact, session data

Setting Up an Outbound Webhook Admin Only

Step 1: Navigate to Settings

  1. Open the Sydx AI dashboard
  2. Click Settings in the sidebar
  3. Go to the Outbound Webhooks section

Step 2: Create a Webhook

  1. Click "Create Webhook"
  2. Fill in the details:
    • Name — A descriptive name (e.g., "n8n Lead Alert", "Zapier New Message")
    • URL — The endpoint URL where events will be sent (must be HTTPS)
    • Events — Select one or more events to subscribe to
  3. Click Create

Step 3: Copy Your Secret

After creation, you'll receive a webhook secret (starts with whsec_).

Important

The full secret is only shown once during creation. Copy and store it securely. You'll need it to verify webhook signatures on your receiving server.

Step 4: Test the Connection

  1. Click the "Test" button next to your webhook
  2. Sydx AI will send a test.ping event to your URL
  3. Verify you receive the test payload in your external tool

Webhook Payload Format

Every webhook delivery sends a JSON body with this structure:

{
"event": "message.received",
"timestamp": "2026-03-25T08:22:50.254Z",
"tenantId": "your-tenant-id",
"data": {
"contact": "919876543210",
"name": "John Doe",
"body": "Hello, I'm interested in your product",
"type": "text"
}
}

HTTP Headers

Every delivery includes these headers for security and debugging:

HeaderDescriptionExample
Content-TypeAlways application/jsonapplication/json
X-Sydx-EventThe event typemessage.received
X-Sydx-TimestampISO 8601 timestamp of the event2026-03-25T08:22:50.254Z
X-Sydx-SignatureHMAC-SHA256 signature of the payload362bb526c7ab9...
User-AgentIdentifies the senderSydxAI-Webhook/1.0

Security: Verifying Signatures

Every webhook delivery is signed using HMAC-SHA256 with your webhook's secret key. Always verify the signature on your receiving server to ensure the request genuinely came from Sydx AI.

How to Verify (Node.js Example)

const crypto = require('crypto');

function verifyWebhookSignature(payload, signature, secret) {
const expectedSignature = crypto
.createHmac('sha256', secret)
.update(JSON.stringify(payload))
.digest('hex');

return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expectedSignature)
);
}

// In your webhook handler:
app.post('/webhook', (req, res) => {
const signature = req.headers['x-sydx-signature'];
const isValid = verifyWebhookSignature(req.body, signature, 'whsec_your_secret_here');

if (!isValid) {
return res.status(401).json({ error: 'Invalid signature' });
}

// Process the event
console.log('Event:', req.body.event);
console.log('Data:', req.body.data);

res.status(200).json({ received: true });
});

Retry Logic

If your endpoint fails to respond with a 2xx status code, Sydx AI will automatically retry delivery:

AttemptDelayTotal Wait
1st retry5 seconds5s
2nd retry30 seconds35s
3rd retry2 minutes~2.5 min

After 3 failed attempts, the delivery is marked as failed and logged in the Delivery Logs.


n8n (Self-Hosted or Cloud)

  1. In n8n, create a new workflow
  2. Add a Webhook trigger node
  3. Set HTTP Method to POST
  4. Copy the Production URL from n8n
  5. Paste it as the webhook URL in Sydx AI Settings
  6. Select your events and save
  7. Click Test to verify the connection
  8. In n8n, switch your webhook node to Production URL mode
  9. Add downstream nodes (Google Sheets, Email, Slack, etc.)

Zapier

  1. Create a new Zap in Zapier
  2. Set the trigger to "Webhooks by Zapier""Catch Hook"
  3. Copy the webhook URL provided by Zapier
  4. Paste it as the webhook URL in Sydx AI Settings
  5. Select your events and save
  6. Click Test to send a sample event
  7. In Zapier, map the received fields to your action (Google Sheets, Email, etc.)

Make.com (formerly Integromat)

  1. Create a new scenario in Make.com
  2. Add a Webhooks"Custom webhook" module
  3. Copy the webhook URL
  4. Paste it in Sydx AI Settings as the webhook URL
  5. Select events and save
  6. Click Test to verify
  7. Add downstream modules for processing

Custom Server

Point any server endpoint that accepts POST requests:

# Example: Your server at https://api.yourcompany.com/sydx-webhook
# Sydx AI will POST event data to this URL

Managing Webhooks

Rotating Secrets

If you suspect your webhook secret has been compromised:

  1. Go to Settings → Outbound Webhooks
  2. Click the "Rotate Secret" button on the webhook
  3. A new secret will be generated
  4. Update the secret in your receiving application
  5. The old secret is immediately invalidated

Viewing Delivery Logs

Monitor all webhook deliveries from the Delivery Logs tab:

  • See delivery status (success/failed)
  • View response codes and timing
  • Debug failed deliveries
  • Filter by event type or status

Deleting a Webhook

  1. Go to Settings → Outbound Webhooks
  2. Click the Delete button on the webhook you want to remove
  3. Confirm deletion — all future event deliveries to this URL will stop

Troubleshooting

Webhook Not Receiving Events

IssueSolution
No events receivedVerify the webhook URL is correct and accessible
test.ping works but real events don'tCheck that the correct events are selected in the webhook configuration
SSL/TLS errorsEnsure your endpoint has a valid HTTPS certificate
Timeout errorsYour endpoint must respond within 5 seconds

Common Response Codes

CodeMeaning
200✅ Success — event was received and processed
401❌ Unauthorized — check your signature verification logic
404❌ URL not found — verify the webhook URL is correct
500❌ Server error — check your server logs
Timeout❌ No response within 5 seconds — optimize your handler

Best Practice

Keep your webhook handler fast and lightweight. Accept the event, respond with 200 OK immediately, and process the data asynchronously. This prevents timeout issues and ensures reliable delivery.