Attio destination integration

Updated

About this integration

Powerful, flexible and data-driven, Attio makes it easy to build the exact CRM that your business needs.

Our Attio destination creates or updates records for people, users, companies, and workspaces in Attio. This integration helps you keep your Attio workspace up-to-date with the latest information about your customers.

 BCC yourself to capture emails in Attio!

Attio captures email activity from your inbox(es). To capture email activity from Customer.io, make sure you add your Attio-connected email as a BCC recipient to your messages so your email activity shows up in Attio. Learn more

Getting started

  1. Go to the Data Pipelines tab and click Connections.

  2. Click Add New under Destinations.

  3. Select the Attio destination.

  4. (Optional) Select the sources that you want to connect to this destination. You can always connect sources to your destination later. We’ll only show you sources that you can use with your destination.

  5. Configure your destination.

  6. Click Enable Destination.

Identify User

Attio has two different kinds of records for people: Person and User. The Identify User action asserts both records and links them together.

  • A Person represents an actual human. People have names, email addresses, Twitter profiles, email and calendar interactions, etc. (In some other CRMs, you might think of this as a lead or contact).

  • A User represents a user login or profile in your product. Users might have feature flags, permission levels, etc. In Attio, a person can have multiple user records—like a person that has multiple logins across workspaces.

When you identify someone, the Attio Identify User action creates both records—a person and a user—and links them together. Attio relies on both email and ID values to create, update, and associate people so your `identify call must capture both properties:

  1. An email property, to create or update a Person. By default, we map to traits.email in your identify call.
  2. An ID property, to create or update an associated User. By default we map to the userId in your identify call.
{
    "type": "identify",
    "userId": "coolUser123",
    "traits": {
        "email": "coolUser123@example.com"
    }
}   

If you need to assert people and users independently, you can configure an Assert Record action instead.

 Make sure you’ve activated the user object

You cannot use the standard user object before you activate it. Go to your Workspace Settings > Objects in Attio and click Activate next to the users object.

Set people and user attributes

 Make sure that your attributes exist in Attio

You can send attributes or traits to Customer.io and we’ll create them if they don’t already exist. That’s not the case in Attio. If you map an attribute that doesn’t exist in Attio, your action will fail and we’ll show errors for your identify requests. See attribute types below for more information.

You can assign attributes to people or users in Attio as a part of your Identify User action. To do this, you’ll need the IDs or slugs of the attributes you want to set. In general, the human-readable slugs are easier to deal with.

To set attributes in your Identify User action, click Add Key/Value for Additional User attributes or Additional Person attributes. The value on the left is the attribute ID or slug from Attio, and the value on the right is the trait from your incoming identify call that you want to set on the person or user.

The customer.io Identify User action screen showing the Attio twitter attribute
The customer.io Identify User action screen showing the Attio twitter attribute

Note that users don’t typically have many default attributes in Attio. Make sure that your attributes are declared in Attio before you add them to your Identify User action. See attribute types below for more information.

Group Workspace

The Group Workspace action creates or updates a company (by domain, like company.com) and an associated workspace (by name).

  • A Company can have names and domains, as well as enriched properties like ARR or category.
  • A Workspace represents a group of users in your product. Workspaces might have feature flags, billing configurations, customer support representatives, etc. A company can have more than one workspace.

To support both companies and workspaces, your group calls need to include both the group ID and a website trait. The website is the company we’re going to create or update, and the group ID is the workspace we’re going to create or update.

{
    "type": "group",
    "groupId": "workspaceId",
    "traits": {
        "website": "company.com",
    }
}

This mapping asserts both a company and workspace and links them together. If you need to assert your companies and workspaces independently, you should set up your own Assert Record action(s).

 Make sure you’ve activated the workspace object

You cannot use the standard workspace object before you activate it. Got to your Workspace Settings > Objects in Attio and click Activate next to the workspace object.

Set company and workspace attributes

 Make sure that your attributes exist in Attio

You can send attributes or traits to Customer.io, and we’ll create them if they don’t already exist. That’s not the case in Attio. If you map an attribute that doesn’t exist in Attio, your action will fail and we’ll show errors for your group requests. See attribute types below for more information.

To assign attributes to a company or workspace in Attio, you’ll need the ID or slug of the attribute you want to set. In general, the human-readable slug is easier to deal with.

To set attributes in your Group Workspace action, you’ll click Add Key/Value for Additional Company attributes or Additional Workspace attributes. The value on the left is the attribute ID or slug from Attio, and the value on the right is the trait from your incoming group call that you want to set on the person or user.

For example, if you wanted to set a twitter attribute in Attio, but you send traits.twitter_handle in your group call, you would set up your mapping like this:

The customer.io Group Workspace scree showing the Attio twitter attribute
The customer.io Group Workspace scree showing the Attio twitter attribute

Workspaces don’t typically have many default attributes in Attio. Make sure that your attributes are declared in Attio before you add them to your Group Workspace action. See attribute types below for more information.

Capturing emails sent from Customer.io in Attio

Attio captures email activity from your connected inbox(es), adding or updating people based on the emails you send. This lets you keep a history of conversations with your customers in Attio. But what about messages you send through Customer.io?

To capture these messages, you can:

  1. Add your sender address as a user in your Attio workspace.
  2. BCC Attio’s forwarding address on your messages.
    attio's user interface showing the forwarding address
    attio's user interface showing the forwarding address

Then, when you BCC Attio’s forwarding address on your messages, your email activity shows up in Attio.

The attio forwarding address as a BCC address on an email
The attio forwarding address as a BCC address on an email

Capturing email replies in Attio

When you set up emails in Customer.io, you can set a Reply To address. If you connected the address/inbox to Attio, Attio will capture replies to your messages.

Note that this doesn’t mean Customer.io has a record of replies. But this provides a way for you to keep replies to a group inbox in Attio.

Assert Record: create your own action

The Assert Record action lets you create or update an Attio object (like a person or a company) with a matching attribute and value. For example, you could assert an individual person by ID by email address without updating associated user records.

When you set up an Asset Record, you’ll need to set the Attio Object property. This is the kind of record you want to assert (create or update) in Attio.

Then, you’ll need to set the Matching Attribute property. This is the slug for the attribute in Attio, and must also be present in your incoming call. Using our example above, we’d select Person as our Attio Object and email as our Matching Attribute.

So, imagine we send an identify request that looks like this:

{
    "type": "identify",
    "userId": "person@example.com",
    "traits": {
        "twitter_handle": "@example-person"
    }
}

This action then attempts to find an existing person where the email matches your incoming userId. If it finds the email, we’ll update the associated twitter attribute. If it doesn’t find the email, we’ll create a new person with the email and twitter handle you’ve provided.

An assert record action for Attio set to identify people by email address
An assert record action for Attio set to identify people by email address

Advanced: Use Assert Record to capture the last email activity

Imagine that beyond message information, you want to store the last date that someone engaged with an email in Attio. To do this, you can set up a custom Assert Record action to populate email information as an attribute on people or users in Attio.

To do this, you’ll set an attribute called last_email_clicked on a person in Attio to check the last time someone engaged with a message you sent. This attribute will store the timestamp of the last time someone clicked a link in an email you sent.

Before you begin, make sure that you’ve set up a custom attribute in Attio to store the last email sent. You can do this by going to your Objects page in Attio, selecting the object you want to set attributes on, and going to the Attributes tab. Find your attribute, click and select Copy slug.

the attio people attributes screen
the attio people attributes screen
  1. In Customer.io, go to your Attio destination and click Add Source.
  2. Select the Journeys Message Metrics source; this source provides message data for your Assert Record action.
  3. Now go to Actions and click Add Action.
  4. Select Assert Record as the action type.
  5. Set the Trigger to Track Event Name is email_clicked.
  6. Set the Attio Object to Person or User—whichever you want to update with the last email sent information.
  7. Under Attributes, click Add Key/Value and set the Key on the left to the slug of the attribute you want to update in Attio. For this example, you’ll set the Key to last_email_clicked.
  8. On the right, set the Value to $event.timestamp. This value is the timestamp of the last email_clicked event.
  9. Click Save to save your action.

Now, whenever someone clicks a link in an email, you’ll update the last_email_clicked attribute on the person or user in Attio with the timestamp of the last email clicked.

Attribute types

Before you add attributes to any of your Attio destination actionsA block in a campaign workflow—like a message, delay, or attribute change., you should make sure that they exist in Attio and that you have the right ID or slug.

  1. Go to your Objects page in Attio.
  2. Select the object you want to set attributes on and go to the Attributes tab.
  3. Find your attribute, click and select Copy slug.
    the attio people attributes screen
    the attio people attributes screen

Our Attio destinationAn integration that sends data out of Customer.io—your data’s ultimate destination. integration supports all of Attio’s attribute data types. Below are examples of the formats that Attio expects for each type of attribute. A request will fail if you attempt to send a value that doesn’t match the attribute type in Attio.

You can pass null to unset any attribute value in Attio.

typeFormatExample values
actor-referenceAn email address of a workspace member"alice@attio.com"
checkboxBooleantrue, false
currencyNumber with up to 4 decimal places99, 29.9999
dateYYYY-MM-DD"2023-09-28"
domain{domain}.{tld}"app.attio.com", "www.example.com"
emailA valid email address"person@example.com"
locationString with all valid address parts (street address, city, state, country, and postal code) combined“1 Infinite Loop, Cupertino, CA, US”
numberNumber, stored as a 64-bit float42.192, 17
personal-nameLast name(s), First name(s) (note the comma in the middle)"Bloggs, Joe"
phone-numberE.164 format, starting with +..."+15558675309"
pipelineA UUID or title representing the status"open", "closed"
ratingInteger from 0 to 50, 5
record-referenceSpecifies a reference to another record. See Attio’s Record reference for more information. All standard records have at least one “record reference” attribute. For example, you typically reference a person in Attio by email address or a user by ID."person@example.com", "app.attio.com", "0677efa..."
selectA UUID or title representing the option"open"
textString"A piece of text"
timestampISO8601, e.g. YYYY-MM-DDTHH:MM:SS. See Attio’s Timestamp documentation for more about supported timestamp formats."2023-09-28T04:39:17"
Copied to clipboard!
  Contents
Is this page helpful?