Skip to main content
All documentation
CRM integration

HubSpot Integration

Last updated: May 12, 2026

Overview

The HubSpot integration syncs every sent follow-up email back to your HubSpot CRM automatically. When you send a follow-up from ReplySequence, we find or create the contact, log the meeting as an engagement, record the sent email on the contact's activity timeline, and upsert a deal — no copy-pasting, no manual CRM entry, no duplicate records.

Subscription requirements

  • HubSpot: Free, Starter, Professional, or Enterprise. All paid Hubs are supported. The integration uses standard Contacts, Meetings, Emails, and Deals objects available on every HubSpot tier.
  • ReplySequence: Any active ReplySequence plan, including the free trial.

Prerequisites

  • A ReplySequence account with at least one transcript source connected.
  • Super Admin or App Marketplace permissions in your HubSpot portal — required to install third-party apps.
  • Access to the email inbox associated with your ReplySequence account (used to confirm OAuth callbacks).

Setup

  1. Sign in to your ReplySequence dashboard and open Settings → Integrations.
  2. Under HubSpot, click Connect. You'll be redirected to HubSpot to authorize the connection.
  3. Choose the HubSpot portal you want to connect, then review and accept the requested permissions on HubSpot's consent screen.
  4. HubSpot redirects you back to ReplySequence with the integration active. The status indicator next to HubSpot will flip to Connected.
  5. Send a test follow-up. Within a few seconds, the contact, meeting engagement, and sent email appear on the contact's HubSpot timeline.

What gets synced

Every time you send a follow-up from ReplySequence, the following HubSpot objects are created or updated:

Contact

Matched by recipient email (case-insensitive, trimmed). If no contact exists, a new one is created with email, first name, and last name when available.

Meeting engagement

Title, start/end time, source label (Zoom, Fireflies, Otter, etc.), and the full follow-up email body, associated to the contact. Idempotent on (meeting, draft, step) — re-sends never produce duplicates.

Email engagement

Subject, recipient, sender, and body of the sent follow-up, recorded on the contact’s Activity → Emails tab.

Deal

Either a new deal is created for the contact, or the most-recently-modified open deal is updated with meeting context in the description. ReplySequence respects existing manually-set values (amount, close date, stage) by default.

Task

When you mark a next step as complete in ReplySequence, it’s logged as a completed task in HubSpot.

All syncs are idempotent. A dedup token embedded in each engagement body prevents duplicate records if a sync is retried.

Field mappings

By default, meeting data maps to standard HubSpot meeting properties:

ReplySequence fieldHubSpot property
Meeting timestamphs_timestamp
Meeting titlehs_meeting_title
Meeting notes & follow-uphs_meeting_body
Start timehs_meeting_start_time
End timehs_meeting_end_time
Meeting outcomehs_meeting_outcome

You can customize these mappings — including writing sentiment score, sentiment label, and emotional tones to custom HubSpot properties — in Settings → Integrations → HubSpot → Field Mappings. If a mapped custom property doesn't exist in HubSpot, ReplySequence skips that property and writes everything else.

Scopes used

ReplySequence requests only the scopes it actively uses. Every scope below maps to a specific feature:

ScopeWhy we need it
crm.objects.contacts.readFind existing contacts by recipient email so follow-ups attach to the right person — never creates a duplicate.
crm.objects.contacts.writeCreate a contact when one doesn’t exist yet for the recipient of a sent follow-up.
crm.objects.appointments.readSearch meeting engagements before write so re-syncing the same follow-up doesn’t produce duplicates. (HubSpot scopes meeting engagements under the “appointments” permission internally.)
crm.objects.appointments.writeLog each follow-up as a meeting engagement with the title, time, source, and draft body on the contact timeline.
crm.objects.deals.readLook up the most-recently-modified open deal for a contact so meeting context updates the right pipeline record.
crm.objects.deals.writeCreate or update a deal associated with the contact when a follow-up is sent — never overwrites manually-set fields by default.
sales-email-readRead sent email metadata so future versions of the integration can de-dupe email engagements created outside ReplySequence.
oauthStandard scope required by HubSpot for refresh-token rotation.

ReplySequence never reads, modifies, or deletes anything outside the objects it creates on your behalf. We don't touch pre-existing deals, contacts, or notes unless your follow-up references them.

Disconnect / uninstall

To disconnect HubSpot from ReplySequence:

  1. Open Settings → Integrations → HubSpot in your ReplySequence dashboard and click Disconnect.
  2. Optionally revoke access directly in HubSpot under Settings → Integrations → Connected Apps → ReplySequence → Uninstall.

Past syncs remain in your HubSpot CRM. Future follow-ups will no longer be logged. Reconnecting later picks back up with no data loss.

Troubleshooting

Follow-ups aren't appearing in HubSpot

Confirm the integration is still connected in Settings → Integrations. If the access token expired and couldn't refresh, reconnect and resend.

Contact wasn't matched to an existing record

Contacts are matched by email (case-insensitive, trimmed). If the recipient email doesn't exactly match the email on the HubSpot contact, a new contact is created. Merge them in HubSpot to consolidate the timeline.

Deal updates aren't writing

By default, ReplySequence respects existing values on a deal. It won't overwrite amounts, close dates, or stages you've set manually. Contact support if you need to change that behavior.

Custom property doesn't exist

If you mapped a field to a custom property that hasn't been created in HubSpot, ReplySequence skips that property and writes the rest. Create the property in HubSpot (Settings → Properties) to enable the mapping.

Support

Email support@replysequence.com or visit our support page. We respond within one business day.