Skip to main content

Prerequisites

Before continuing, you should have already completed the following for this connector:
1

Configure the Connector

Enable the connector and set up its connector profile in your project. See Managing Connectors.

Connector Profile

Attio - OAuth 2.0

Connector Profile

Attio - API Key
2

Link an Account

Connect an account using StackOne Hub or Auth Link.

Link Account

Attio - OAuth 2.0

Link Account

Attio - API Key

How webhooks are set up

Attio delivers events through a webhook subscription, and StackOne provisions it for you on connection — there is nothing to configure in Attio and no URL to paste. StackOne creates one Attio webhook subscribed to all supported event types; only the events you enable in StackOne are dispatched onward.

1

Connect with the webhook scope

Authorize the connection using OAuth 2.0 or an API key that includes the webhook:read-write scope so StackOne can create and delete the webhook subscription on your behalf. No further setup is needed in Attio.

2

Enable the events you need

Enable the Attio events you want in StackOne. The provisioned webhook already covers every event type; StackOne dispatches only the events you have enabled.

Available webhook events

The events below can be enabled for this connection. Each delivered event carries its type in event_type and an id object with the affected entity’s identifiers.

1

Review record events

Fired for records in any object (people, companies, or custom objects).

  • Record Created (record.created) — Fired when a record is created.
  • Record Updated (record.updated) — Fired when a record’s attribute values change (the changed attribute is named by id.attribute_id).
  • Record Deleted (record.deleted) — Fired when a record is deleted.
  • Record Merged (record.merged) — Fired when two records are merged.
2

Review list events

Fired for lists.

  • List Created (list.created) — Fired when a list is created.
  • List Updated (list.updated) — Fired when a list’s configuration changes.
  • List Deleted (list.deleted) — Fired when a list is deleted.
3

Review list entry events

Fired when records are added to, changed in, or removed from a list.

  • List Entry Created (list-entry.created) — Fired when a record is added to a list.
  • List Entry Updated (list-entry.updated) — Fired when a list entry’s attribute values change.
  • List Entry Deleted (list-entry.deleted) — Fired when a record is removed from a list.
4

Review note events

Fired for notes.

  • Note Created (note.created) — Fired when a note is created.
  • Note Updated (note.updated) — Fired when a note’s metadata changes.
  • Note Deleted (note.deleted) — Fired when a note is deleted.
  • Note Content Updated (note-content.updated) — Fired when a note’s content is edited.
5

Review task events

Fired for tasks.

  • Task Created (task.created) — Fired when a task is created.
  • Task Updated (task.updated) — Fired when a task is updated.
  • Task Deleted (task.deleted) — Fired when a task is deleted.
6

Review comment events

Fired for comments and comment threads.

  • Comment Created (comment.created) — Fired when a comment is created.
  • Comment Resolved (comment.resolved) — Fired when a comment thread is resolved.
  • Comment Unresolved (comment.unresolved) — Fired when a comment thread is unresolved.
  • Comment Deleted (comment.deleted) — Fired when a comment is deleted.
7

Review attribute events

Fired when the schema (attributes) of an object or list changes.

  • Object Attribute Created (object-attribute.created) — Fired when an attribute is added to an object.
  • Object Attribute Updated (object-attribute.updated) — Fired when an object’s attribute configuration changes.
  • List Attribute Created (list-attribute.created) — Fired when an attribute is added to a list.
  • List Attribute Updated (list-attribute.updated) — Fired when a list’s attribute configuration changes.
8

Review workspace and call events

Fired for workspace membership and call recordings.

  • Workspace Member Created (workspace-member.created) — Fired when a workspace member is added.
  • Call Recording Created (call-recording.created) — Fired when a call recording is created.

Delivery format

How Attio delivers events to StackOne.

1

Inspect event payloads

Attio sends each event as an HTTP POST with a JSON body containing a top-level webhook_id and an events array. Each event object has event_type, an id object with the affected entity’s identifiers (for example record_id, note_id, task_id, entry_id, attribute_id), and an actor. Attio currently sends one event per request but may batch multiple events in the array in the future.

2

Fetch changed values

Update events carry identifiers only, not the changed values. For record.updated and the *-attribute.updated events, id.attribute_id tells you which attribute changed; fetch the record or attribute from the Attio API using the ids to read the new value.

3

Understand signed deliveries

Attio signs each delivery with an Attio-Signature (also X-Attio-Signature) header — an HMAC-SHA256 of the request body using the webhook secret. StackOne relies on the unique, unguessable callback URL as the security gate.

Verify

Your Connector should now be able to receive and process events. Try triggering an event and you should see an Event appear in the Connector logs.