Early accessSome features, including AI drafting, are still being switched on.See what works today

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

  1. 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.
  2. Enter a name, click Add new scope and select crm.objects.contacts.read and crm.objects.companies.read, then click Update.
  3. Only if you will hand contacts back to HubSpot with a note: also add crm.objects.contacts.write, and crm.objects.owners.read to assign a HubSpot owner. HubSpot lists these as the scopes for notes and owners; Sendalto’s connection check verifies only the two read scopes.
  4. 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

  1. Open Settings → Integrations and choose Configure on HubSpot.
  2. 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.
  3. Save, then choose Check connection: Sendalto reads one contact and one company to prove both read scopes work.
  4. Choose Sync CRM whenever you want fresh data. Sync runs when you start it; it is not scheduled.

What syncs

Fields read from HubSpot
HubSpotSendalto
Contact emailMatches the contact. It is never changed by sync: if the email changed in HubSpot, the record is skipped as a conflict.
firstname, lastname, company, countryProfile fields. Values already in Sendalto win unless CRM ownership is on.
lifecyclestage, hs_lead_statusCRM status, owned by HubSpot by default.
Primary company associationThe contact’s company link.
Company name, domain, country, lifecyclestageCompanies, matched by HubSpot ID, then by domain.
hs_email_optoutSee 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.changed event, and a changed company a crm.company.changed event 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.