---
title: "Attio Integration"
description: "Connect AI agents to Attio, the data-driven CRM. Agents upsert and query records across People, Companies, and custom objects, manage lists and pipeline entries, and log notes, tasks, and comments against any record."
url: https://flowrunner.ai/integrations/attio
date_modified: 2026-08-01T02:40:32-07:00
---

# Attio

[CRM](https://flowrunner.ai/integrations/category/crm-sales)

Connect AI agents to Attio, the data-driven CRM. Agents upsert and query records across People, Companies, and custom objects, manage lists and pipeline entries, and log notes, tasks, and comments against any record.

[Verified](https://flowrunner.ai/integrations/verified "What does verified mean?") · 26 actions · API key · available

[Attio website](https://attio.com/) · [Platform Documentation](https://developers.attio.com/) · Capability data verified 2026-07-27

1.  A new order or signup arrives from the storefront
2.  Agent pulls the customer's name, email, company, and order details
3.  Query Records looks for an existing person matched on email
4.  Assert Record (Upsert) writes or refreshes the Person and Company records
5.  Add List Entry places the record on the sales pipeline list
6.  Create Comment flags the account owner with the context
7.  The account owner reads the flag and decides whether this is an expansion play

## What This Integration Enables

Attio treats the CRM as a queryable data model with typed attributes and custom objects, which means the maintenance work every CRM accumulates can finally be an agent's job instead of a Friday afternoon. FlowRunner agents upsert and query records across People, Companies, and custom objects, place records on lists and pipelines, and attach notes, tasks, and comments so context lands where the next person will look for it.

Programmable should not mean reckless. The connector's write operations are exactly where FlowRunner's [human-in-the-loop](https://flowrunner.ai/concepts/human-in-the-loop) discipline earns its keep: agents do the querying, matching, and drafting at machine speed, and the operations that destroy data wait for a person.

### Without FlowRunner

**CRM hygiene as a chore**: Keeping records current is a recurring manual task that always loses to revenue work

**Duplicate drift**: The same company exists three times under three spellings, and reports quietly disagree

**Context scattered**: Payment details, meeting notes, and follow-ups live in different tools than the record

### With FlowRunner

**Hygiene as a running process**: Agents upsert, enrich, and reconcile records continuously, keyed on unique attributes

**Duplicates surfaced with evidence**: Merge candidates arrive as side-by-side comparisons, and a person picks the survivor

**Context lands on the record**: Transactions become notes, meetings become list entries, follow-ups become tasks

## Use Case Scenarios

### Every signup lands in the pipeline, once

An order from [Shopify](https://flowrunner.ai/integrations/shopify) or a payment pulled from [Stripe](https://flowrunner.ai/integrations/stripe) reaches the agent. It resolves the customer against the workspace with Query Records, then calls Assert Record (Upsert) keyed on email so the Person is created or refreshed but never duplicated. The Company record gets the same treatment keyed on domain. Add List Entry places the record on the pipeline list, Create Note logs the transaction details on the Company, and Create Task schedules the follow-up. When an invitee books through [Calendly](https://flowrunner.ai/integrations/calendly), the same pattern places them on the list before the meeting happens.

### The reporting loop nobody has to run

On a schedule, the agent calls Query Records for Companies updated in the last week, filtered on the attributes that matter to the revenue team. Each result appends to a sheet in [Google Sheets](https://flowrunner.ai/integrations/google-sheets), and a digest posts to [Slack](https://flowrunner.ai/integrations/slack) with the movers called out. The team reads the pipeline story without anyone exporting anything, and the queries run against live records rather than a stale CSV.

### Deduplication with a named survivor

A weekly sweep queries People and Companies for near-matches on email, domain, and name. For each candidate pair, the agent pulls both full records with Get Record, counts the notes, tasks, and list entries attached to each, and posts the comparison to the RevOps owner. The owner names the survivor. Only then does the agent move any missing context to the surviving record and call Delete Record on the other. The merge happens at machine speed; the choice of which record dies does not.

## Human-in-Loop Highlight

Delete Record is permanent, and in a dedup workflow it is aimed at a record that might carry the only copy of a relationship's history. So the sweep agent never picks the survivor. It posts: "Two Company records match on domain acme.io. Record A has 14 notes, 3 open tasks, and sits on the Enterprise pipeline list. Record B has 2 notes and a newer billing address. Which record survives?" The RevOps owner answers, the agent copies the missing attributes and context across, and only then deletes the loser. What made this safe was not the agent's matching. It was that the irreversible call belonged to a person.

Agent processes routinely

Detects exception requiring judgment

Clear match Continues automatically

Ambiguous Routes to human via preferred channel

Human decides

Agent resumes with decision

## Agent Capabilities

26 actions

### Objects and Attributes

2

-   **List Objects** Lists the standard and custom objects configured in the workspace. Used so workflows adapt to your data model rather than assuming one.
-   **List Attributes** Lists the attributes defined on an object, including slug, title, and type. Used before writes to map incoming fields correctly.

### Records

6

-   **Query Records** Lists and filters records for an object. The lookup step behind matching, reporting, and dedup sweeps.
-   **Create Record** Creates a new record for an object. Used when a workflow knows the record is genuinely new.
-   **Assert Record (Upsert)** Creates or updates a record matched on a single unique attribute. The default write for sync workflows, because it cannot create a duplicate.
-   **Get Record** Retrieves a single record by ID. Used to gather full context before a decision or a merge.
-   **Update Record** Updates a record's attribute values. Used for enrichment passes and status changes.
-   **Delete Record** Permanently deletes a record. The operation this page's human gate exists for.

### Lists and Entries

5

-   **List Lists** Lists the lists the API token can access.
-   **Get List** Retrieves a list's configuration, parent object, and access settings.
-   **Query List Entries** Lists and filters entries in a list. Used to read pipeline state for routing and reporting.
-   **Add List Entry** Adds a record to a list. The step that puts a new signup on the pipeline.
-   **Delete List Entry** Removes an entry from a list. Used when a record moves pipelines or exits a process.

### Notes

4

-   **List Notes** Lists notes, optionally scoped to a parent record.
-   **Create Note** Creates a note attached to a record. Used to log call summaries, transactions, and agent decisions where the team will read them.
-   **Get Note** Retrieves a note's title, content, and parent reference.
-   **Delete Note** Permanently deletes a note. Used only in cleanup workflows with review.

### Tasks

5

-   **List Tasks** Lists tasks in the workspace with pagination.
-   **Create Task** Creates a task with plain-text content. Used to turn agent findings into assigned follow-ups.
-   **Get Task** Retrieves a task's content, deadline, completion state, and linked records.
-   **Update Task** Updates a task. Used to reassign or complete follow-ups as workflows progress.
-   **Delete Task** Permanently deletes a task.

### Comments

3

-   **Create Comment** Creates a comment. Used to flag a record to its owner with context they can reply to.
-   **Get Comment** Retrieves a comment's content, author, and thread.
-   **Delete Comment** Permanently deletes a comment. Deleting a thread's first comment removes the thread, so cleanup workflows treat it carefully.

### Workspace

1

-   **List Workspace Members** Lists workspace members with name, email, and access level. Used to resolve the right owner before assigning or flagging.

## Frequently Asked Questions

### What can FlowRunner do with Attio?

FlowRunner agents can run List Objects, List Attributes, and Query Records in Attio, plus 23 more actions.

### Does connecting Attio to FlowRunner require OAuth?

No. Attio connects to FlowRunner with an API key, no OAuth flow required.

### Can Attio trigger a FlowRunner workflow automatically?

Attio doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.

**Work at Attio?** This integration exposes Attio to AI agents on every FlowRunner plan, including through MCP, at no cost to you. [See what FlowRunner offers integration partners](https://flowrunner.ai/integrations/partners), including how to keep this page current.

---
Markdown version of https://flowrunner.ai/integrations/attio. Site index: https://flowrunner.ai/llms.txt
