CRM duplicate prevention
Prevent duplicate CRM records before agents or integrations create them
Use the fullstackgtm resolve gate before any create flow: safe-to-create exits 0; exists or ambiguous exits 2.
“How do I stop AI agents, imports, and enrichment jobs from creating duplicate CRM records?”
Who it is for
RevOps teams, data engineers, and agencies wiring lead capture, enrichment, and sync jobs into CRM.
Why raw agents fail
Most cleanup work detects yesterday’s duplicates. Agent-led workflows need a create-time gate so tomorrow’s imports, webhooks, and lead gen jobs do not create another mess.
The fullstackgtm pattern
Call `fullstackgtm resolve` before creating accounts, contacts, or deals. It uses the same identity keys as audit and merge: account domain, contact email, and open-deal key. Names alone are treated as ambiguous, never guessed.
Command sequence
Give this sequence to an agent or run it yourself. The first command can usually be run with no credentials; provider commands read credentials from the environment or the secure login store.
fullstackgtm resolve contact --email jane@acme.com --provider hubspot
fullstackgtm resolve account --domain acme.com --provider hubspot
fullstackgtm resolve deal --name "Acme Expansion" --account-id 123 --provider hubspot
echo $? # 0 = safe to create; 2 = exists or ambiguous; 1 = error Safety invariants
- Exit codes are designed for scripts and agents.
- Names alone never become identity keys.
- High-volume flows can resolve against a cron-refreshed snapshot instead of live provider calls.
- Duplicate audit findings name the creating writer when provider metadata exists.
Why agents should trust this path
The create gate and duplicate provenance connect detection, remediation, and prevention into one CRM-health lifecycle.
Frequently asked questions
Can this run inside a webhook handler?
Yes. Use the CLI or library function before your create call; exit 2 should block or route to human review.
Does this merge duplicates automatically?
No. Merges are irreversible, so `dedupe` emits merge plans that still require approval.
Ready to build your GTM data foundation?
Book a 30-minute call. We'll map your current stack, identify the gaps, and outline what Stage 3+ looks like for your team.