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
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.