Agent setup guide
Duplicate Contact Reviewer
Checks every new HubSpot contact for likely duplicates and suggests the merge in Slack.
What it does
Checks every new HubSpot contact for likely duplicates and suggests the merge in Slack.
- Starts from each new HubSpot contact (checked on your plan's schedule interval).
- Searches HubSpot for contacts with the same company email domain (free mail like gmail.com is skipped), the same phone number and the same last name.
- AI keeps only likely duplicates of the same person (matching phone, same name at the same company, near-identical emails), with the evidence and which record to keep.
- Posts the merge suggestion to your Slack channel and notes the likely duplicates on the new contact's timeline.
What it needs
- A paid plan (agents run live on paid plans).
- An AI provider key (Settings → AI Providers).
- HubSpot and Slack, connected in Settings → Integrations.
What it doesn't do
- It never merges, edits or deletes contacts: a person merges in HubSpot.
- It checks new contacts only, not your existing database.
- It finds up to 25 candidates per search, so a very common last name or a big company domain may hide some matches.
- Phone matching relies on HubSpot's searchable phone number (digits without the country code).
Availability and plans
Available
Its workflow is built and tested, and every app it needs is live. You can get it and set it up now.
Included free on the Enterprise plan; on other paid plans it's a one-time purchase per workspace (the price is on the Agents page). The Agents page in the app always shows its current status.
Before you start
- A paid plan: agents run live, and the Free plan only runs Dry Runs.
- An AI provider key (OpenAI, Anthropic, Google and more) in Settings → AI Providers. AI usage is billed by your provider.
- These apps, connected in Settings → Integrations: HubSpot and Slack.
- The app it watches, connected in Settings → Integrations (the agent starts from an app event).
- About 12 minutes.
Set it up step by step
Get the agent first (buy it, or it's already yours when your plan includes it), then in Agents → My agents press “Set up this agent”. That creates the agent's workflow in your workspace (it counts towards your plan's workflow limit) and opens the canvas with a setup checklist above it. Each item links to the exact place to go and ticks itself off when it's done.
1. Connect your AI provider
The AI steps run on your own key (OpenAI, Anthropic, Google and more). Add one in Settings → AI Providers.
2. Connect HubSpot
Connect your HubSpot account (Settings → Integrations → HubSpot).
3. Connect Slack
Connect the Slack workspace your team uses (Settings → Integrations → Slack).
4. Pick your HubSpot account
Pick your HubSpot account on the trigger and in the three search steps and “Note it on the new contact”.
| Setting | What to enter | In step |
|---|---|---|
| HubSpot account (new contacts) | The HubSpot account whose new contacts are checked. Pick your connected HubSpot account. | “New contact in HubSpot” |
| HubSpot account (domain search) | The same HubSpot account. Pick your connected HubSpot account. | “Find contacts at the same company domain” |
| HubSpot account (phone search) | The same HubSpot account. Pick your connected HubSpot account. | “Find contacts with the same phone” |
| HubSpot account (name search) | The same HubSpot account. Pick your connected HubSpot account. | “Find contacts with the same last name” |
| HubSpot account (notes) | The same HubSpot account, used to note the duplicates on the new contact. Pick your connected HubSpot account. | “Note it on the new contact” |
5. Pick the Slack account and channel
Open “Suggest the merge in Slack” and pick your account and channel. Invite the app to private channels first (/invite @Fluxo Flow).
| Setting | What to enter | In step |
|---|---|---|
| Slack account | The Slack workspace merge suggestions are posted to. Pick your connected Slack account. | “Suggest the merge in Slack” |
| Slack channel for merge suggestions | The channel whoever owns CRM data watches, e.g. #crm-hygiene. | “Suggest the merge in Slack” |
6. Test it with Dry Run
Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.
7. Switch the trigger on
Open the trigger and click “Activate app trigger”: new HubSpot contacts are checked on your plan's schedule interval.
How it works
The agent is a normal workflow with 11 steps (2 AI steps). You can open, edit and monitor it like any other workflow.
- New contact in HubSpot — Starts on “New contact” in HubSpot (an app event). Starts a run for each contact created in HubSpot (checked on your plan's schedule interval).
- Prepare the match keys — AI step (runs on your AI provider key). AI works out the company email domain (skipping free mail like gmail.com), the phone number digits and the last name to search on.
- Find contacts at the same company domain — HubSpot: Find records. Searches HubSpot for contacts whose email uses the same company domain.
- Find contacts with the same phone — HubSpot: Find records. Searches HubSpot's searchable phone number (digits without the country code).
- Find contacts with the same last name — HubSpot: Find records. Searches HubSpot for contacts with the same last name (the comparison step decides which are really the same person).
- Decide which are likely duplicates — AI step (runs on your AI provider key). AI compares the new contact with every candidate (email, phone, name, company) and keeps only likely duplicates, with the evidence and which record to keep.
- Any likely duplicates? — Decision: picks the branch to follow. Contacts with no likely duplicate end here; the rest go to Slack with a note on the record.
- No duplicates — Kept in the run history. Branch: No duplicates. The run history keeps the check.
- Suggest the merge in Slack — Slack: Post a message. Branch: Likely duplicates. Posts the new contact, each likely duplicate with the evidence and which record to keep, to your CRM channel.
- Note it on the new contact — HubSpot: Add a note. Logs the likely duplicates on the new contact's timeline so anyone opening it sees the warning.
- Flagged for review — Kept in the run history. The run history keeps the duplicates found; a person merges them in HubSpot.
Test it with Dry Run
Press Dry Run in the canvas. The agent runs on the sample data stored on its trigger (the “Sample data for Dry Run” box), so you can check every step's output before anything is live. The sample has the same shape as a real event from the app.
Sample data fields
email, id, firstname, lastname, phone, company, createdate, properties.email, properties.firstname, properties.lastname, properties.phone, properties.company, properties.lifecyclestage.
- Nothing is sent or written: app actions, emails and Slack posts are simulated, and AI steps don't call your AI provider.
Go live
- Open the trigger and click “Activate app trigger”: new HubSpot contacts are checked on your plan's schedule interval.
- Activating the app trigger needs the trigger's connected account. The first check only remembers what's already there, so older items don't start runs; the same item never starts two runs.
- The setup checklist adds a “paid plan” item before activation: live runs need a paid plan (the Free plan only runs Dry Runs).
- When every checklist item is done and the trigger is on, the checklist says “Live — this agent is running”. Follow its runs in the workflow's History tab and in Analytics → Agents.
Questions
Does it merge contacts?
No. It suggests merges in Slack and notes them on the record; a person merges in HubSpot (Actions → Merge).
Will colleagues at the same company be flagged?
No. A shared company domain or last name alone isn't treated as a duplicate; it needs a matching phone, a matching name at the same company, or near-identical emails.
Troubleshooting
- “No AI provider connected” or a rejected key: connect or fix the key in Settings → AI Providers, then press Test there.
- A checklist item stays unticked: the setting is still empty or still contains its placeholder text. Open the step from the checklist and fill it in.
- An app step fails with “Needs reconnect”: the account's access was revoked or expired. Reconnect it in Settings → Integrations.
- Slack says the app isn't in the channel: in Slack, type /invite @Fluxo Flow in that channel (always needed for private channels).
- No runs start: activate the app trigger with a connected account. Only items created after activation start runs.
- A step failed: open the run in History and check that step in the Trace tab for the error and what it received.
Generated from the agent's own workflow, so it always matches what the agent does. Last updated .