Setup guide · CRM
Connect HubSpot
Sendalto reads contacts and companies from HubSpot with a service key. Your local consent records stay authoritative; a HubSpot opt-out only ever adds a restriction.
Checked against Sendalto on
1. Create a service key in HubSpot
- In HubSpot go to Development, then in the left sidebar Keys → Service keys, and click Create service key. Super admins and users with the Developer tools access permission can create keys.
- Enter a name, click Add new scope and select
crm.objects.contacts.readandcrm.objects.companies.read, then click Update. - Only if you will hand contacts back to HubSpot with a note: also add
crm.objects.contacts.write, andcrm.objects.owners.readto assign a HubSpot owner. HubSpot lists these as the scopes for notes and owners; Sendalto’s connection check verifies only the two read scopes. - Click Create and confirm. Open the key, click Show, then Copy.
Already connected with a private app token? It keeps working: HubSpot says existing legacy private apps are not affected for now. Only creating new ones is being removed — from 28 September 2026 for HubSpot accounts created on or after that date, and from 26 October 2026 for older accounts (HubSpot changelog).
2. Connect it in Sendalto
- Open Settings → Integrations and choose Configure on HubSpot.
- Paste the key into the token field. Leave CRM owns profile… off if the profile fields in Sendalto should win; turn on write-back only if you added the write scopes.
- Save, then choose Check connection: Sendalto reads one contact and one company to prove both read scopes work.
- Choose Sync CRM whenever you want fresh data. Sync runs when you start it; it is not scheduled.
What syncs
| HubSpot | Sendalto |
|---|---|
Contact email | Matches the contact. It is never changed by sync: if the email changed in HubSpot, the record is skipped as a conflict. |
firstname, lastname, company, country | Profile fields. Values already in Sendalto win unless CRM ownership is on. |
lifecyclestage, hs_lead_status | CRM status, owned by HubSpot by default. |
| Primary company association | The contact’s company link. |
Company name, domain, country, lifecyclestage | Companies, matched by HubSpot ID, then by domain. |
hs_email_optout | See opt-outs below. |
- Archived and missing HubSpot records never delete anything in Sendalto.
- Contacts new to Sendalto arrive with permission “unknown”: they cannot receive marketing until consent is documented.
- Each changed contact produces a
crm.contact.changedevent, and a changed company acrm.company.changedevent for each linked contact. Journeys and webhooks can use them.
Opt-outs
When hs_email_optout is true, Sendalto adds the address to the do-not-contact list for all email, marks an active contact unsubscribed and cancels emails queued for them. A later sync never removes that restriction: HubSpot can add opt-outs, not lift them. Consent, status and suppression stay local.
Optional: hand a contact back to HubSpot
With write-back on, an owner or admin can hand a synced contact to HubSpot from Settings → Integrations: Sendalto confirms the contact’s email in HubSpot still matches, optionally assigns the HubSpot owner you enter, and adds your note to the contact. Nothing is written back automatically.