Integrations · Webhooks

HMAC-SHA256 signed outbound webhooks

Receive V Ai Desk events in your system in real time, with replay protection and exponential retry up to dead letter.

HMAC signature

integrations.webhooks.sections.sigText

Canonical events

conversation.created/assigned/transferred/hold_started/hold_ended/closed, message.received/sent/system, attachment.added, operator.online/offline/paused, sla.warning/breached, auto_reply.suggested/accepted_by_end_user.

Retry and dead letter

integrations.webhooks.sections.retryText

Example: validate signature (Node.js)

javascript
import crypto from 'node:crypto';

function verify(headers, rawBody, secret) {
  const sig = headers['x-vaidesk-signature'];     // "t=1718976000,v1=5257..."
  const parts = Object.fromEntries(
    sig.split(',').map((p) => p.split('='))
  );
  const t = parts.t;
  const v1 = parts.v1;

  if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false;

  const expected = crypto
    .createHmac('sha256', secret)
    .update(`${t}.${rawBody}`)
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(v1, 'hex'),
    Buffer.from(expected, 'hex')
  );
}

Ready to integrate robust customer support into your product?

Tell us about your case. We get back within one business day.