Skip to main content
HOME>Use Cases>CRM Duplicate Merges: Clean Contacts, With a Way Back From Every Merge
Use Case9 min read

CRM Duplicate Merges: Clean Contacts, With a Way Back From Every Merge

Flagged duplicate pairs, owner rules, identity confirmations and reversals run through one Kylon room. Every survivor is snapshotted before a write, and the CRM lead approves each merge before it touches HubSpot.

Get started
Kylon TeamProduct

No easy way back from a bad merge

A matching pass in HubSpot flags contacts that look like the same person: the same name at the same company, a work address next to a personal one, a webinar sign-up that created a second record for an existing customer. Each pair needs a decision under the merge policy. Merge it, keep both, or ask the account owner. The decision itself is quick.

Everything around it is slow. The account team keeps its relationships in Attio, so the question of who should own the surviving contact is answered in another tool. Identity confirmations come back as Gmail replies days later. A rep notices a bad merge and says so in Slack weeks afterwards, and by then nobody knows what either record looked like before it was written. Without a snapshot taken before the merge, there is no clean way to undo it.

Who works in the room

People

  • CRM operations lead

    Owns the merge policy, approves every merge, owner change and restore, and signs the close-out

  • Account owners

    Confirm whether two uncertain records are the same person and flag merges that look wrong

  • Marketing operations

    Owns the department mapping table and confirms each correction to it

Agents

  • RyanMerge lead

    Reads each flagged pair, proposes a disposition under the policy, snapshots every survivor and writes merges once they are approved

    HubSpotAttioGoogle Drive
  • AdaMerge auditor

    Checks each snapshot before a write and compares the merge report with live HubSpot records

    HubSpotGoogle Drive
  • FinOwner correspondence

    Drafts identity questions and replies for a person to send, and picks up merge complaints from Slack

Data hygiene has its own Kylon room. Ryan is the default agent, so a message that names nobody, such as a question about where a contact went, reaches Ryan. Ada takes anything about the Merge Log or a snapshot, and Fin owns every email that leaves the room. Ryan reads and writes HubSpot through a lasting grant the CRM lead approved for this room, while Fin drafts in Gmail as the person it is working for, checked on every call. When a batch is approved, Ryan opens a thread for Fin whose first message lists the pairs that need an email and what each owner is being asked.

How a merge cycle runs

The merge policy and every notice that amends it live in one Google Drive folder, and the room guidelines point there. The snapshots live in a Merge Log App in the room, one row per pair. No pair is written without a snapshot, and no stage closes without a person.

  • Agent works
  • Person decides
  • Arrives or gets recorded
Scroll sideways to see the whole flow.
StageWhat happensWho actsWho decides
First passAll 30 pairs get a disposition, and each survivor's fields are copied to the Merge Log before any writeRyan, from HubSpot and AttioThe CRM lead approves the merge list
Owner rule changeSurvivors are re-checked against the new owner rule, and owners are rewritten only where the answer changesRyanThe CRM lead approves; the sales manager confirms how the rule reads
Identity confirmationsSix uncertain pairs are resolved on the account owners' replies, and two threads get the reply they asked forRyan, then Fin for the repliesAccount owners confirm; a person sends each reply
Department mapping fixDepartment values on survivors are re-derived from the corrected mapping tableRyanMarketing operations confirms the table
ReversalTwo pairs that turned out to be different people are restored from their first-pass snapshotsRyan, checked by AdaThe CRM lead approves the restore
Log spot-checkThe merge report is compared with live HubSpot records and every mismatch is listedAdaThe CRM lead decides each fix
Close-outOne note per pair, written from the records as they stand nowRyanThe CRM lead approves the notes and signs off the cycle
Stages of one duplicate merge cycle. Pair counts, names and rules in this example are illustrative.

Rule changes after the merges are written

The owner rule is the one that usually moves. Sales leadership decides that a surviving contact follows the account owner recorded in Attio, not whoever logged the latest activity. Ryan re-checks only the survivors whose owner would change, proposes each new owner with the reason in the thread, and writes them after the CRM lead approves. A department mapping correction runs the same way, with the corrected table in the cycle folder as the only source.

A reversal is the case the snapshots exist for. A rep writes in Slack that two merged contacts are a father and son with the same name at the same family firm. Ryan restores the survivor and recreates the second contact from the snapshot taken in the first pass, not from what the record shows today, and Ada compares the restored fields with the snapshot one by one before the pair is marked reversed. The run history keeps every step of the restore for anyone who asks later.

What the checks catch

  • A merge about to be written before the survivor's snapshot is complete in the Merge Log
  • An uncertain pair moved to merge on a reply that says probably, when the policy needs a clear yes
  • A restore that would copy today's record instead of the first-pass snapshot
  • A merge report line that says merged while HubSpot still shows two live contacts
  • A survivor still carrying a department from the old mapping after the correction

What stays with people

  • Approving every merge, owner change and restore before Ryan writes it
  • Confirming identity on an uncertain pair, which only the account owner can do
  • Sending each confirmation request and reply that Fin prepares as a draft
  • Signing off the cycle close-out

Integrations in this workflow

Kylon is not a CRM and it does not take the place of HubSpot or Attio. It sits across the tools the team already runs, holds the coordination between them, and keeps the snapshots in a Merge Log App the whole team can read.

  • HubSpot holds the contacts and the flagged pairs, and takes every merge, owner and department write
  • Attio holds the account team's relationships, which the owner rule reads
  • Gmail carries the identity questions and replies, sent by a person from Fin's drafts
  • Slack is where reps flag a contact that looks wrongly merged
  • Google Drive keeps the merge policy, the department mapping table and each notice that changes them

Where to start

Start with one flagged batch, not the whole database. Connect HubSpot to the room, create a Merge Log App with a column for each snapshot, and put one rule in the room guidelines: no merge is written until its survivor has a complete snapshot and the CRM lead has approved the pair.

“The merge takes a second. Being able to take it back is what makes it safe to do.”

Set it up with your agent

Open a new Room, add your agent and paste this prompt. It connects the tools, builds the App with you and asks for your rules one step at a time, and nothing goes out until a person approves it.

Set-up prompt

Your first company harness. Where humans and agents run your business together.

Get started

More Use Cases

View all

Price List Migration: Each Account Moves Once, at the Right New Amount

Moving thirty wholesale accounts to a new price list means a disposition, an amount and sometimes a notice for each one. In a Kylon room, agents read HubSpot, Stripe and Mailchimp to propose them, and the revenue operations lead approves every change before a notice goes out.

Retail & e-commerceRevenue operationsEmail operations

SaaS Customer Renewal Desk: Renewals Closed or Held for a Reason That Is Still True

Renewal dispositions, dunning, the order file review and late customer replies run through one Kylon room. Agents check every HubSpot deal against Stripe and both mailboxes, and the controller approves each stage change before it is written.

Software & SaaSRevenue operationsFinance operations