Provisional documentation, pending HubSpot marketplace review
The Relay app is in HubSpot's marketplace review queue. While the integration is fully functional for invited test installs, it won't appear in HubSpot's public app marketplace until HubSpot approves the listing. Once approved, this notice will be removed.
Integration guide
Connect Relay to HubSpot
Turn every Relay-handled phone call into structured CRM data, automatically. Contacts get created or matched by phone, Relay's call summary lands on the contact's timeline, urgent calls create tasks, and booked appointments create meetings. No CSV exports. No manual entry.

Available on the Business plan
The native HubSpot integration is included on the Business plan ($199.99/mo). Tenants on Solo or Team can still pipe call data into HubSpot via Zapier or custom webhooks; the native integration adds an automatic note on each call, task/meeting creation, and tighter contact matching.
Why connect Relay to HubSpot?
HubSpot is one of the most widely used CRMs for small and mid-sized businesses, contacts, deals, marketing, sales sequences, and reporting all in one place. If you already run your business in HubSpot, every Relay-handled call should land there too. Otherwise the call summary lives in your Relay dashboard and your CRM stays half-empty.
With the integration connected, Relay quietly does what your office staff would have done manually: looks up the caller in your contacts, creates them if they're new, attaches a structured record of the call, and flags anything that needs follow-up. The next time you open the contact in HubSpot, the full history of their phone interactions with Relay is right there.
What lands in HubSpot
For every completed call, Relay syncs up to four artifacts to HubSpot, only the ones that apply. A short receptionist call from a known contact might create just a note; a long urgent call from a new caller that booked an appointment creates all four.
1. Contact (upserted by phone)
Relay searches HubSpot for an existing contact matching the caller's E.164 phone number. If one exists, it's reused. If not, a new contact is created with the phone number and, when the caller's CNAM lookup returned one, a first/last name. Relay never overwrites existing contact properties.
2. Note on the contact
Every call adds a Note engagement on the contact, headed "Relay {{urgency}} call · {{duration}}s", followed by Relay's call summary, call mode, an "appointment booked" flag when relevant, and a deep link back to the Relay dashboard. Notes show on the contact's timeline alongside emails, meetings, and tasks. A richer structured timeline event is coming once HubSpot approves App Events access for the Relay developer portal.
3. High-priority Task (urgent calls only)
When Relay's classifier flags a call as urgent, a HubSpot Task with HIGH priority is created on the contact, due in 1 hour. The task title references the call; the description includes the call summary. Use HubSpot's task views, queues, or workflow triggers to get the right person on it fast.
4. Meeting (when an appointment is booked)
If Relay's receptionist books an appointment during the call (requires Google Calendar connected), a HubSpot Meeting is created on the contact with the right start/end time, time zone, and the stated purpose. Cross-references the originating call's SID.
Setting up the integration
Two requirements: an active Business Relay subscription and admin access to a HubSpot Hub (any tier, Starter, Professional, or Enterprise; Free works for testing).
Open the HubSpot integration page
Go to Dashboard → HubSpot in the Relay dashboard. Solo and Team accounts will see a plan-upgrade card here instead, that's your prompt to upgrade to Business, or to use Zapier/webhooks as an alternative.
Click Connect HubSpot
You'll be redirected to HubSpot's standard OAuth consent screen. HubSpot will ask you to confirm:
- Which HubSpot account / Hub you're connecting (if you have multiple)
- The two scopes Relay needs:
crm.objects.contacts.readandcrm.objects.contacts.write(plus the standardoauthbase scope)
Click Allow. HubSpot redirects back to Relay; the dashboard confirms the connection with your Hub's name and a "connected" badge.
Run a test sync (optional but recommended)
From the connected card on the HubSpot integration page, click Test sync. Relay re-runs the sync against your most recent call and you should see the contact, note, and any task/meeting appear in HubSpot within ~30 seconds. Use this to verify the integration works on your specific Hub before relying on it.
Make a real call
Call your Relay number, have a normal conversation with Relay, and hang up. Within ~30 seconds of the call ending, your HubSpot contact will be created (if new), the Relay call note lands on the contact, and any urgent/appointment artifacts follow. You're live.
Managing the connection
Everything lives on Dashboard → HubSpot.
Test sync
Re-runs the sync for your most recent call, same shape as a real one. Useful for spot-checking after a HubSpot property change or a Relay config tweak.
Last-sync status
The integration card shows your connected HubSpot account name and the timestamp + result of the last sync attempt. A red dot means the last attempt failed; click in for details.
Disconnect
Revokes Relay's HubSpot token. New calls stop syncing immediately; previously-synced records stay in HubSpot. You can reconnect at any time from the same page.
Token security
HubSpot refresh tokens are envelope-encrypted with Google Cloud KMS before being stored. Tokens are never logged, never transmitted to your dashboard, and are scoped to the five permissions you granted.
Common questions
Will this overwrite my existing HubSpot contacts?
No. Relay only adds a phone number (when missing) and a name (when missing and the caller's CNAM lookup returned one). It never overwrites existing properties, lifecycle stage, owner, custom properties, etc. all stay as they were.
How does Relay match a caller to an existing contact?
By E.164 phone number. Relay searches HubSpot for any contact whose phone or
mobilephone property matches the caller's number. If multiple contacts match (rare but
possible), the first hit wins and is used for the call's artifacts. We don't merge.
What if HubSpot is briefly down or rate-limits us?
Syncs run through a managed retry queue with exponential backoff over 24 hours, so transient HubSpot outages don't lose data. If we can't reach HubSpot after 24h of retries, the failure is recorded on the integration card with the underlying error, you can re-run the sync from the dashboard at any time.
Does this work with HubSpot's Free tier?
Yes for contacts, notes, tasks, and meetings, all four object types Relay writes are supported in HubSpot Free. Some downstream features in HubSpot (sequences, workflows, advanced timeline filtering) require a paid HubSpot tier, but the sync itself works on any tier.
Can I use HubSpot and Zapier at the same time?
Yes. They're independent. Some tenants use the native HubSpot integration for the structured CRM writes and Zapier for ancillary actions (Slack alerts, daily-summary spreadsheets, SMS reminders). The same call data flows through both pipes, no conflicts.
What HubSpot scopes does Relay request, and why?
Two (plus the standard oauth base scope):
crm.objects.contacts.read to look up existing contacts by phone,
and crm.objects.contacts.write to create or update contacts and to write
the associated Notes, Tasks, and Meetings on each contact (HubSpot authorizes engagement writes
through the contacts scope rather than standalone scopes). Relay does not request access to deals,
marketing emails, lists, files, or any other HubSpot data.
Ready to connect HubSpot?
One click, one OAuth approval, and every call from this moment forward starts flowing into your HubSpot Hub. No data backfill needed, but if you want previous calls in HubSpot too, run a test sync per recent call.