When you connect HeyReach to HubSpot, every LinkedIn action your team takes through HeyReach can be logged as a native activity on the contact's timeline in HubSpot.
Activities are organised into four sections:
Lifecycle events,
LinkedIn outbound events,
Conversation events, and
Cross-tool handoff.
⚠️ Important note: Contact creation is not listed as a HeyReach activity because it is logged via HubSpot's built-in Contact created event, not a HeyReach custom event. When HeyReach creates a new contact, the source is automatically tagged as HeyReach in the standard HubSpot creation log, visible alongside HeyReach's custom activities.
Recommended vs. optional activities
Inside the HubSpot integration settings, you can toggle which activities are logged. Activities fall into two groups:
Recommended - toggled on by default. These capture state changes (replies, campaign enrollment, list assignment) and are essential for accurate reporting. Disabling them is possible but not advised.
Optional - toggled on by default but can be safely disabled if your team prefers a less cluttered timeline. These capture every outbound touch (sends, withdrawals, pauses, handoffs) and are useful for detailed auditing but may feel noisy for high-volume programs.
Lifecycle events
Lifecycle events track when contacts enter or leave HeyReach campaigns and lists. They show the broader shape of a contact's relationship with your outbound operation, distinct from the LinkedIn messaging itself.
Add contact to campaign
Event identifier: heyreach_add_contact_to_campaign_event | Recommended or optional: Recommended
When it fires: Triggered when a contact is enrolled in a HeyReach campaign, whether manually added by a team member or pulled in automatically from a list or HubSpot sync.
Card header: Contact added to Campaign
Card body shows: Campaign ID, Campaign Name (as a clickable link where available), Campaign Status, Created by (if available)
Use cases:
Filter contacts who were enrolled in a specific campaign within a date range to audit campaign membership and pipeline contribution
Build a campaign enrollment report showing weekly or monthly intake volume per campaign to track outbound velocity
Trigger a HubSpot workflow when a contact is enrolled in a high-priority campaign to notify the account owner or apply a tag
Add contact to list
Event identifier: heyreach_add_contact_to_list_event | Recommended or optional: Recommended
When it fires: Triggered when a contact is added to a HeyReach list, whether through CSV import, Sales Navigator pull, HubSpot list sync, or manual addition.
Card header: Contact added to List
Card body shows: List ID, List Name (as a clickable link where available), Import Method, Created by (if available)
Use cases:
Filter contacts by import method to see which lead sources (CSV, Sales Navigator, HubSpot) are populating which lists
Build a data sourcing report comparing list intake volume across different import methods to evaluate lead source effectiveness
Trigger a HubSpot workflow to apply a lifecycle stage update or tag when a contact joins a list flagged as high-priority
Contact paused in campaign
Event identifier: heyreach_pause_contact_from_campaign_event | Recommended or optional: Optional
When it fires: Triggered when a contact's campaign progression is paused, either manually by a team member or automatically by HeyReach rules (e.g. reply detection).
Card header: Contact paused in campaign
Card body shows: Campaign ID, Campaign Name, Paused by (if available)
Use cases:
Filter contacts paused in a campaign within the last 7 days to review which contacts your team is actively excluding from further outreach
Build a pause-rate report per campaign to identify campaigns with unusually high pause rates that may need messaging adjustments
Trigger a follow-up workflow when a contact is paused to notify the account owner so they can decide on next steps
Remove contact from list
Event identifier: heyreach_remove_contact_from_list_event | Recommended or optional: Optional
When it fires: Triggered when a contact is removed from a HeyReach list, whether manually or as part of list cleanup, deduplication, or suppression workflows.
Card header: Contact removed from list
Card body shows: List ID, List Name, Removed by (if available)
Use cases:
Filter contacts removed from a list within a date range to audit cleanup operations and ensure suppression workflows ran as intended
Build a list churn report showing weekly removal volume per list to track data hygiene work and identify lists with high turnover
Trigger a HubSpot workflow when a contact is removed from a suppression-related list to update tags or lifecycle stages accordingly
LinkedIn outbound events
LinkedIn outbound events track the connection request sub-funnel - sent, accepted, and withdrawn. Together they show how your senders are performing at the first touchpoint and which prospects are opening the door to further conversation.
Connection request sent
Event identifier: heyreach_connection_request_sent_event | Recommended or optional: Optional
When it fires: Triggered when one of your senders sends a LinkedIn connection request to the contact through HeyReach. If the request includes a personalised message, the card header is flagged as Personalized.
Card header: Connection request sent (or Connection request sent - Personalized if a custom message is included)
Card body shows: Connection Message (only if a personalised message was sent), Sender (if available), Campaign ID, Campaign Name, List ID, List Name
Use cases:
Filter contacts who received a personalised connection request to compare acceptance rates between personalised and non-personalised outreach
Build a sender performance report showing connection requests sent per sender per week to monitor outbound capacity utilization
Trigger a notification when a high-value contact receives a connection request to alert the account owner
Connection request accepted
Event identifier: heyreach_connection_request_accepted_event | Recommended or optional: Optional
When it fires: Triggered when the contact accepts a LinkedIn connection request sent by one of your senders.
Card header: Connection request accepted
Card body shows: Sender (if available), Campaign ID, Campaign Name, List ID, List Name
Use cases:
Filter contacts who accepted a connection request in the last 14 days to find newly accessible prospects worth a follow-up message
Build a campaign acceptance rate report comparing accepted vs. sent volume across campaigns to identify which messaging earns the best results
Trigger a HubSpot workflow to advance the contact's lifecycle stage to Marketing Qualified Lead the moment a connection is accepted
Connection request withdrawn
Event identifier: heyreach_connection_request_withdrawn_event | Recommended or optional: Optional
When it fires: Triggered when a connection request is withdrawn before being accepted, typically as part of HeyReach's automatic withdrawal rules (e.g. requests pending past a threshold) or manual cleanup by a sender.
Card header: Connection request withdrawn (or Connection request withdrawn - Personalized if a custom message was originally sent)
Card body shows: Connection Message (only if the original request included a personalised message), Sender (if available), Campaign ID, Campaign Name, List ID, List Name
Use cases:
Filter contacts whose connection requests were withdrawn to identify campaigns generating low-acceptance prospects worth re-evaluating
Build a withdrawal rate report per sender to monitor sender health and detect senders with abnormal withdrawal patterns
Trigger an internal alert when withdrawal volume on a specific campaign exceeds a threshold, signalling possible targeting or messaging issues
Conversation events
Conversation events track every message and InMail exchanged between your senders and the contact - both outbound (sent by your team) and inbound (received from the contact).
Conversation events are the most granular record of LinkedIn engagement and the foundation for measuring conversation depth, reply quality, and rep responsiveness.
⚠️ Schema note: Message Sent, Message Received, InMail Sent, and InMail Received share the same underlying event identifier (heyreach_message_interaction_event). HubSpot displays them as four distinct activity types using the messageType property, but they are technically variations of one event.
Message sent
Event identifier: heyreach_message_interaction_event | Recommended or optional: Optional
When it fires: Triggered when one of your senders sends a standard LinkedIn direct message to the contact through HeyReach.
Card header: Message Sent
Card body shows: Subject (if the message has a subject line), Message, Sender (if available), Campaign ID, Campaign Name, List ID, List Name
Use cases:
Filter contacts who received a message within a date range to audit outbound message volume and ensure cadence rules are being respected
Build a per-sender messaging volume report to monitor outbound activity distribution across your team
Trigger a workflow to log the message content into a connected analytics tool when a message is sent to a high-value contact
Message received
Event identifier: heyreach_message_interaction_event | Recommended or optional: Recommended
When it fires: Triggered when the contact replies to one of your senders with a standard LinkedIn direct message.
Card header: Message Received
Card body shows: Subject (if the message has a subject line), Message, Sender (the team member who received the reply), Campaign ID, Campaign Name, List ID, List Name
Use cases:
Filter contacts who replied within the last 7 days to build an active conversations view for sales reps to follow up on immediately
Build a per-campaign reply rate report by counting Message Received events against Message Sent events to evaluate campaign performance
Trigger a HubSpot workflow to create a task for the account owner whenever a reply is received from a high-priority contact
InMail sent
Event identifier: heyreach_message_interaction_event | Recommended or optional: Optional
When it fires: Triggered when one of your senders sends a LinkedIn InMail to the contact through HeyReach. InMails are paid LinkedIn messages used to contact prospects outside your existing network, typically via Sales Navigator.
Card header: InMail Sent
Card body shows: Subject (InMails typically include a subject line), Message, Sender (if available), Campaign ID, Campaign Name, List ID, List Name
Use cases:
Filter contacts who received an InMail to track credit consumption and ensure your team is spending paid messages on the right targets
Build a comparison report between InMail Sent vs. Message Sent volume to evaluate the cost-effectiveness of paid versus organic LinkedIn outreach
Trigger a workflow that logs InMail usage to a finance or operations dashboard for budget tracking
InMail received
Event identifier: heyreach_message_interaction_event | Recommended or optional: Recommended
When it fires: Triggered when the contact replies to a sender's InMail.
Card header: InMail Received
Card body shows: Subject (InMails typically include a subject line), Message, Sender (the team member who received the reply), Campaign ID, Campaign Name, List ID, List Name
Use cases:
Filter contacts who replied to an InMail to surface the highest-intent prospects, since InMail replies are often a stronger signal than standard message replies
Build an InMail ROI report comparing InMail Received to InMail Sent volume to evaluate the payoff of paid LinkedIn outreach
Trigger a high-priority alert to the account owner when an InMail reply is received, given the premium nature of the channel
Cross-tool handoff
Cross-tool handoff events answer the question "what happened to this contact after HeyReach was done with them?" When your outbound stack spans multiple tools (e.g. HeyReach for LinkedIn, Smartlead or Instantly for email), HeyReach can push contacts onward to those tools. This event logs the handoff so HubSpot retains a complete record of the contact's multi-channel journey.
Contact sent to third-party platform
Event identifier: heyreach_send_contact_to_third_party_app_event | Recommended or optional: Optional
When it fires: Triggered when HeyReach sends a contact to another connected outbound tool (e.g. Smartlead, Instantly) as part of a cross-channel sequence or handoff.
Card header: Contact sent to [Tool Name] (e.g. Contact sent to Smartlead, Contact sent to Instantly)
Card body shows: Tool Name, Campaign ID, Campaign Name, List ID, List Name, Sender (if available)
Use cases:
Filter contacts handed off to a specific third-party tool to monitor cross-channel sequence volume and ensure handoffs are firing as expected
Build a multi-channel attribution report showing which contacts moved between LinkedIn and email outreach, useful for understanding full-funnel performance
Trigger a HubSpot workflow to add a tag indicating the contact is now in a cross-channel sequence, preventing accidental re-targeting through other workflows
Quick reference - all 12 activities
Activity | Event identifier | Section | Recommended or optional |
Add contact to campaign | heyreach_add_contact_to_campaign_event | Lifecycle | Recommended |
Add contact to list | heyreach_add_contact_to_list_event | Lifecycle | Recommended |
Contact paused in campaign | heyreach_pause_contact_from_campaign_event | Lifecycle | Optional |
Remove contact from list | heyreach_remove_contact_from_list_event | Lifecycle | Optional |
Connection request sent | heyreach_connection_request_sent_event | LinkedIn outbound | Optional |
Connection request accepted | heyreach_connection_request_accepted_event | LinkedIn outbound | Optional |
Connection request withdrawn | heyreach_connection_request_withdrawn_event | LinkedIn outbound | Optional |
Message sent | heyreach_message_interaction_event | Conversation | Optional |
Message received | heyreach_message_interaction_event | Conversation | Recommended |
InMail sent | heyreach_message_interaction_event | Conversation | Optional |
InMail received | heyreach_message_interaction_event | Conversation | Recommended |
Contact sent to third-party platform | heyreach_send_contact_to_third_party_app_event | Cross-tool handoff | Optional |
Have questions about a specific activity or how it appears on your contact timeline? Chat with our support team via the widget in the bottom-right corner. 🚀
