CRM
Reconcile Attio Duplicate Merges with Field-Level Survivorship Rules
When two Attio person records are merged, applies deterministic field-level survivorship rules (newest verified email, most-complete address.
How it runs
The automated pipeline, trigger to output.
- TriggerAttio record-merge webhook (People)Attio
- ActionFetch both pre-merge records from AttioAttio
- LogicApply field-level survivorship rules
- ActionPatch surviving record with winning valuesAttio
- OutputAppend per-field decisions to Postgres audit logPostgres
What it does
Attio's native merge keeps one record's value per field somewhat arbitrarily. This workflow re-decides every conflicting field using explicit survivorship rules, then overwrites the survivor so the merged contact reflects your data-quality policy rather than merge order.
When to use it
Run it whenever your team merges duplicate people in Attio and you need consistent, defensible field choices — for example keeping the most recently verified email, the non-empty phone, or the value from the higher-priority source system.
How it works
- 1An Attio webhook fires on a record-merge event for the People object, carrying both the surviving and losing record IDs.
- 2The workflow fetches both full records from Attio so all pre-merge field values are available.
- 3A survivorship logic step compares each conflicting attribute (email, phone, address, owner, lifecycle stage) against ordered rules: prefer verified, prefer most-recent, prefer non-null, then prefer source priority.
- 4An action step patches the surviving Attio record with the computed winning values.
- 5The chosen values, losers, and rule that decided each field are appended to a Postgres audit table for traceability.
Set it up
What you configure once, before turning it on.
- 1Connect AttioReal-time CRM with structured data + powerful views.
- 2Connect PostgresAny Postgres URL — query, write, migrate.
- 3Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
- 4Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
- 5Test, then turn it onRun once against a sample, confirm the output, then enable the trigger.
More CRM workflows
Backfill Intercom conversation topics onto stale HubSpot contacts
Finds HubSpot contacts with no recent Intercom topic, pulls their conversation history from Intercom, classifies the dominant topic with OpenAI.
Daily orphaned-opportunity sweep with manager Slack digest
Each morning this scans Salesforce for open opportunities owned by inactive users and posts a per-manager digest in Slack listing the orphaned deals that need a new owner.
AI-Personalized Dormant Account Win-Back
On a dormancy anniversary, an agent researches the account's history and recent public signals, drafts a genuinely personalized win-back email.
Dormant Account Anniversary Re-engagement Email
Each day, finds Attio accounts whose last activity was exactly N months ago and sends each owner's contact a personalized re-engagement email from Gmail.
Dormant Account Check-In Call Scheduler
On the anniversary of an account's last touch, books a tentative check-in call on the owner's Google Calendar and emails the contact a scheduling invite.
Weekly Dormant-Anniversary Cohort Digest
Every week, groups dormant Attio accounts by which last-touch anniversary they hit that week, builds a prioritized digest.
Run it inside a business
This workflow drops into a full company template. Import the org, and this is one of the playbooks its agents run.

Run this workflow in your colony.
14-day trial. No DevOps. No Sales call. Provisioned in under a minute.
