Connect SetSmart to HubSpot
SetSmart pushes the leads its AI qualifies in your DMs into HubSpot as a contact, a deal, a note and, when a call is booked, a meeting. Leads who agree to a call are pushed too, labeled as such. This page walks through the setup, the data it writes, the data it reads and the permissions it asks for.
In the app: Settings, then Integrations, then HubSpot.
What SetSmart creates in HubSpot
Leads the AI marked qualified, leads who booked a call and, unless you turn it off, leads who agreed to one. Each becomes up to four linked records. Nothing else is created.
A contact
The lead's name, phone and email, plus two SetSmart properties: their Instagram username and the lead source (Instagram DM, Facebook Messenger or WhatsApp). Before creating anything, SetSmart searches your portal for an existing contact with the same email, then the same phone. A match is reused, never duplicated, and only the two SetSmart properties are added to it.
A deal
A deal named after the lead, created in the pipeline and stage you choose, and associated with the contact. A lead who agreed to a call without qualifying yet gets a deal whose title ends in (SetSmart, call OK) instead, in a stage you can pick, whose default is never further along than your qualified stage. If that lead later qualifies or books, SetSmart moves the deal to your qualified stage, unless your team already moved it: their move wins.
A note
The full conversation transcript, preceded by the qualification context and a header saying whether the lead qualified or agreed to a call, attached to both the contact and the deal, so your team can read the exchange without leaving HubSpot.
A meeting
When the lead booked a call, a meeting at the agreed time, associated with the contact and the deal. If the lead books after their first sync, the meeting is added on a later run.
How to connect
Four steps, a few minutes, no configuration required to get the first leads flowing.
Open the HubSpot page in SetSmart
In the SetSmart app, go to Settings, then Integrations, and open the HubSpot card. It leads to the connection page at /app/hubspot. You need the admin role on your SetSmart workspace.
Approve on HubSpot
Click Connect HubSpot. You are redirected to HubSpot's consent screen, which lists exactly the permissions described below. Pick the account you want to connect and approve. OAuth is the only authentication method: SetSmart never asks for an API key or a password.
Check the connection
Back in SetSmart, the page shows your portal domain and the email of the HubSpot user who approved the connection. The connection belongs to your whole SetSmart workspace, so teammates do not need to connect again.
Choose a pipeline and a stage
Pick the deal pipeline and the stage where new deals should land. Your portal's default pipeline and its first stage are pre-selected, so the sync works without any configuration. You can change both at any time.
What happens right after connecting
The sync runs every 15 minutes. Here is what the first runs do.
The SetSmart properties are created
SetSmart adds a property group named SetSmart to your contacts, with two text properties: Instagram username and lead source. They exist so you can segment and build workflows on SetSmart leads. This happens once, at connection.
The last 90 days are imported
Leads who qualified, booked or agreed to a call in the 90 days before you connected are queued and imported automatically, up to 50 per run with a run every 15 minutes. Most accounts see their backlog complete within the first hour, the heaviest within a few hours. Older leads are left out on purpose: dumping years of history into a pipeline would bury it.
New leads flow continuously
After the backlog, every new lead that qualifies, books or agrees to a call is pushed on the next run, so within 15 minutes. Leads who book a call after they were synced get their meeting added the same way.
What SetSmart writes, and what it never touches
The sync is a one-way export of your SetSmart leads. Every read it performs is listed here, in full.
SetSmart writes
- Contacts for the leads it qualified or that agreed to a call, or just the two SetSmart properties on an existing matching contact
- Deals, only in the one pipeline you selected, in your chosen stage or the call OK stage
- Notes carrying the conversation transcripts
- Meetings for booked calls
SetSmart reads
- The names of your deal pipelines and their stages, to fill the pickers and resolve the default stages. Pipeline definitions, not your deals.
- An exact-match search for the lead's own email, then phone, right before creating a contact. This is the duplicate check; a match is reused instead of duplicated.
- One contact record every 15 minutes, on every connected account: the connection check. Each sync run requests a single contact, asking only for its internal id, to verify the connection still works and to keep the access token fresh. It exists because an account with no leads to push would otherwise never reveal a revoked or expired connection. You will see this read in your API log; SetSmart stores nothing from the record, only the time of the last successful check.
- The current stage of a deal SetSmart itself created, read once before moving it to your qualified stage when its call-agreed lead qualifies. A deal your team already moved is left alone.
SetSmart never
- Browses, lists or exports your contacts. The reads listed above are the only ones SetSmart performs, and it stores nothing from them.
- Modifies your existing data. On a matched contact, only the two SetSmart properties are set. Your names, emails and phone numbers are left as they are.
- Deletes anything, in HubSpot or in SetSmart.
- Reads your emails, tickets or any record it did not create. The only deal SetSmart ever reads is one it created itself, and only its stage.
- Messages your leads or changes their state in SetSmart because of the sync.
Permissions requested, and why
The consent screen lists these scopes. Each one maps to a single behaviour described on this page.
crm.objects.contacts.read
Search for an existing contact by the lead's email or phone before creating one (the duplicate check), and read one contact record every 15 minutes (the connection check described above). These are the only contact reads.
crm.objects.contacts.write
Create the contact and set the two SetSmart properties. HubSpot also requires this scope for creating the notes and the meetings.
crm.objects.deals.write
Create the deal for each synced lead, and move a call-agreed deal to your qualified stage when its lead qualifies.
crm.schemas.contacts.write
Create, once at connection, the SetSmart property group and its two contact properties.
crm.schemas.deals.read
Read the names of your deal pipelines and their stages, so the picker shows your real ones. This reads pipeline definitions, not your deals.
oauth
A baseline scope HubSpot attaches to every app. SetSmart uses it to identify your portal and keep the connection alive by renewing its tokens.
How to disconnect
On the HubSpot page in SetSmart, click Disconnect. SetSmart revokes its own access with HubSpot, so the app stops appearing as connected in your portal, and deletes the stored credentials on its side. Nothing already created in HubSpot is removed.
If you reconnect later, SetSmart resumes where the sync stopped: your pipeline choice is kept, and leads that were already synced are not imported again.
