Clean up duplicate and invalid contacts in Odoo automatically

Finds duplicate contacts by phone number, merges them, and archives contacts with no real name or number.

How the work actually flows

It branches. Exactly one path is taken; runs once per each duplicate group.

Pattern: Exclusive Choice (4) · Multiple Instances with a priori Design-Time Knowledge (13)

flowchart TD trig(("workflow started on demand")):::human s0[("pull active contacts")]:::store s1["group contacts by phone number"]:::task s2[["merge duplicate groups"]]:::mi trig --> s0 s0 --> s1 gx{"× duplicate or invalid contact"}:::gate s1 --> gx p00["merge into one record"]:::task gx -->|"duplicate group"| p00 p10["archive contact"]:::task gx -->|"invalid contact"| p10 p00 --> s2 p10 --> s2 out[/"clean deduplicated contact list"/]:::out pay{{"trustworthy crm data without manual cleanup"}}:::pay s2 --> out out --> pay classDef task fill:#e7f6fe,stroke:#34b8f0,color:#2c2a29 classDef svc fill:#f6f8fa,stroke:#7c8795,color:#2c2a29 classDef mi fill:#e7f6fe,stroke:#0079a8,color:#2c2a29,stroke-width:2px classDef human fill:#fff,stroke:#0079a8,color:#0079a8 classDef store fill:#f6f8fa,stroke:#0079a8,color:#2c2a29 classDef trig fill:#00a4eb,stroke:#0079a8,color:#fff,font-weight:bold classDef trigtime fill:#00a4eb,stroke:#0079a8,color:#fff,font-weight:bold classDef trigdata fill:#8ad4f5,stroke:#0079a8,color:#06314c,font-weight:bold classDef gate fill:#fff,stroke:#e8a23d,color:#6b4708,font-weight:bold classDef out fill:#1f9d6b,stroke:#167a53,color:#fff,font-weight:bold classDef pay fill:#06314c,stroke:#021f33,color:#fff
A stepRuns once per itemA personA record or sheetOne path onlyResultPayoff
Build size
Standard

A mid-size build with several tools working together.

Business functions
Reporting & Analytics
Connects
Odoo

The problem it solves

Your contact list fills up with duplicate entries every time someone re-enters a customer by phone instead of searching first, and it quietly wrecks your sales and invoicing records. Sorting through hundreds of contacts to find and merge the same person twice, or delete the junk entries with no name at all, eats an afternoon you don't have.

Who it fits

Any business running Odoo as its CRM that wants a clean, trustworthy contact list without manual cleanup.

How it works

  1. The workflow is started on demand and pulls every active contact from Odoo
  2. Contacts are grouped by matching phone numbers to spot likely duplicates
  3. Odoo's built-in merge tool automatically combines each duplicate group into one record
  4. Contacts with no name or a broken phone number are archived instead of deleted
What you get

A contact list free of duplicates and dead entries

Your Odoo contacts end up merged and clean, with duplicate records combined and broken entries archived automatically.

What you get

A cleaned-up Odoo contact list with duplicates merged and invalid entries archived.

What you need

An Odoo account with API access.

We can build this. But should you?

The hard question is not how to build it. It is whether this is the right thing to build first.

That is what a Fractional Chief AI Officer figures out with you, before anyone writes a line of code.

Let's Talk Strategy

Related automations

Back to the AI Playbook