Skip to main content
Webhooks allow you to receive real-time notifications when events occur in your ticket system. Use them to integrate with services like Zapier, Make.com, Slack, Jira, or your own custom applications.
Webhooks are an Enterprise feature. Upgrade your plan to access webhooks.

Quick Start

For most integrations (Zapier, Make.com, n8n, etc.), simply:
  1. Go to Webhooks in your dashboard
  2. Click Create Webhook
  3. Enter the URL from your integration service
  4. Select the events you want to receive
  5. Save - you’re done!
No additional configuration needed for standard integrations.

Event Types

TicketCord supports 23 webhook events:

Ticket Events

Message Events

Priority & SLA Events

Approval Events

Ticket Notes

Access Control Events

Payload Structure

All webhooks are delivered as POST requests with JSON payloads.

Base Structure

Every webhook follows this structure:

Payload Examples

Headers

Every webhook request includes these headers:

Retry Policy

Failed webhook deliveries are automatically retried:
  • Maximum retries: 3 attempts
  • Backoff: Exponential (1s, 2s, 4s)
  • Success codes: Any 2xx response is considered successful
  • Timeout: 30 seconds per request

Building a Custom Webhook Receiver

This section is for developers building custom integrations. Most users can skip this and use services like Zapier or Make.com.

Basic Receiver

A minimal webhook receiver that accepts events and responds quickly:
server.ts
Best Practice: Respond with 200 immediately, then process events asynchronously (via queue, background job, etc.) to avoid timeouts.

Signature Verification

For production systems, always verify that webhook requests actually come from TicketCord. This prevents attackers from sending fake events to your endpoint.

How Signatures Work

Each webhook request is signed using your webhook’s secret key:
  1. TicketCord creates a signature string: v0:{timestamp}:{payload}
  2. Generates HMAC-SHA256 hash using your secret
  3. Sends the hash in the X-TicketCord-Signature header

Verification Steps

  1. Extract the timestamp from X-TicketCord-Timestamp header
  2. Get the raw JSON payload body (before parsing)
  3. Compute: HMAC-SHA256("v0:{timestamp}:{payload}", your_secret)
  4. Compare your computed signature with X-TicketCord-Signature
  5. Verify timestamp is within 5 minutes (replay attack protection)
Why verify timestamps? Without timestamp validation, an attacker could intercept a valid webhook and replay it later. By checking the timestamp is recent, you ensure the request is fresh.

Complete Examples with Signature Verification

server.ts

Security Best Practices

Always verify signatures in production to prevent unauthorized requests.
  1. Always verify signatures - Don’t trust requests without valid signatures
  2. Check timestamps - Reject requests older than 5 minutes to prevent replay attacks
  3. Use HTTPS - Your webhook endpoint should only accept HTTPS connections
  4. Use constant-time comparison - Prevents timing attacks when comparing signatures
  5. Keep secrets secure - Store your webhook secret in environment variables, never in code
  6. Handle retries gracefully - Your endpoint may receive the same event multiple times (use idempotency keys)
  7. Respond quickly - Return a 2xx response within 30 seconds to avoid timeouts

Testing Your Receiver

Use the Test button in the TicketCord dashboard to send a test webhook to your endpoint. This sends a test.ping event:

Debugging

Check the View Logs option in the dashboard to see:
  • Request/response details for each delivery
  • HTTP status codes returned by your endpoint
  • Error messages for failed deliveries
  • Retry attempts and timing

Need Help?

Get instant support via private DM