What Revial syncs with HubSpot
For your HubSpot administrator and whoever reviews the integration's data access — every HubSpot field Revial reads, everything it writes back, and what is deliberately left out.
Revial connects to HubSpot through two separate HubSpot apps, each with its own sign-in and its own scopes:
- The CRM sync app keeps Revial's copy of your companies, contacts, deals and activities up to date, and writes meeting notes back. Connected under Settings → Organisation → CRM integrations (see Setting up the CRM integration).
- The HubSpot Calls app turns calls logged in HubSpot into analysed Revial meetings. Connected separately, and only needed if you use call analysis.
Sections 1–8 cover what Revial reads, section 9 what it writes. Field names in
code are HubSpot internal property names, so you can check them against your
portal.
1. How the CRM sync runs
- The first sync reads everything the authorising user can see. After that, Revial checks roughly every hour and reads only records changed since the previous sync.
- On a very large portal, a backlog of activities is worked through over several syncs (up to 3,000 per sync) rather than all at once.
- Deals deleted in HubSpot are removed from Revial on the next sync.
- For every record, Revial also stores the HubSpot record as returned — the properties listed below plus its associations. Nothing beyond those properties is requested.
2. Deals
| In Revial | HubSpot property |
|---|---|
| Deal name | dealname |
| Value | amount |
| Pipeline | pipeline |
| Stage | dealstage |
| Status (open / won / lost) | Derived from dealstage |
| Win probability | hs_deal_stage_probability |
| Expected close date | closedate |
| Actual close date | closedate, once the deal is won or lost |
| Last activity | hs_lastactivitydate, falling back to notes_last_contacted and notes_last_updated |
| Company and contacts | Deal associations — the first company, the first contact, and every associated contact |
| Created / last modified | createdate, hs_lastmodifieddate |
description and dealtype are also read and stored with the record, but
Revial does not currently use them.
3. Companies
| In Revial | HubSpot property |
|---|---|
| Name | name |
| Domain and website | domain, website |
| Phone | phone |
| Industry | industry |
| Employee count | numberofemployees |
| Annual revenue | annualrevenue |
| Description | description |
| Address | address, city, state, zip, country |
| Created / last modified | createdate, hs_lastmodifieddate |
4. Contacts and leads
| In Revial | HubSpot property |
|---|---|
| First, last and full name | firstname, lastname |
email | |
| Work and mobile phone | phone, mobilephone |
| Job title | jobtitle |
| Company name and linked company | company, associatedcompanyid or the company association |
| Address | address, city, state, zip, country |
| Last email reply | hs_sales_email_last_replied |
| Last contacted | notes_last_contacted |
| Created / last modified | createdate, lastmodifieddate |
The two email dates help Revial judge whether a deal has gone quiet. They are
timestamps only — Revial never reads email subjects, bodies or recipients.
hs_sales_email_last_opened, hs_email_last_open_date, website,
lifecyclestage and hs_lead_status are also read.
Contacts whose lifecycle stage is Subscriber, Lead, Marketing qualified lead or
Sales qualified lead also appear in Revial as leads, with a lead status taken
from hs_lead_status and marked qualified at Sales qualified lead or later.
5. Activities and notes
Each activity is linked to the deal, contact and company it is associated with in HubSpot.
| Type | What Revial reads |
|---|---|
| Meetings | Title, body, start and end time (duration), location — hs_meeting_title, hs_meeting_body, hs_meeting_start_time, hs_meeting_end_time, hs_meeting_location |
| Calls | Title, status, direction, time, duration, outcome — hs_call_title, hs_call_status, hs_call_direction, hs_timestamp, hs_call_duration, hs_call_disposition |
| Tasks | Subject, body, status, priority, due date — hs_task_subject, hs_task_body, hs_task_status, hs_task_priority, hs_task_due_date, hs_timestamp |
| Notes | Body and timestamp — hs_note_body, hs_timestamp. Attachment IDs are read, attachment files are not |
HTML in meeting, task and note bodies is converted to plain text.
6. Pipelines and stages
Revial reads your deal pipeline's stages (/crm/v3/pipelines/deals) — stage
names and order — so meetings and briefings can say where a deal stands.
7. What the CRM sync does not read
- Email content. Revial requests no email scope.
- Deal and activity owners. Owners are not attached to synced records.
- Custom properties. Only the standard properties listed above are read. The schema scopes let Revial list your properties, including custom ones, when you configure what Revial writes back — they do not add fields to the sync.
- Products, line items, quotes and tickets.
- Deletions other than deals. A company, contact or activity deleted in HubSpot stays in Revial's copy.
8. Known limitations when reading
Currency. Revial does not read a deal's currency. Every amount is shown in euros, so a deal priced in another currency shows the correct number with the wrong currency.
- Only the first pipeline's stages are read. Deals in other pipelines still sync, but their stage is worked out from HubSpot's internal stage ID, which can leave them unclassified.
- The stage on a deal is HubSpot's internal stage ID, not its display label. The readable label comes from the pipeline stages in section 6.
- Revial's deal view only covers deals with a Revial meeting. When a synced deal is linked to a Revial meeting, its name, value, stage, status, expected close date and activity dates are kept up to date there. Syncing alone never adds a deal to that view.
9. What Revial writes to HubSpot
All writes go through the CRM sync app. Revial never deletes anything in HubSpot, never creates contacts or companies, and never changes pipelines or property definitions.
9.1 Meeting summary note — automatic
After a meeting's summary is ready, Revial creates a HubSpot note
(hs_note_body, hs_timestamp):
- Content: "Meeting Summary – meeting title", a "Generated by Revial AI" line, the summary in your organisation's note template (by default: executive summary, key points, action items), and a link to the meeting in Revial. On a company note, participants not found as HubSpot contacts are listed. Written in your CRM output language if one is set. Capped at 64 KB.
- Attached to: the matched deal; if none, the company; if none, one note per matched contact. Admins can change this order in CRM settings.
- Timestamp: the time of the push, not the time of the meeting.
- Not pushed for internal meetings, or when no HubSpot record matches.
- Written once per meeting — re-running the summary does not duplicate it.
- No owner is set on the note.
Automatic pushing can be switched off for a connection by Revial support.
9.2 Transcript note — optional
With push transcript note turned on, Revial creates a second note, "Meeting Transcript – meeting title", holding the verbatim transcript (capped at 64 KB, never translated). Same placement and once-only rule as the summary note.
9.3 Mapped properties — optional
Admins can map Revial summary fields (including the full transcript) and custom extraction fields to properties on contacts, companies, deals and meetings.
- Revial updates existing records only — the ones matched to the meeting.
- A property that already has a value is left alone, unless that mapping is set to overwrite.
- Values are converted to the property type: true/false, numbers (rounded for
integers), multi-select values joined with
;, lists and objects as JSON, text capped at 64 KB. A value that cannot be converted is skipped. - For a meeting property, Revial looks for a HubSpot meeting within 30 minutes of the Revial meeting's start, associated with the matched contacts or deal, and picks the closest. With no match, nothing is written.
- Any property can be mapped, standard ones included — choose mappings with care.
9.4 Deal creation — optional
With deal creation turned on, Revial decides after each meeting whether a new deal is warranted and, if so, creates one:
| HubSpot property | Value |
|---|---|
dealname | Your name template (default "company name – meeting date") |
amount, closedate | Extracted from the meeting, when mentioned |
pipeline, dealstage | The defaults chosen in CRM settings |
hubspot_owner_id | The HubSpot owner whose email matches the seller, else the first attendee who is an owner |
| Mapped deal properties | As configured |
The deal is associated with the matched contacts and company.
- Automatic mode (default) creates the deal and puts the summary note on it.
- Review mode queues the deal until an admin approves it; no note is added on approval.
- If the matched contacts already have an open deal, Revial by default does
nothing. With the duplicate action set to update, it instead overwrites
amountandclosedateon that existing deal.
9.5 Manual push from Revial
Any team member can push a meeting note from Revial:
- To a contact, company or deal: creates a note, which the user can edit first, and optionally also pushes mapped properties.
- To a HubSpot meeting: appends the note to
hs_internal_meeting_notes. If the field would exceed 64 KB, the oldest content is dropped. The user can also mark the meeting completed (hs_meeting_outcome).
9.6 Known limitations when writing
- Mapped properties can overwrite after a failed check. If Revial cannot read a record's current values, it writes every mapped property, including ones that already had a value.
- A manually pushed note can end up unattached. The note and its association are separate calls, and a failed association is not reported.
- Failed property writes are not retried. Revial retries each failed property once individually, then records the failure and moves on.
- Some write settings have no screen yet. Writing notes or transcripts into named properties of an existing HubSpot meeting is configured by Revial support.
10. The HubSpot Calls app
The Calls app is triggered when a call is created in HubSpot, and again when a recording link is added to a call. It only processes calls whose HubSpot owner an admin has mapped to a Revial user; calls from unmapped or excluded owners are skipped. It writes nothing to HubSpot — an analysed call's summary reaches HubSpot through the CRM sync app (section 9), like any other meeting.
Scopes:
| Scope | Used for |
|---|---|
crm.objects.contacts.read | Reading calls — HubSpot gates call engagements behind the contacts scope |
crm.objects.owners.read | Listing your HubSpot owners so an admin can map them to Revial users |
crm.objects.contacts.write | Not currently exercised — requested for writing call analysis back to HubSpot as a note |
oauth | Token refresh |
What it reads for each call:
| What | HubSpot property |
|---|---|
| Title and notes | hs_call_title, hs_call_body |
| Time and duration | hs_timestamp, hs_call_duration |
| Direction, status, outcome | hs_call_direction, hs_call_status, hs_call_disposition |
| Phone numbers | hs_call_from_number, hs_call_to_number |
| Recording link | hs_call_recording_url |
| Owner | hubspot_owner_id |
| Linked contacts, companies, deals | Call associations |
The conversation itself reaches Revial in one of two ways, depending on what your portal allows:
- Recording. Revial downloads the call recording, stores it, and transcribes it with its transcription provider.
- HubSpot transcript. If the recording cannot be fetched, Revial reads HubSpot's own call transcript — speakers, text and timings.
Revial works out which of the two your portal supports on the first calls and then uses only that source. Stored recordings are deleted after 365 days — or as soon as the transcript exists, where an organisation has that retention setting enabled.
Revial then creates a meeting for the mapped user, linked to the call's matched contact and company, and analyses it like any other meeting.
11. The CRM sync app's scopes
| Scope | Used for |
|---|---|
crm.objects.contacts.read | Contacts, leads, and activities (HubSpot gates engagements behind contacts) |
crm.objects.companies.read | Companies |
crm.objects.deals.read | Deals |
crm.objects.owners.read | Matching the seller to a HubSpot owner when creating deals |
crm.schemas.contacts.read, crm.schemas.companies.read, crm.schemas.deals.read | Listing available properties for field mapping |
crm.objects.contacts.write | Notes, meeting updates and mapped contact properties (HubSpot gates engagements behind contacts) |
crm.objects.companies.write | Mapped company properties |
crm.objects.deals.write | Creating deals, and mapped deal properties |
oauth | Token refresh |
The connection sees exactly what the authorising HubSpot user can see. To limit what Revial reads, authorise with a user whose HubSpot permissions are already limited — no scope narrows the rows an app can read. HubSpot has no field-level scopes either: the write scopes would permit more than section 9 describes, and that boundary is enforced by Revial's software, not by HubSpot.
Connecting Revial to HubSpot
Connecting the HubSpot CRM app and the HubSpot Calls app, mapping call owners, and what to do when a connection fails.
HubSpot technical integration guide
For HubSpot administrators, security reviewers and IT — how both Revial HubSpot apps authenticate, API consumption, the call-analysis pipeline, failure behaviour and auditing.