Integrations — sync your leads with your CRM
What it is
Section titled “What it is”Integrations connect ZeroChats to the tools you already work in. Every time someone messages you on Instagram or WhatsApp, ZeroChats creates the contact in your CRM automatically — no manual exports, no copy-pasting.
Today you can connect these destinations:
| Integration | What it creates in your tool |
|---|---|
| GoHighLevel | A contact, with the lead’s tags as native GHL tags. |
| HubSpot | A contact, with the lead’s tags recorded in a note. |
| Airtable | A record in a ZeroChats Leads table inside the base you choose. |
| Custom Webhook | A JSON POST to any URL you choose, to plug in any other tool. |
You can have several connected at once: the lead is sent to all of them.
The Custom Webhook works differently from the rest: it doesn’t create contacts in a specific tool, it hands you the raw event so you can do whatever you want with it (n8n, Make, Zapier or your own backend). It has its own page: Custom Webhook.
How to connect
Section titled “How to connect”The three CRMs connect from the same place, and none of them needs an API key — you authorize with your account.
-
Go to Business setup. In the Integrations card, click the Integrations button.
-
Pick the tool and click its connect button (Connect to GoHighLevel, Connect to HubSpot or Connect to Airtable).
-
Authorize ZeroChats in the tool’s window. In GoHighLevel, choose the location you want to work with.
-
Come back to ZeroChats. The integration shows a Connected badge and starts syncing.
The Custom Webhook is set up from that same screen, but with its own steps: you’ll find them in Custom Webhook.
Airtable needs one extra step. After connecting, click Configure and choose the destination base. ZeroChats creates a table called ZeroChats Leads inside it, with the right columns (Name, Email, Phone, Instagram, Source, Tags). Until you pick a base, nothing syncs.
When a lead is synced
Section titled “When a lead is synced”Syncing is automatic and real time. There’s nothing to click and no scheduled batch to wait for. A lead reaches your CRM at these moments:
- On the first interaction: when they first write via DM or WhatsApp, or when they comment on a post or reel.
- When they get a tag, whether automatic or added by you. Only new tags are sent.
- When their contact details show up: if they leave their email while booking a meeting, or share it during the conversation, the CRM contact is updated with it. In GoHighLevel this update has its own conditions, covered below.
How we identify each lead
Section titled “How we identify each lead”This part is worth understanding, because it explains something you’ll see with your own eyes inside your CRM.
Every CRM needs a primary key: a unique value that identifies each contact and keeps duplicates from piling up. That key is usually the email or the phone number.
WhatsApp is easy: the lead writes to you from their phone number, so that number is the primary key from the very first message. The contact is created with their real phone right away.
On Instagram we have neither an email nor a phone number. Someone sends you a DM and all you know about them is their username. But the CRM still demands a primary key before it will create the contact.
ZeroChats solves this by building one out of the only thing we have: we take the username and append @instagram.com.
Instagram username: martasolerprimary key: [email protected]That solves two problems at once. First, every lead gets a unique, stable key from second zero, so the contact can be created immediately. Second, seeing that email in your CRM tells you at a glance that this lead came from Instagram and hasn’t given you their real email yet.
What happens when the lead gives their real email
Section titled “What happens when the lead gives their real email”As soon as we get the real email — because they type it while booking a meeting, or share it in the conversation — we update the contact that already exists. The placeholder email is replaced by the real one, on the same record.
No new contact is created. Nothing is duplicated. It’s the same lead, with their history intact, now carrying their correct email.
1. Marta messages you on Instagram → contact created as [email protected]2. Marta books and leaves her email → the same contact becomes [email protected]That’s how HubSpot and Airtable behave. GoHighLevel waits a bit longer.
In GoHighLevel: name, phone and real email
Section titled “In GoHighLevel: name, phone and real email”With GoHighLevel, the contact for an Instagram lead isn’t updated the moment a single detail turns up. It waits until the record is complete and writes it in one go: name, phone number and real email.
Both conditions have to be met:
- The lead is in the Booked stage — they have booked a call.
- They have left their phone number and their email in the chat. The AI asks for both while booking.
If either one is missing, the contact keeps its placeholder email.
1. Marta messages you on Instagram → contact created as [email protected]2. Marta books, leaves phone and email → the same record becomes [email protected] and gains her real phone numberHere too, no new contact is created: it’s the same record as always, with its history intact.
Which fields are synced
Section titled “Which fields are synced”| Field | GoHighLevel | HubSpot | Airtable |
|---|---|---|---|
| Name | ✅ | ✅ | ✅ (Name) |
| ✅ | ✅ | ✅ (Email) | |
| Phone | ✅ | ✅ | ✅ (Phone) |
| Instagram username | — | — | ✅ (Instagram) |
| Source channel | — | — | ✅ (Source) |
| Tags | Native tags | In a note | ✅ (Tags) |
HubSpot has no tags as such, so we write them as a timestamped note on the contact (Tags: interested, pricing). GoHighLevel does apply them as native tags, so you can filter and automate with them.
Best practices
Section titled “Best practices”- Connect the CRM before launching campaigns. Leads sync from the moment you connect, not retroactively. If you connect mid-campaign, earlier leads won’t show up.
- Use tags to segment. Since ZeroChats tags travel to the CRM, you can build automations there that fire on what the AI picked up in the conversation.
- Filter
@instagram.comout of your email sequences. A simple “email does not contain@instagram.com” filter saves you from bounces. - In Airtable, don’t rename the columns of the
ZeroChats Leadstable. The integration writes against those names.
Limitations
Section titled “Limitations”- Syncing is one-way: from ZeroChats to the CRM, never the other way around.
- Funnel stage isn’t synced. Lead stage changes stay in ZeroChats.
- There’s no custom field mapping. The fields sent are the ones in the table above.
- In Airtable, ZeroChats creates the table. You can’t point the integration at a table you already have.
- A lead with no name isn’t synced until their name is known.
- In GoHighLevel, Instagram leads keep their placeholder email until they book a call and leave their phone number and email.