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.
Let Claude create and edit items for you. Set-up guide.
ConnectSigned POSTs when items change. Feeds Zapier, Make, n8n.
ReferenceRead boards, create items, bulk import. Full docs.
Read docsCommon set-ups, start to finish.
Useful fields to map: item.name, board.name, item.url, and event.type.
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" } }
]
}'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.
Add the POST to a webhook URL action to any automation. Included from the Team plan.
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.
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.
Building something that needs a connector we do not have yet? Tell us what you are wiring up.