Skip to main content

Map lemlist activities to HubSpot

This article explains what data is sent from our platform to HubSpot. Please check below for more details.

Learning Objective

By the end of this guide, you'll understand how lemlist activities sync to HubSpot, which activities are stored as Emails, Calls vs. Notes, and why HubSpot limitations affect activity storage.

Why This Matters

Understanding activity mapping helps you find campaign data in HubSpot. When you integrate lemlist with HubSpot, campaign activities sync to contact records—but they're stored in different places depending on activity type. Know where to look for opens, clicks, LinkedIn actions, calls, and other engagement data to accurately track prospect interactions.

Prerequisites

Before reviewing this mapping:

  • lemlist and HubSpot integration connected

  • Active campaigns running in lemlist

  • Contacts in HubSpot with campaign activity


How Activity Sync Works

HubSpot third-party limitations

HubSpot does not allow third-party apps to store open and click data in dedicated HubSpot Email objects.

Result: lemlist stores most activities as Notes instead of Emails. Only sent emails and replies use the Email object.


Email Activities

  • Sent: Email

  • Replied: Email

  • Open/Click: Note

  • Bounced: Note

  • Failed: Note

  • Unsubscribed: Note (only when the lead unsubscribes from the campaign themselves)

Why Notes for opens/clicks?: HubSpot API restriction—third-party apps cannot write to dedicated open/click objects.

Important: At the moment, we don't push to CRMs when a lead is added to the Unsubscribe section manually. We can only sync the unsubscribe activity if the lead unsubscribed themselves from the campaign.


Campaign Activities

All campaign-level activities are stored as Notes:

  • Lead Paused/Resumed: Note

  • Step Skipped: Note

  • Lemcal Meeting Booked: Note

  • Interested/Not Interested: Note


LinkedIn Activities

LinkedIn activities use LinkedIn Message object or Notes:

  • Profile Visited: Note

  • LinkedIn Failed Action: Note

  • Message Replied: LinkedIn Message

  • Message Sent: LinkedIn Message

  • Invite Sent: Note

  • Message Opened: Note

  • Invite Accepted: Note

Why LinkedIn Messages?: HubSpot has dedicated LinkedIn Message object for sent/replied messages. All other LinkedIn activities stored as Notes.


Call Activities

A call placed with lemlist is logged on the HubSpot contact as a Call engagement—not a Note—and is linked to the company as well when the contact has one.

  • Activity title: "Call done from [campaign name]". Calls placed outside a campaign sync too.

  • What is sent: direction, duration, phone numbers, date, call outcome, and the owner resolved through your user mapping. The status is always Completed.

  • Contact matching: the contact has to exist in HubSpot first. If it isn't synced yet, the call waits and is pushed once the contact lands.

Call outcome

lemlist's built-in call statuses map to HubSpot's standard call outcomes, so a call a rep marks as No answer shows as No answer in HubSpot. You can override the mapping status by status in Settings → CRM → Activities → Calls.

⚠️ Custom call statuses have no default mapping. A status your team created in lemlist falls back to Connected in HubSpot until you map it by hand.

⚠️ Rebuilt HubSpot outcomes break the default mapping. The default mapping targets HubSpot's factory call outcomes. If your portal's outcomes were deleted and recreated, they carry different ids and the default mapping points at something that no longer exists. Map each status manually in that case.

Recording, transcript and AI summary

Four independent toggles in Settings → CRM → Activities → Calls control what travels with the call: Calls note, Calls recording, Calls transcript, Calls summary. They are on by default.

Everything enabled is written into the body of the call note, always in the same order—the rep's note, the AI summary, the recording link, then the transcript. A section with nothing in it is skipped.

The note fills up progressively. The call activity is created as soon as the call ends with whatever exists at that moment, then rewritten when the transcript arrives, and rewritten again when the AI summary is generated.

⚠️ The recording link is public. Anyone who opens it from the HubSpot record can listen to the call—no lemlist account required—and the link never expires and cannot be revoked. Turn off Calls recording if that is not acceptable for your team.

⚠️ The note is rebuilt, not merged. Editing that note by hand inside HubSpot is overwritten on the next refresh. Write call notes in lemlist.

The AI summary is synced, not generated: it is pushed only if the call already has one. Syncing never triggers a summary.

lemlist calls only: calls coming from the Aircall or Ringover integrations do not carry a recording, transcript or summary.

Length limit: the HubSpot call note holds 65,000 characters. Longer content is cut from the end—so the transcript goes first—with no warning shown.


Where to Find Activities in HubSpot

Email object (Sent, Replied)

  1. Open contact record in HubSpot

  2. Go to Activity tab

  3. Filter by Emails

  4. View sent emails and replies


Notes object (Opens, Clicks, LinkedIn, Campaign)

  1. Open contact record in HubSpot

  2. Go to Activity tab

  3. Filter by Notes

  4. View all other lemlist activities

HubSpot contact record showing Activity tab with lemlist activities stored as Notes

LinkedIn Messages object (LinkedIn Sent, Replied)

  1. Open contact record in HubSpot

  2. Go to Activity tab

  3. Filter by LinkedIn Messages

  4. View LinkedIn sent messages and replies


Call object (lemlist calls)

  1. Open contact record in HubSpot

  2. Go to Activity tab

  3. Filter by Calls

  4. Open a call to read the note, the outcome and, when enabled, the summary, recording link and transcript


Activity Sync Rules

Immediate sync: All activities stored immediately as they occur in lemlist campaigns

Contact matching: Activities sync to HubSpot contact matching email address in lemlist lead

Unsubscribe sync behavior: At the moment, we don't push to CRMs when a lead is added to the Unsubscribe section manually. We can only sync activity if the lead unsubscribed themselves from the campaign.


Best Practices

Check Notes for most activities - Opens, clicks, bounces, LinkedIn actions, and campaign activities all in Notes section, not Emails

Filter Activity tab - Use HubSpot Activity tab filters (Emails, Notes, Calls, LinkedIn Messages) to quickly find specific activity types

Understand limitations - Opens/clicks stored as Notes due to HubSpot API restrictions, not lemlist limitation

Use for reporting - Export Notes data if building custom reports on campaign engagement

Train team on mapping - Ensure team knows where to find different activity types (Emails vs. Notes vs. Calls vs. LinkedIn Messages)

Decide on call recordings before you start - The recording link in a call note is public and permanent. Agree as a team whether that is acceptable before leaving Calls recording on.


Troubleshooting

Activities not appearing in HubSpot

Fix: Verify HubSpot integration connected in lemlist Settings > Integrations. Check contact exists in HubSpot with matching email address. Verify activity sync enabled.


Opens/clicks not showing in Email object

Cause: HubSpot API restriction—third-party apps cannot write to Email open/click objects.

Fix: This is expected behavior. Look in Notes section instead of Emails section for opens and clicks.


Every call shows as Connected, whatever the rep marked

Cause: The call status has no mapping—either it is a custom status your team created, or your portal's call outcomes were recreated and no longer match the ones the default mapping targets.

Fix: Open Settings → CRM → Activities → Calls and map each call status to the HubSpot outcome you want.


A call has no transcript or summary in HubSpot

Cause: The transcript and summary do not exist when the call ends—they are added on a later refresh. The call may also have no summary at all, or came from Aircall or Ringover rather than lemlist calling.

Fix: Give it time and reopen the record. Check the call in lemlist actually has a transcript and a summary. Confirm Calls transcript and Calls summary are on in Settings → CRM → Activities → Calls.


A call note edited in HubSpot reverted

Cause: lemlist rebuilds the note on every refresh instead of merging it, so manual edits are replaced.

Fix: Write the note in lemlist on the call record.


LinkedIn activities missing

Fix: Verify LinkedIn steps executed in campaign. Check LinkedIn Messages object for sent/replied. Check Notes for other LinkedIn activities (profile visits, invites, opens).


Important Notes

⚠️ HubSpot API limitation: Opens and clicks stored as Notes (not Emails) because HubSpot does not allow third-party apps to write to dedicated open/click objects. This is a HubSpot restriction, not a lemlist limitation.

⚠️ Unsubscribe section limitation: At the moment, we don't push to CRMs when a lead is added to the Unsubscribe section manually. We can only sync the unsubscribe activity if the lead unsubscribed themselves from the campaign.

⚠️ Immediate storage: All activities stored immediately as they occur. No delay in sync.

⚠️ Notes vs. Emails: Most activities appear in Notes section, not Emails section. Train team to check Notes for engagement data.

⚠️ Call recording links are public and permanent: anyone opening the link from HubSpot can listen to the call without a lemlist account, and the link cannot be revoked.


Quick Reference: Activity Storage

Email object:

  • Sent

  • Replied

Call object:

  • Calls placed with lemlist, in or outside a campaign

LinkedIn Message object:

  • Message Sent

  • Message Replied

Notes object (everything else):

  • Opens

  • Clicks

  • Bounces

  • Failed

  • Unsubscribed (only when the lead unsubscribes from the campaign themselves)

  • Lead Paused/Resumed

  • Step Skipped

  • Lemcal Meeting Booked

  • Interested/Not Interested

  • LinkedIn Profile Visited

  • LinkedIn Message Opened

  • LinkedIn Invite Sent

  • LinkedIn Invite Accepted

  • LinkedIn Failed Action

Did this answer your question?