Skip to main content

How to Connect and Use Attio in Alta Flows

Connect your Attio CRM to Alta with an API token, then use the five Attio actions (search, create, update, upsert, and add note) inside any Flow.

Written by Katie Supporté

Summary

Alta integrates with Attio as a Flows action provider. Connect once with an Attio API token, then drop Attio actions into any Flow to search people, create or update records, upsert by email, or add notes.

Who this is for

Teams using Attio as their CRM who want Alta to read or write contact data automatically — for example, push every replied prospect into Attio as a person, log a note when a meeting is booked, or look up existing Attio records before enrolling a prospect.

Before you start

  1. You need an Attio account with permission to create API tokens. Tokens are managed in your Attio workspace under Settings → Developers → API tokens.

  2. Attio in Alta is Flows-only. Unlike Salesforce, HubSpot, Pipedrive, Zoho, or Dynamics 365 — which use Alta's built-in CRM sync — Attio is exposed as a set of actions inside Flows. You orchestrate the data movement yourself in a Flow rather than relying on a continuous two-way sync.


Step 1: Create an Attio API token

  1. In Attio, go to Settings → Developers → API tokens.

  2. Click Create token.

  3. Give it a name (e.g. Alta Flows) and grant it the scopes you need — at minimum, read and write access to People and Notes.

  4. Copy the token. Attio shows it once.

Step 2: Connect Attio in Alta

  1. In Alta, go to Flows and open or create a Flow.

  2. Add an Attio action (any of the five — you'll see the Attio logo in the Sales & CRM category, described as "Manage person records and notes in your Attio CRM").

  3. When prompted, create a new Attio connection.

  4. Paste your token into the API Token field (required) and save.

The connection is reusable — every other Attio action in this Flow (and your other Flows) will share it.

Step 3: Pick the right action

Five actions are available:

Search Person by Email

  • Email (required) — the email address to search for.

  • Returns the matching person record (one result) or fails with "No Attio person found with email: {email}".

  • Use this when you want to check whether a contact already exists before deciding to create or skip.

Create Person

  • Email (optional)

  • First Name (optional)

  • Last Name (optional)

  • Phone (optional)

  • Validation: at least Email or Phone is required — Alta will fail the action with "Attio Create Person: at least email or phone is required" if both are blank.

  • Creates a brand-new person record. Use this when you know the contact doesn't already exist.

Update Person

  • Record ID (required) — the Attio person record ID to update.

  • Email, First Name, Last Name, Phone (all optional).

  • Updates the named fields on an existing record. Use it after Search Person by Email when you've confirmed which record to touch.

Create or Update Person (upsert)

  • Email (required) — used to match an existing person, and also set as the email if creating.

  • First Name, Last Name, Phone (all optional).

  • Calls Attio's native assert (upsert) endpoint matching on email_addresses. If a person with that email exists, it's updated; otherwise a new person is created.

  • This is the simplest "make sure this person is in Attio" action — use it when you don't want to bother with a Search → Create / Update branch.

Add Note to Person

  • Record ID (required) — the Attio person record to add the note to.

  • Note Title (required, short text).

  • Note Content (required, long text).

  • Notes are saved as plain text and attached to the People object. Use this to log meeting summaries, reply highlights, or any event you want visible on the contact's timeline in Attio.

Step 4: Wire the action into your Flow

Each action's outputs are available to downstream steps. For example, a common pattern is:

  1. Search Person by Email — to find the Attio record for a prospect Alta just replied to.

  2. Branch on whether the search succeeded.

  3. If found, Add Note to Person using the returned Record ID.

  4. If not found, Create or Update Person using the prospect's data, then optionally Add Note to Person using the returned Record ID.

Step 5: Tune error handling

Every Attio action exposes two error-handling options:

  • Continue on failure (default off) — when on, the Flow continues if the action errors instead of halting.

  • Retry on failure (default off) — when on, Alta retries the action automatically before considering it failed.

Turn Continue on failure on for Search Person by Email if you want to handle "not found" as a normal branch instead of an error.


Tips and common pitfalls

  • Use Create or Update when in doubt. Upserting by email is safer than a Search-then-Create branch — fewer steps, no race conditions.

  • Email is the matching key. If the same person exists in Attio under a different email, upsert will create a duplicate. Normalize emails upstream (lowercase, trim) when you can.

  • Search fails loudly on no match. If you'd rather treat "not found" as a branch, turn on Continue on failure and check the action's output downstream.

  • Record IDs are Attio's, not Alta's. The Record ID field expects the Attio person record_id returned by Search or Create — don't paste an Alta prospect ID there.

  • Notes are plain text. Markdown and HTML aren't rendered in Attio notes via this action — keep formatting simple, line breaks survive.

  • Scope your token. The token you create in Attio inherits whatever permissions you grant — give it the minimum it needs (read & write on People and Notes for most Flows).

  • Token rotation. If you rotate the Attio token, edit the Alta Attio connection and paste the new value — every Flow using that connection picks it up immediately.

Related

  • How to Connect Your Slack Channel

  • How to Use AI Enrichment Variables in Alta

Did this answer your question?