Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.breakcold.com/llms.txt

Use this file to discover all available pages before exploring further.

Breakcold outbound webhooks send events from your workspace to an HTTPS endpoint you control. Use them when another system needs to react to CRM changes such as records, notes, tasks, relations, calls, or files.

Event categories

Create an endpoint

  1. Open Breakcold.
  2. Go to Settings.
  3. Open Webhook.
  4. Open Send.
  5. Click New outbound webhook.
  6. Enter your HTTPS endpoint URL.
  7. Select the events you want to receive.
  8. Optionally filter deliveries to specific object types.
  9. Copy the signing secret.
Breakcold only delivers to active endpoints that subscribe to the event. If you add an object type filter, record-based events are only sent when the record belongs to one of those object types.

Delivery

Breakcold sends each webhook as an HTTP POST request with a JSON body. Your endpoint should return any 2xx status when it accepts the delivery. If delivery fails, Breakcold retries up to 3 attempts total. Retries currently run after about 5 seconds and then 30 seconds. Requests time out after 10 seconds. Endpoints are disabled after 50 consecutive delivery failures. Delivery logs are kept for 30 days.

Headers

Each delivery includes these headers.
HeaderDescription
Content-TypeAlways application/json.
X-Webhook-SignatureHMAC-SHA256 signature in the format sha256=HEX_DIGEST.
X-Webhook-EventThe event name, such as record.created.
X-Webhook-Delivery-IdThe delivery event id. Use it for idempotency.
X-Webhook-TimestampUnix timestamp in seconds used for signing.
User-AgentBreakcold-Webhooks/1.0.

Verify signatures

Use the endpoint signing secret to verify that a request came from Breakcold. The signed string is ${timestamp}.${rawBody}, where timestamp is the X-Webhook-Timestamp header and rawBody is the exact request body string.
import { createHmac, timingSafeEqual } from "node:crypto";

export function verifyBreakcoldWebhook({
  rawBody,
  timestamp,
  signatureHeader,
  signingSecret,
}) {
  const expected =
    "sha256=" +
    createHmac("sha256", signingSecret)
      .update(timestamp + "." + rawBody)
      .digest("hex");

  return timingSafeEqual(
    Buffer.from(signatureHeader),
    Buffer.from(expected)
  );
}

Payload envelope

Every event uses the same envelope.
{
  "eventId": "evt_abc123",
  "timestamp": "2026-03-19T12:00:00.000Z",
  "workspaceId": "workspace_id",
  "event": "record.created",
  "data": {
    "id": "record_id",
    "objectType": "person",
    "objectTypeName": "Person",
    "name": "Ada Lovelace",
    "fields": {
      "name": "Ada Lovelace",
      "email": "ada@example.com",
      "company": "Analytical Engines Ltd"
    },
    "createdAt": "2026-03-19T12:00:00.000Z",
    "updatedAt": "2026-03-19T12:00:00.000Z"
  }
}
FieldDescription
eventEvent type.
eventIdUnique delivery event id.
timestampISO timestamp generated when Breakcold builds the delivery payload.
workspaceIdWorkspace where the event happened.
dataEvent-specific payload.

Test event

The endpoint test button sends a webhook.test event with a valid signature. Use it to confirm that your endpoint is reachable and that signature verification works.
{
  "event": "webhook.test",
  "eventId": "evt_test_abc123",
  "timestamp": "2026-03-19T12:00:00.000Z",
  "workspaceId": "workspace_id",
  "data": {
    "message": "This is a test webhook delivery from Breakcold."
  }
}

Events

EventCategoryWhen it fires
record.createdCRMFired when a new record is created.
record.updatedCRMFired when a record field is updated.
record.deletedCRMFired when a record is deleted.
note.createdNotesFired when a note is added to a record.
note.updatedNotesFired when a note is edited.
note.deletedNotesFired when a note is deleted.
task.createdTasksFired when a task is linked to a record.
task.completedTasksFired when a task is marked as completed.
relation.addedCRMFired when a relation is added between records.
relation.removedCRMFired when a relation is removed between records.
call.linkedCommunicationFired when a call recording is linked to a record.
call.unlinkedCommunicationFired when a call recording is unlinked from a record.
file.uploadedFilesFired when a file is uploaded to a record.
file.deletedFilesFired when a file is deleted from a record.

Payload examples

record.created

Fired when a new record is created.
{
  "eventId": "evt_abc123",
  "timestamp": "2026-03-19T12:00:00.000Z",
  "workspaceId": "workspace_id",
  "event": "record.created",
  "data": {
    "id": "record_id",
    "objectType": "person",
    "objectTypeName": "Person",
    "name": "Ada Lovelace",
    "fields": {
      "name": "Ada Lovelace",
      "email": "ada@example.com",
      "company": "Analytical Engines Ltd"
    },
    "createdAt": "2026-03-19T12:00:00.000Z",
    "updatedAt": "2026-03-19T12:00:00.000Z"
  }
}

record.updated

Fired when a record field is updated.
{
  "eventId": "evt_abc123",
  "timestamp": "2026-03-19T12:00:00.000Z",
  "workspaceId": "workspace_id",
  "event": "record.updated",
  "data": {
    "id": "record_id",
    "objectType": "person",
    "objectTypeName": "Person",
    "name": "Ada Lovelace",
    "fields": {
      "name": "Ada Lovelace",
      "email": "ada@newdomain.example"
    },
    "createdAt": "2026-03-19T12:00:00.000Z",
    "updatedAt": "2026-03-19T12:10:00.000Z"
  }
}

record.deleted

Fired when a record is deleted.
{
  "eventId": "evt_abc123",
  "timestamp": "2026-03-19T12:00:00.000Z",
  "workspaceId": "workspace_id",
  "event": "record.deleted",
  "data": {
    "id": "record_id",
    "deleted": true
  }
}

note.created

Fired when a note is added to a record.
{
  "eventId": "evt_abc123",
  "timestamp": "2026-03-19T12:00:00.000Z",
  "workspaceId": "workspace_id",
  "event": "note.created",
  "data": {
    "recordId": "record_id",
    "noteId": "note_id",
    "title": "Follow up",
    "contentPlain": "Discussed pricing and next steps.",
    "author": "Jane Smith",
    "createdAt": "2026-03-19T12:00:00.000Z",
    "updatedAt": "2026-03-19T12:00:00.000Z"
  }
}

note.updated

Fired when a note is edited.
{
  "eventId": "evt_abc123",
  "timestamp": "2026-03-19T12:00:00.000Z",
  "workspaceId": "workspace_id",
  "event": "note.updated",
  "data": {
    "recordId": "record_id",
    "noteId": "note_id",
    "title": "Follow up",
    "contentPlain": "Send the pricing deck before Friday.",
    "author": "Jane Smith",
    "createdAt": "2026-03-19T12:00:00.000Z",
    "updatedAt": "2026-03-19T12:15:00.000Z"
  }
}

note.deleted

Fired when a note is deleted.
{
  "eventId": "evt_abc123",
  "timestamp": "2026-03-19T12:00:00.000Z",
  "workspaceId": "workspace_id",
  "event": "note.deleted",
  "data": {
    "recordId": "record_id",
    "noteId": "note_id",
    "title": "Follow up"
  }
}

task.created

Fired when a task is linked to a record.
{
  "eventId": "evt_abc123",
  "timestamp": "2026-03-19T12:00:00.000Z",
  "workspaceId": "workspace_id",
  "event": "task.created",
  "data": {
    "recordId": "record_id",
    "taskId": "task_id",
    "title": "Send proposal",
    "status": "todo",
    "dueAt": "2026-03-20T09:00:00.000Z"
  }
}

task.completed

Fired when a task is marked as completed.
{
  "eventId": "evt_abc123",
  "timestamp": "2026-03-19T12:00:00.000Z",
  "workspaceId": "workspace_id",
  "event": "task.completed",
  "data": {
    "recordId": "record_id",
    "taskId": "task_id",
    "title": "Send proposal",
    "status": "done",
    "dueAt": "2026-03-20T09:00:00.000Z"
  }
}

relation.added

Fired when a relation is added between records.
{
  "eventId": "evt_abc123",
  "timestamp": "2026-03-19T12:00:00.000Z",
  "workspaceId": "workspace_id",
  "event": "relation.added",
  "data": {
    "sourceRecordId": "record_id",
    "targetRecordId": "related_record_id",
    "fieldDefinitionId": "field_definition_id",
    "fieldSlug": "company"
  }
}

relation.removed

Fired when a relation is removed between records.
{
  "eventId": "evt_abc123",
  "timestamp": "2026-03-19T12:00:00.000Z",
  "workspaceId": "workspace_id",
  "event": "relation.removed",
  "data": {
    "sourceRecordId": "record_id",
    "targetRecordId": "related_record_id",
    "fieldDefinitionId": "field_definition_id",
    "fieldSlug": "company"
  }
}

call.linked

Fired when a call recording is linked to a record.
{
  "eventId": "evt_abc123",
  "timestamp": "2026-03-19T12:00:00.000Z",
  "workspaceId": "workspace_id",
  "event": "call.linked",
  "data": {
    "recordId": "record_id",
    "callId": "call_recording_id",
    "recordName": "Ada Lovelace",
    "meetingTitle": "Discovery call"
  }
}

call.unlinked

Fired when a call recording is unlinked from a record.
{
  "eventId": "evt_abc123",
  "timestamp": "2026-03-19T12:00:00.000Z",
  "workspaceId": "workspace_id",
  "event": "call.unlinked",
  "data": {
    "recordId": "record_id",
    "callId": "call_recording_id",
    "recordName": "Ada Lovelace",
    "meetingTitle": "Discovery call"
  }
}

file.uploaded

Fired when a file is uploaded to a record.
{
  "eventId": "evt_abc123",
  "timestamp": "2026-03-19T12:00:00.000Z",
  "workspaceId": "workspace_id",
  "event": "file.uploaded",
  "data": {
    "recordId": "record_id",
    "fileName": "contract.pdf"
  }
}

file.deleted

Fired when a file is deleted from a record.
{
  "eventId": "evt_abc123",
  "timestamp": "2026-03-19T12:00:00.000Z",
  "workspaceId": "workspace_id",
  "event": "file.deleted",
  "data": {
    "recordId": "record_id",
    "fileName": "contract.pdf"
  }
}