HCC Docs

Leads from your CRM

Connect HubSpot on the dashboard's Integrations page, in live. In test, connect the Test CRM: it needs no account, and you edit its contacts there. New contacts become leads, changes follow, and a contact deleted in the CRM deletes its lead. A contact with no usable phone is skipped and counted.

Lead fieldFrom
phoneThe first mapped property with a usable number
nameThe mapped properties, joined
timezoneThe mapped property. With none, the lead isn't dialed
preferredLanguageThe mapped language property, if any, when it holds a tag such as es
emailThe email property. One that's no address is blank
crmRefThe record's ID
recordUrlThe record's page
fieldsOnly the properties you choose in the field mapping

Consent has a mapping of its own: see Consent.

What happens to a lead is your code. A campaign's onLead gets synced leads like any others:

export const renewals = defineCampaign('renewals')
  .onLead((lead, c) => (lead.fields.lifecyclestage === 'customer' ? c.enroll() : c.skip()))
  .goal((lead) => lead.fields.lifecyclestage === 'customer')
  .call(sales);

A change arrives within seconds of the webhook. Customer-chosen fields, and anything a webhook missed, take up to 15 minutes, and a missed delete up to an hour. If you need a value that's fresher than that at the moment of dialing, read it from the CRM in a .call handler, using lead.crmRef.

Calls that came from a synced lead are logged on the contact, with the outcome, the disposition, the rep's notes and a link to the call page. We never write to a contact. A sync problem doesn't slow a dial; it shows on the connection, with the last error.