Integrations

Connect your boards to the rest of your tools

There are three ways in and out. Automations can push events to any service with a webhook, the REST API lets other systems pull and write data, and MCP lets an AI assistant work your boards in plain conversation. Between them you can wire up Zapier, Make, n8n, or your own code without waiting for us to build a named connector.

Recipes

Common set-ups, start to finish.

Post new leads to Slack (via Zapier or Make)

  1. In Zapier create a Zap with the Webhooks by Zapier trigger, event Catch Hook, and copy the URL it gives you. (In Make, use a Custom webhook. In n8n, a Webhook node.)
  2. On your board choose Automate, then the template "When an item is created, POST to a webhook", and paste that URL.
  3. Add an item to the board so a real payload arrives, then map the fields in Zapier and finish with a Slack: Send Channel Message step.

Useful fields to map: item.name, board.name, item.url, and event.type.

Send website form submissions into a board

Upsert matches on a column (here, Email), so the same person submitting twice updates their row instead of creating a duplicate.

curl -X POST "/api/v1/boards/BOARD_ID/items/upsert" \
  -H "Authorization: Bearer ck_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "match_column_id": "EMAIL_COLUMN_ID",
    "group_id": "GROUP_ID",
    "items": [
      { "name": "Acme Ltd", "match_value": "hello@acme.com",
        "values": { "EMAIL_COLUMN_ID": "hello@acme.com" } }
    ]
  }'

Trigger your own system when a deal is won

Add an automation: When status changes to Won, then POST to a webhook URL pointing at your endpoint. Verify the signature (below) and act on it. Deliveries are retried, so make your handler idempotent using the X-ConneqtCRM-Delivery header.

Webhook reference

Add the POST to a webhook URL action to any automation. Included from the Team plan.

What we send

POST your-endpoint
Content-Type: application/json
X-ConneqtCRM-Event: item_created
X-ConneqtCRM-Delivery: 9f1c...        (unique per delivery; de-duplicate on it)
X-ConneqtCRM-Signature: t=1752710400,v1=3a7f...

{
  "event": { "type": "item_created", "boardId": "brd_123", "itemId": "itm_456" },
  "firedAt": "2026-07-17T09:20:00.000Z",
  "board": { "id": "brd_123", "name": "Lead Tracker" },
  "item": { "id": "itm_456", "name": "Acme Ltd", "url": "/boards/brd_123" }
}

event varies by trigger (a status change adds columnId, oldValue and newValue). item is null for events that are not about one item.

Verifying the signature

Anyone who learns your endpoint URL could post to it, so check the signature before trusting a delivery. Your signing secret is in the webhook action editor under Show signing secret. The header is t=<unix>,v1=<hex>, where v1 is HMAC-SHA256(secret, "<t>.<raw body>").

import { createHmac, timingSafeEqual } from "node:crypto";

function verify(rawBody, header, secret, toleranceSeconds = 300) {
  const parts = Object.fromEntries(header.split(",").map((p) => p.split("=")));
  const expected = createHmac("sha256", secret).update(`${parts.t}.${rawBody}`).digest("hex");
  const a = Buffer.from(expected), b = Buffer.from(parts.v1 || "");
  if (a.length !== b.length || !timingSafeEqual(a, b)) return false;
  return Math.abs(Date.now() / 1000 - Number(parts.t)) < toleranceSeconds; // reject replays
}

Use the raw body exactly as received. Re-serialising the parsed JSON changes the bytes and the signature will not match.

Delivery behaviour

Security

  • Webhook URLs must be https and must resolve to a public address. Private, loopback and cloud-metadata addresses are refused.
  • API keys carry scopes and a rate limit, and act as the person who created them. Revoke any key at any time from Profile.
  • Custom headers on a webhook action cannot override the signature, event or delivery headers.

Building something that needs a connector we do not have yet? Tell us what you are wiring up.