Sources

Attio

Authorize an Attio workspace and sync CRM records, activity, workspace members, and selected attribute history.

Attio OAuth is in progress and available to approved beta workspaces. It is not advertised through Ember yet.

Attio may show an unapproved-app warning during the private canary. Embrasure will submit the integration through Attio's publication lifecycle before general availability.

Choose Connect Attio, authorize the intended workspace in Attio, and return directly to table selection. Embrasure verifies the workspace and granted scopes before activating the source. The OAuth access token is encrypted at rest.

Before you start

You need permission to approve apps in the Attio workspace and Embrasure workspace administrator access.

Connect Attio

In Embrasure, open WarehouseIngestion, add a warehouse source, choose Attio, and select Connect Attio. In Attio, choose the intended workspace and approve these scopes:

  • object_configuration:read
  • record_permission:read
  • list_configuration:read
  • list_entry:read
  • webhook:read-write

The webhook scope lets Embrasure create the provider webhook that prompts faster warehouse refreshes. OAuth also requests note:read, task:read, and user_management:read so every supported activity table is available.

Embrasure introspects the token before activation. If Attio identifies another workspace or omits a required scope, setup stops without replacing the existing connection.

Existing workspace tokens

Existing workspace-token connections keep working. Their connection screen offers Reconnect with OAuth; there is no forced migration deadline. New Attio connections use OAuth only.

After reconnecting, verify the workspace name before selecting tables. Embrasure preserves the connector ID and refuses to replace it with authorization for a different Attio workspace.

Disconnect and cleanup

Revoke Embrasure from Attio's connected-app settings, then remove the source in Embrasure. Revocation stops API and webhook access; source removal deletes the encrypted token and Embrasure webhook metadata. If Attio reports expiration or revocation first, Embrasure marks the source for reconnection instead of treating an empty response as a successful sync.

What is synced

Attio resources use separate warehouse schemas so objects, lists, activity, and history can safely coexist.

SchemaTableContents
attio_objectsOne table per object API slugOne row per record, including stable record and object IDs, creation time, web URL, the complete values payload, and one JSON column per readable attribute.
attio_listsOne table per list API slugOne row per list entry, including stable entry and list IDs, parent record and object IDs, the complete entry_values payload, and one JSON column per readable list attribute.
attio_activitynotesNote title, plaintext and Markdown content, parent record, author, tags, and meeting reference. Images are not returned by Attio.
attio_activitytasksBoth complete and incomplete tasks, content, deadline, completion time, assignees, and linked records.
attio_activityworkspace_membersMember names, email, access level, and stable member IDs for resolving owner and assignee references. Includes suspended members.
attio_object_history, attio_list_historyOne selectable table per eligible attributeHistorical status, select, currency, and actor-reference values, including active_from, active_until, actor, and record or entry ID.

Attributes stay as JSON arrays because Attio values are typed and can be multi-valued. The complete provider response is also retained in the data column.

Embrasure refreshes records and list entries as provider-paged snapshots. Create and update webhooks prompt an immediate refresh. Delete and merge webhooks request a full snapshot replacement so rows that disappeared from Attio are removed from the managed warehouse.

Activity tables refresh on the configured polling schedule. Note/task/member webhook subscriptions are not installed. Use Full resync to reconcile deleted notes or tasks; polling alone merges current rows. Workspace members are retained by Attio with a suspended access level instead of being deleted.

Choose attribute history

Explicitly select the history tables you need in the table picker, such as a deal stage, owner, or value. History tables are excluded from automatic table recommendations and automatic discovery of new ingestion tables. They can be selected independently of their current-record table. Names include the object/list slug, attribute slug, and a stable suffix; existing selections survive renames through provider IDs.

Only writable status, select, currency, and actor-reference attributes are offered. Communication-intelligence, enriched, formula, and archived attributes are excluded. Each row retains the complete historical value in data; active_until = null identifies a currently active value. Stable row keys allow an open interval to be updated when it closes or a status label changes.

History requires a separate provider request per record or entry and selected attribute, with additional requests for long histories. Reads resume from stored parent/value offsets and combine up to 25 value pages per warehouse batch. Choose only the attributes needed for analysis and a polling interval appropriate for the workspace size. Attio offset pagination is not an atomic snapshot: changes while a scan runs can move rows between pages. A later refresh reconciles updates; Full resync reconciles deletions. Historical values belonging to deleted records/entries cannot be recovered from Attio.

Meetings, emails, comments, and call recordings are not included.

Troubleshooting

  • Authorization fails. Retry Connect Attio and approve the intended workspace. An unpublished private canary app may show Attio's unapproved-app warning until marketplace review completes.
  • Reconnect required. Attio expired or revoked the authorization. Select Reconnect with OAuth; Embrasure never treats this as an empty workspace.
  • Permission verification fails. Approve every requested scope. A read-write scope also satisfies the matching read requirement when Attio offers it.
  • Webhook setup fails. Attio accepts HTTPS targets only. Production uses the public Embrasure API URL; local development remains polling-only.
  • Deletes are missing. Scheduled refreshes merge the current records. If webhook delivery was unavailable, exhausted its retries, or the source was paused, use Full resync to reconcile removed rows. Deleting an entire configured list requires removing that list from the ingestion selection.
  • An object or list is missing. Confirm the token can read its configuration and records, then run discovery again.

See Attio's attribute history endpoint, list-entry history endpoint, notes endpoint, tasks endpoint, members endpoint, authentication guide, and webhook guide for provider setup details.