| name | attio-webhooks-events |
| description | Implement Attio v2 webhooks -- subscribe to record/list/note/task events,
verify signatures, filter by object or attribute, and handle idempotently.
Trigger: "attio webhook", "attio events", "attio webhook signature",
"handle attio events", "attio notifications", "attio real-time".
|
| allowed-tools | Read, Write, Edit, Bash(curl:*) |
| version | 1.6.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","crm","attio"] |
| compatibility | Designed for Claude Code |
Attio Webhooks & Events
Overview
Attio v2 webhooks deliver real-time CRM event notifications to your HTTPS endpoint. Subscribe to record, list-entry, note, and task events with optional object or attribute filters to reduce volume. Webhooks are managed via POST /v2/webhooks and verified with HMAC-SHA256 signatures using a timestamp-prefixed payload.
Webhook Registration
const webhook = await fetch("https://api.attio.com/v2/webhooks", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.ATTIO_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
target_url: "https://yourapp.com/webhooks/attio",
subscriptions: [
{ event_type: "record.created" },
{ event_type: "record.updated", filter: { object: { $eq: "deals" } } },
{ event_type: "note.created" },
{ event_type: "task.completed" },
],
}),
});
Signature Verification
import crypto from "crypto";
import { Request, Response, NextFunction } from "express";
function verifyAttioSignature() {
signature = req.[] ;
timestamp = req.[] ;
age = .() - (timestamp) * ;
(age > ) res.().({ : });
payload = ;
expected = crypto.(, process..!)
.(payload).();
(!crypto.(.(signature), .(expected))) {
res.().({ : });
}
();
}