Skip to main content

Overview

Fincelo exposes webhook endpoints that external platforms can push events to — enabling real-time ticket intelligence without polling.

Ticket Intelligence Webhook

Receives ticket events from any external support platform.
POST https://app.fincelo.app/api/webhooks/tickets?connectorId=YOUR_CONNECTOR_ID

Headers

HeaderRequiredDescription
Content-TypeYesapplication/json
x-hub-signature-256OptionalHMAC-SHA256 signature for verification

Payload Format

Fincelo accepts any JSON payload. It auto-detects common fields:
{
  "ticket": {
    "id": "12345",
    "subject": "Login not working",
    "description": "Users unable to login since update",
    "status": "open",
    "priority": "high",
    "requester_email": "cfo@customer.com",
    "created_at": "2026-07-01T09:00:00Z"
  }
}
Also accepts: issue, case, conversation as the root object.

Response

{
  "ok": true,
  "status": "received",
  "connector": "Acme Zendesk"
}
Fincelo always returns 200 immediately and processes asynchronously.

Google Chat Webhook

Receives button click events from Google Chat cards.
POST https://app.fincelo.app/api/webhooks/google-chat

Slack Webhook

Receives interactive component events from Slack.
POST https://app.fincelo.app/api/webhooks/slack
Handles: URL verification challenge, button clicks, app mentions.

WhatsApp Webhook

Receives inbound messages from CSMs replying via WhatsApp.
GET  https://app.fincelo.app/api/webhooks/whatsapp  ← Meta verification
POST https://app.fincelo.app/api/webhooks/whatsapp  ← Inbound messages

Signature Verification

For security, verify that webhook payloads come from the expected source:
import { createHmac } from 'crypto'

function verify(secret: string, payload: string, signature: string): boolean {
  const expected = 'sha256=' + createHmac('sha256', secret).update(payload).digest('hex')
  return expected === signature
}
Set your webhook secret in Settings → Support Intelligence → [Connector] → Webhook Secret.