Sync new Intercom leads and users straight into HubSpot
The moment someone signs up in Intercom, their profile lands in HubSpot with lead source and lifecycle stage set, and your sales channel hears about it.
Whenever a new contact is created in Intercom, mirror that person into HubSpot so the sales team is never working from a stale list. Trigger this workflow from an Intercom webhook and subscribe to both contact creation topics, contact.lead.created and contact.user.created, so it fires both for leads captured while browsing and for people who complete signup. Each run handles one contact.
Take the contact ID from the webhook payload and call Get a Contact in Intercom to read the full profile rather than trusting the webhook body alone. Pull the email address, first and last name, phone, the associated company name, and the custom attributes we set at signup. Also read the role field, which is how Intercom distinguishes a lead from a signed-up user now that both live in the same contacts model, and carry that through so the two can be treated differently later if needed.
Before writing anything, apply the skip rules. If the contact has no email address, stop and do nothing. If the email is on an internal or test domain, stop as well. Keep the blocked domain list as a single editable constant near the top of the workflow so it is easy to extend, and seed it with the workspace owner's own company domain plus common test domains such as example.com and mailinator.com. Skipped contacts produce no HubSpot write and no Slack message.
Next, run Search Contacts in HubSpot with a filter on the email property equal to the contact's email address, to find out whether this person already exists. HubSpot has no dedicated search-contacts-by-email operation, so use the general Search Contacts operation with an email filter rather than looking for a more specific one. Treat a non-empty result as a hit and hold on to it, because that is what decides the wording of the Slack message at the end.
Then call Batch Upsert Contacts in HubSpot with a single contact in the batch, matched on the email property so that re-running the workflow can never create a duplicate. Map first name, last name, phone and company from Intercom onto the corresponding HubSpot contact properties, and map the signup custom attributes onto the HubSpot properties that match them. Stamp a lifecycle stage on every record, and set a lead source property to Intercom so attribution survives downstream reporting. When the search returned a hit this updates the existing record; when it did not, it creates a new one. Only write the fields being mapped, and leave every other HubSpot field untouched rather than blanking it.
Finally, post one line to the sales channel using Send a Message in Slack. Name the contact, name their company, and state plainly whether the record was created or updated, for example "New HubSpot contact created: Dana Reed (Northwind Trading), source Intercom" or "HubSpot contact updated: Dana Reed (Northwind Trading), source Intercom". Keep it to a single line so the channel stays readable, and include a link to the HubSpot record when the record identifier comes back from the upsert. Fall back to a sensible placeholder such as "no company" when Intercom has no company on the profile.
Additional information
What does this prompt do?
- Picks up every new lead or user the moment they are created in Intercom, along with their name, email, company and the details you capture at signup.
- Checks HubSpot for an existing contact with that email address, then updates that person instead of creating a second copy of them.
- Stamps each record with a lifecycle stage and an Intercom lead source, so you can still tell where someone came from months later.
- Drops one line into your sales channel naming the contact, their company and whether they were added or updated, and quietly skips anyone with no email or an internal test address.
What do I need to use this?
- An Intercom workspace where you can turn on notifications for newly created contacts.
- A HubSpot account with permission to view and edit contacts.
- A Slack workspace and the channel your sales team actually watches.
- The lifecycle stage you want new contacts to land on, such as Lead or Subscriber.
- A list of any internal or test email domains you would rather keep out of your CRM.
How can I customize it?
- Change the lifecycle stage new contacts land on, or set a different one for browsing leads than for people who completed signup.
- Point the notification at a different Slack channel, or stay quiet on updates and only announce brand new contacts.
- Extend the skip list with your own internal domains, free mail providers, or any other addresses you do not want in HubSpot.
- Map extra signup details from Intercom onto your own HubSpot properties, such as plan, company size or signup source.
FAQs
Will this create duplicate contacts in HubSpot?
Does it cover both browsing leads and people who finished signing up?
What happens to someone who signs up without an email address?
Will it overwrite information already in HubSpot?
How quickly does the contact appear in HubSpot?
Related templates
New roof inspection requests from your website form land in JobNimbus within a minute, with no duplicate records and nothing retyped by your team.
Every new customer request gets a priority, triage labels, a friendly reply with the right help article, and a Slack ping only when it is truly urgent.
When a bot opens a version bump pull request, we read the real documentation for that exact version and tell you whether it is safe to merge.
The moment a deal hits Closed Won, the right contract starts in Ironclad, the link lands on the deal, and your sales channel hears who owns the next step.
Every Monday, find contracts renewing or expiring in the next 90 days, post a ranked digest to Slack, and open Asana tasks for the ones that need a decision now.
Every Friday, spot the questions your team keeps answering by hand and get a ready-to-review help article drafted from real fixes.
Your sales team should never work from a stale list.
Mirror every new Intercom contact into HubSpot the moment they appear, with attribution intact and the sales channel already notified.