Skip to main content
Configure a connected HubSpot account from the Chert console. Every setting below is per HubSpot account; multiple Chert projects each bound to a different HubSpot account run independently.

Before You Begin

RequirementHow to verify
The HubSpot account is connectedSettings → Integrations in the Chert console shows the account ID and a green Connected badge.
At least one phone line is healthy in the bound projectThe project’s Phone Lines page shows one or more lines with status active.
The project’s CRM campaign has a message templateSettings → Template is non-empty.

Settings

Open Settings → Integrations in the Chert console and click the connected HubSpot account. Each setting persists immediately on save.
SettingDefaultEffect
Bound Chert projectThe project the install was launched fromAll sends from this HubSpot account land in this project’s lead pool. Re-pointing requires a disconnect and reconnect.
Phone linePool defaultThe phone line that sends from. Leave on Pool default to let Chert pick from the project’s healthy lines on each send.
Auto-create leads on workflow sendOnWhen a workflow action fires for a contact whose phone is not in Chert yet, create a lead before sending. Off makes the workflow action no-op for unknown contacts.
Auto-send on contact creationOffWhen a contact is created in HubSpot, fire an iMessage immediately using the project’s CRM template.
Auto-send template overrideEmptyOptional template used by auto-send on contact creation only. When empty, falls back to the project’s CRM template.
LabelHubSpot account IDDisplay label shown on the admin dashboard. Cosmetic only.
The bound project is locked after install on purpose — silently re-pointing an active integration would move conversation history between projects mid-flight. Disconnect and reinstall from the destination project to move.

Contact Phone Mapping

Chert reads two HubSpot contact properties when resolving a phone number, in priority order.
OrderPropertyNotes
1phoneThe default HubSpot phone property. Preferred.
2mobilephoneUsed when phone is empty.
Numbers are normalized to E.164 before matching. A contact whose phone is (415) 555-2671 matches a Chert lead whose number is +14155552671. There is no UI to remap these properties. If your account uses a custom property for the primary phone, copy it into phone through a HubSpot workflow before triggering a Chert send.

Webhook URL

The OAuth public app declares its webhook URL once at the app level. Customers do not configure a webhook URL — the install flow wires the account up to the right URL automatically.
SubscriptionEndpointPurpose
app.uninstalledhttps://console.trychert.com/api/hubspot/uninstallMarks the tenant inactive when the customer uninstalls from HubSpot.
contact.creationhttps://console.trychert.com/api/hubspot/webhookOptional auto-send on new contact.
Both endpoints verify the HubSpot Signature v3 header on every request. See Security for the algorithm.

Workflow Custom Action

The Send iMessage via Chert action accepts these inputs in HubSpot’s workflow editor.
InputRequiredNotes
PhoneYesMap from the contact’s phone or mobilephone property.
MessageYesFree text. HubSpot’s token picker resolves contact tokens before sending.
NameNoPersisted on the lead row when auto-creating.
CompanyNoPersisted on the lead row when auto-creating.
The action returns these output fields, available downstream in the same workflow.
OutputTypeMeaning
okbooleantrue if the send was accepted by Chert.
lead_idstringThe Chert lead ID, set even on dedup.
message_idstringStable Chert message ID for the send.
duplicatebooleantrue when this callback was deduped against an earlier execution.
errorstringPresent only when ok is false. Human-readable; do not branch on it.
codeintegerPresent only when ok is false. Numeric error code from the shared Messaging API error scheme — branch on this.
messagestringPresent only when ok is false. Generic human-readable detail; provider names and raw errors are not leaked here.
retryablebooleanPresent only when ok is false. true when a backed-off retry is worthwhile.
trace_idstringPresent only when ok is false. Correlation id for support; the full failure detail is logged server-side under this id.
The custom action always returns HTTP 200 — HubSpot retries non-200 responses, so logical failures are signalled in outputFields with ok: false rather than via the HTTP status. Branch your workflow on outputFields.ok (and outputFields.code for the failure class).

Auto-Send on Contact Creation

When Auto-send on contact creation is on, every contact created in the bound HubSpot account is checked against three conditions before Chert fires a send.
ConditionIf false
The contact has a phone number on phone or mobilephoneSkip. Logged as no_phone.
Auto-create leads is onSkip. Logged as auto_create_disabled.
The same objectId has not already triggered a sendSkip. Logged as dedup.
The send uses the Auto-send template override if set, otherwise the project’s CRM template. The phone line resolves the same way as manual sends — the per-account override first, then the project’s default phone line.

See Also

  • Architecture — how each setting flows through the runtime.
  • Limits — daily caps, the 10-minute minimum gap, dedup window.
  • Security — what is logged, where credentials live.