Zapier
What this Zap does: When a new contact is added to an Attio list, FullEnrich finds the contact's verified email and phone number, then updates the same Attio record with the enriched data. The Zap uses 3 steps: Attio List Entry Created → FullEnrich Enrich Contact → Attio Update List Entry.

Use this Zap
1. Prepare your Attio list
Make sure your Attio list has the following attributes on the person record:
First Name
Last Name
Company Name
Company Domain (optional, improves match rates)
LinkedIn URL (optional)
Email (will be filled by FullEnrich)
Phone (will be filled by FullEnrich)
2. Open the Zap template
Click the Use this Zap button above to open the template in Zapier. The Zap contains 3 pre-configured steps:
Trigger: Attio - List Entry Created (instant)
Action 1: FullEnrich - Enrich Contact
Action 2: Attio - Update List Entry
3. Configure the Attio trigger
Click on the first step (List Entry Created). Connect your Attio account, then select the List you want to monitor. This is an instant trigger — the Zap fires immediately when a new entry is added to the list, with no polling delay.
4. Connect your FullEnrich account
Click on the second step (Enrich Contact). Connect your FullEnrich account using your API key. Map the following fields from the Attio trigger:
Name of Your Enrichment → e.g.
AttioFirst Name →
First Namefrom AttioLast Name →
Last Namefrom AttioCompany Name →
Company Namefrom AttioDomain of the company →
Company Domainfrom AttioEnrich with → Emails + Phones
5. Configure the Update List Entry step
Click on the third step (Update List Entry). Select the same List as the trigger. Map the following fields:
Entry ID →
Entry IDfrom the Attio trigger stepEmail →
Most Probable Emailfrom FullEnrichPhone →
Most Probable Phonefrom FullEnrich
6. Test and turn on
Click Test step on each step to verify everything works — make sure at least one entry exists in your Attio list. Check that the Email and Phone fields get updated correctly. Once confirmed, click Publish to turn the Zap on. Every new list entry will now be automatically enriched.
Note: This trigger is instant — unlike polling-based triggers, the Zap fires immediately when a new entry is added to your Attio list. No delay.
Problem | Solution |
|---|---|
FullEnrich returns no email | Make sure First Name, Last Name, and Company Name are mapped correctly. Adding the Company Domain improves match rates. |
Attio update fails | Check that the Entry ID is mapped from the trigger step, and that the Email and Phone attributes exist on the record. |
Zap doesn't fire | Make sure the Zap is published and that you're adding entries to the correct list. Test by adding a new entry manually. |
Duplicate enrichments | Zapier tracks which entries it has already processed. If you see duplicates, check that you don't have multiple Zaps running on the same list. |
Make
What this scenario does: When a new contact is created in Attio, the scenario instantly fetches the person's details, sends them to FullEnrich for enrichment, then updates the Attio record with the verified email and phone number.
4 modules: Watch Entries → Get a Person → FullEnrich Enrich → Assert a Person

Get template
1. Watch Entries (instant trigger)
Go to make.com and click Create a new scenario. Add the first module: search for Attio and select Watch Entries. Connect your Attio account. This is an instant webhook-based trigger — the scenario runs immediately when a new entry is created in Attio, with no polling delay.
2. Get a Person
Add a second module: Attio → Get a Person. Map the Person ID to {{1.id.entry_id}} from the Watch Entries trigger. This fetches the full person record (First Name, Last Name, Company) needed for enrichment.
3. FullEnrich - Enrich
Add a third module: FullEnrich → Enrich. Connect your FullEnrich API key. Map the fields from the Get a Person module:
First Name →
{{3.values.name[].first_name}}Last Name →
{{3.values.name[].last_name}}Company Name →
{{3.values.company[].active_from}}
Under Enrich with, select Emails and Phones.
4. Assert a Person (update the record)
Add a fourth module: Attio → Assert a Person. Set the Matching Attribute to the Record ID from the Get a Person module ({{3.id.record_id}}). Then map the enriched data:
Email addresses →
{{2.email}}(Most Probable Email from FullEnrich)Phone numbers →
{{2.datas[].contact.most_probable_phone}}
5. Test and activate
Click Run once to test, then create a new contact in Attio. Check that the Email and Phone fields have been updated on the record. Once confirmed, toggle the scenario ON. Since the trigger is instant (webhook), new contacts will be enriched in real time.
Problem | Solution |
|---|---|
FullEnrich returns no email | Make sure the Get a Person module is returning First Name, Last Name, and Company correctly. Check that the Person ID mapping uses |
Assert a Person fails | Check that the Matching Attribute is set to the Record ID from Get a Person ( |
Scenario doesn't trigger | Make sure the webhook is active in Attio. Go to the Watch Entries module and verify the webhook is properly connected. Try re-creating the webhook if needed. |

n8n
What this workflow does: When a new entry is added to an Attio list, the workflow fetches the person and company details, sends them to FullEnrich for enrichment, then updates the Attio record with verified email and phone. Uses two parallel flows because FullEnrich works asynchronously.
Top flow (4 nodes): Attio Webhook → Get Person → Get Company → FullEnrich Enrich
Bottom flow (2 nodes): FullEnrich Callback Webhook → Update Person

Copy template url
Setup required: Before starting, create an Attio API token (Settings → Developers) and add it as a "Header Auth" credential in n8n (
Authorization: Bearer YOUR_TOKEN). Then connect your FullEnrich credentials.
1. Import the workflow
Click Copy Template URL above. In n8n, go to Workflows → Add Workflow, click the ... menu in the top-right and select Import from URL. Paste the URL and click Import.
2. Attio Webhook (trigger)
Open the Attio Webhook node. Set the HTTP method to POST and the path to attio-new-entry. Then go to Attio → Settings → Webhooks, create a new webhook for the event list.entry.created, and paste this node's production URL. The workflow will trigger instantly when a new entry is added to a list.
3. Attio - Get Person (HTTP Request)
Add an HTTP Request node. Set the URL to:
https://api.attio.com/v2/objects/people/records/{{ $json.body.events[0].parent_record_id }}
Set Authentication to Generic Credential Type → Header Auth (your Attio API token). This fetches the full person record (name, company reference) from the webhook's record ID.
4. Attio - Get Company (HTTP Request)
Add another HTTP Request node. Set the URL to:
https://api.attio.com/v2/objects/companies/records/{{ $json.data.values.company[0].target_record_id }}
Use the same Header Auth credential. This fetches the company record to get the domain and company name for enrichment.
5. FullEnrich - Enrich Contact
Add a FullEnrich node. Connect your API key and map the fields:
Enrichment Name →
Attio New EntryFirst Name →
{{ $('Attio - Get Person').item.json.data.values.name[0].first_name }}Last Name →
{{ $('Attio - Get Person').item.json.data.values.name[0].last_name }}Company Domain →
{{ $json.data.values.domains[0].domain }}Company Name →
{{ $json.data.values.name[0].value }}Webhook URL → production URL of the callback webhook (Step 6)
Add a Custom Field with key id and value {{ $('Attio Webhook').item.json.body.events[0].parent_record_id }} — this passes the Attio record ID through to the callback.
6. FullEnrich Callback Webhook (bottom flow)
Open the FullEnrich Callback Webhook node (bottom flow). It's set to HTTP method POST with the path attio-fullenrich-callback. Copy this node's production URL and paste it in the FullEnrich node's Webhook URL field (Step 5).
7. Attio - Update Person (HTTP Request)
Add an HTTP Request node after the callback webhook. Set the method to PATCH and the URL to:
https://api.attio.com/v2/objects/people/records/{{ $json.body.datas[0].custom.id }}
Use Header Auth (Attio API token). Set the body to JSON with:
email_addresses →
{{ $json.body.datas[0].contact.most_probable_email }}phone_numbers →
{{ $json.body.datas[0].contact.most_probable_phone }}
8. Test and activate
Click Test workflow, then add a new entry to your Attio list. The top flow fetches the person and company details and sends them to FullEnrich. After a few seconds, the callback webhook receives the results and updates the Attio record. Toggle the workflow to Active and make sure both webhook URLs are set to production.
Problem | Solution |
|---|---|
Attio webhook never fires | Make sure you created the webhook in Attio → Settings → Webhooks for the event |
Get Person returns an error | Check that the Attio API token has read permissions on People. Verify the URL uses |
Get Company returns an error | The person must have a linked company in Attio. If |
Callback webhook never receives data | Make sure you're using the production webhook URL (without |
Update Person fails | Check that |


