Firstring stamps every HubSpot lead with the time it took to reach your dial queue — in milliseconds, on the contact record. Call outcomes come back as a timeline note. No CSV exports, no spreadsheet between systems.
Install it once. It subscribes to new contacts on its own — nobody has to build a workflow.
A form submission, an import, a rep typing it in. However the contact is created, Firstring sees it.
The lead goes to your dial queue and the latency is written to the contact as speed_to_lead_ms.
When the call is dispositioned, the result lands on the timeline — BookedCallbackDNC
Because the clock starts at the contact's create date, a lead created last week and seen today honestly reports as a week. That's the point — it measures the gap, wherever the gap is. Test with fresh leads.
Four contact properties, created automatically on install. No manual setup, and nothing else in your portal is touched.
| Property | Type | What it holds |
|---|---|---|
speed_to_lead_ms | Number | Milliseconds from lead created to queue-ready |
clairvo_last_outcome | Dropdown | Booked, Callback or DNC |
clairvo_last_dial_at | Date | When the last call happened |
clairvo_campaign_id | Text | Which dial campaign the lead belongs to |
Seven scopes, which is exactly what the bridge calls — nothing held in reserve.
crm.objects.contacts.readFind an existing lead by email so you don't get duplicatescrm.objects.contacts.writeWrite the latency stamp and the call outcomecrm.objects.companies.readMatch a lead to the right companycrm.objects.companies.writeCreate the company record if it's newcrm.schemas.contacts.readCheck whether the four fields already existcrm.schemas.contacts.writeCreate those fields on installoauthRequired for the install itselfRemove Firstring from Connected Apps and it stops immediately. The four properties and everything written to your contacts stay in your portal — it's your data.
Install into a test portal, create a lead, and watch the number appear.
Install on HubSpot