When you connect HeyReach to HubSpot, the integration automatically creates a dedicated property group on the Contact object.
This group contains 20 properties that capture your LinkedIn outreach activity — covering attribution, exposure, engagement, and intent data — directly on your existing HubSpot contacts.
This reference covers every property in the group: what it tracks, how it updates, and how to use it for filtering, reporting, and workflow automation.
⚠️ Current scope: HeyReach matches contacts by email and updates existing HubSpot contacts only. It does not create new contacts. LinkedIn profile data (name, company, job title, LinkedIn URL) is not synced into HubSpot in the current version.
How property updates work
Each property follows one of three update patterns:
Set once - written on the first relevant event and never changed afterward (e.g. first touch date)
Overwrites - replaced with the latest value each time the relevant event fires (e.g. last campaign name)
Increments - adds 1 each time the relevant event fires (e.g. reply count)
Section 1 - Attribution
Attribution properties answer the question "where did this contact's LinkedIn engagement begin?"
They are set once on first touch and never overwritten, making them the foundation of any first-touch attribution model for LinkedIn inside HubSpot.
Created by HeyReach
Identifier: heyreach_created_by_heyreach | Format: Boolean (Yes / No) | Update logic: Set once
Flags whether HeyReach has ever logged LinkedIn activity on this contact.
Set to Yes on first activity.
⚠️Note: HeyReach does not create new HubSpot contacts - this flag marks LinkedIn engagement origination, not contact origination.
Use cases:
Build a HubSpot list of every existing contact who has been touched by LinkedIn outreach to measure HeyReach's engagement footprint across your CRM.
Run a report comparing close rates between contacts with HeyReach LinkedIn activity vs. contacts without to evaluate LinkedIn's contribution to deal progression.
Trigger a workflow that applies a tag or routing rule to contacts the moment HeyReach logs its first activity on them.
First HeyReach touch date
Identifier: heyreach_first_touch_date | Format: DateTime | Update logic: Set once
The date and time of the first outbound interaction HeyReach logged for this contact, regardless of whether it was a connection request, message, or InMail.
Use cases:
Filter contacts whose first LinkedIn touch happened in a specific quarter to build cohort-based engagement reports
Calculate time from first LinkedIn touch to closed-won deal as a benchmark for your outbound motion
Trigger a 90-day-since-first-touch workflow to re-engage cold contacts who have not replied or progressed
First HeyReach campaign name
Identifier: heyreach_first_campaign_name | Format: Single-line text | Update logic: Set once
The name of the first HeyReach campaign that touched this contact.
Use cases:
Group contacts by their originating campaign to compare engagement contribution across different outreach plays.
Filter for contacts whose first campaign matches a specific theme to build campaign-specific reports.
Audit campaign quality by reviewing reply rates and intent segmented by first campaign name to identify which entry points engage best.
First HeyReach campaign ID
Identifier: heyreach_first_campaign_id | Format: Single-line text | Update logic: Set once
The stable internal identifier of the first HeyReach campaign that touched this contact. Used for joins and reporting where campaign names may change over time.
Use cases:
Build cross-system reports that join HubSpot contact data with HeyReach campaign analytics on a stable identifier rather than a renameable string
Maintain attribution integrity when campaign names get updated, archived, or recycled in HeyReach
Use as the join key in BI tools (HubSpot Operations Hub, Snowflake exports, Looker) where text-based campaign names are unreliable
Section 2 - Exposure
Exposure properties answer the question "how much has this contact been touched on LinkedIn?"
They track the breadth of HeyReach's interactions with the contact across campaigns and lists, and which sender or campaign was most recently involved.
Use them to manage outreach fatigue, build suppression rules, and report on rep-level activity.
HeyReach campaign count
Identifier: heyreach_campaign_count | Format: Number (integer) | Update logic: Increments
Total number of HeyReach campaigns this contact has been part of since the integration was installed.
Use cases:
Filter contacts touched by 3 or more campaigns to identify the most-saturated prospects in your CRM and pause further outreach
Build a saturation report showing how many contacts have been hit by multiple campaigns over a rolling 90-day window
Trigger a workflow when count exceeds a threshold (e.g. 5) to flag potential outreach fatigue and remove the contact from active campaignsž
HeyReach list count
Identifier: heyreach_list_count | Format: Number (integer) | Update logic: Increments
Total number of HeyReach lists this contact has been added to since the integration was installed.
Use cases:
Identify contacts present in multiple lists to detect duplication across your team's segmentation work
Build governance reports showing average list membership per contact, useful for agencies managing multiple clients in one workspace
Trigger a workflow that flags contacts with unusually high list counts for review by a sales operations admin
Last HeyReach campaign name
Identifier: heyreach_last_campaign_name | Format: Single-line text | Update logic: Overwrites
The name of the most recent HeyReach campaign this contact was enrolled in. Updates each time the contact is added to a new campaign.
Use cases:
Filter contacts currently being targeted by a specific campaign to coordinate outreach across email, ads, and other channels
Build a real-time view of where contacts sit in your active outreach motion, segmented by their most recent campaign
Trigger a workflow when the last campaign name changes, useful for syncing campaign membership to other tools or notifying account owners
Last HeyReach campaign ID
Identifier: heyreach_last_campaign_id | Format: Single-line text | Update logic: Overwrites
The stable internal identifier of the most recent HeyReach campaign this contact was enrolled in, used for joins where campaign names may change.
Use cases:
Join HubSpot contact data with HeyReach campaign-level analytics on a stable identifier for accurate cross-system reporting
Maintain a stable reference to the active campaign even when a campaign is renamed in HeyReach
Use as the primary key in data warehouse exports where campaign IDs are required for ETL pipelines
Last HeyReach sender
Identifier: heyreach_last_sender | Format: Single-line text | Update logic: Overwrites
The name of the LinkedIn sender account that most recently interacted with this contact through HeyReach.
Use cases:
Filter contacts by their most recent sender to give reps visibility into which leads they have personally engaged
Build per-sender activity reports showing how many active contacts each LinkedIn account is currently working with
Trigger a workflow to notify a rep in Slack based on the last HeyReach sender, aligning ownership with active outreach without modifying HubSpot's native Contact Owner field
Section 3 - Engagement
Engagement properties answer the question "how is this contact actually responding?"
They measure whether and how often a contact has replied, how fast replies arrive, and how fast your reps respond back.
Use them for lead prioritization, rep performance reporting, and identifying high-quality contacts worth deal-stage progression.
HeyReach reply received
Identifier: heyreach_reply_received | Format: Boolean (Yes / No) | Update logic: Overwrites
Indicates whether the contact has ever replied to a HeyReach outreach message. Flips to Yes on the first reply and stays there.
Use cases:
Build a HubSpot list of every contact who has replied through LinkedIn to prioritize high-engagement leads for follow-up
Run a conversion funnel report showing the ratio of touched contacts to replied contacts, segmented by campaign or sender
Trigger a workflow to advance the contact's lifecycle stage from Lead to Marketing Qualified Lead the moment a reply is received
HeyReach reply count
Identifier: heyreach_reply_count | Format: Number (integer) | Update logic: Increments
Total number of replies received from this contact across all HeyReach campaigns and senders.
Use cases:
Filter contacts with 3 or more replies to identify highly engaged prospects worth deeper qualification or deal creation
Build a report showing average replies per contact by campaign to measure conversation depth, not just reply rate
Trigger a workflow when reply count crosses a threshold (e.g. 4) to notify the account owner that the contact is in active dialogue
First HeyReach reply date
Identifier: heyreach_first_reply_date | Format: DateTime | Update logic: Set once
The date and time of the contact's first ever reply through HeyReach.
Use cases:
Filter contacts who replied in a specific quarter to build cohort-based engagement reports tied to outbound campaigns
Calculate time-to-conversion from first reply to closed-won deal as a benchmark for your sales motion
Trigger a 7-day-since-first-reply workflow to ensure no engaged contact goes without a follow-up touch
Last HeyReach reply date
Identifier: heyreach_last_reply_date | Format: DateTime | Update logic: Overwrites
The date and time of the most recent reply received from this contact, refreshed each time a new reply lands.
Use cases:
Filter for contacts who have replied within the last 14 days to build an active conversations view for sales reps
Build a stale-conversation report identifying contacts whose last reply date is more than 30 days old, signalling re-engagement opportunities
Trigger a workflow that nudges the account owner to follow up if no internal action has been logged within 5 days of the last reply
Time to first reply (hours)
Identifier: heyreach_time_to_first_reply | Format: Number (integer, hours) | Update logic: Set once
Number of hours elapsed between the first outbound HeyReach touch and the contact's first reply.
Use cases:
Filter contacts who replied within 4 hours to identify high-intent leads that warrant immediate sales attention
Build a campaign performance report comparing average time to first reply across campaigns to evaluate which messaging triggers the fastest engagement
Trigger a workflow that routes fast-replying contacts (under 24 hours) to a senior closer for priority handling
Sender reply time (hours)
Identifier: heyreach_sender_reply_time | Format: Number (integer, hours) | Update logic: Overwrites
Number of hours your sender (rep) took to reply back to the contact after receiving their reply. Measures rep responsiveness, not lead responsiveness.
Use cases:
Build a rep performance report showing average sender reply time by team member to identify reps who respond slowest to engaged leads
Filter conversations where the sender took longer than 24 hours to reply for coaching opportunities and SLA compliance reviews
Trigger an internal Slack notification when sender reply time exceeds a threshold (e.g. 8 hours) to flag potential drop-offs in active conversations
Section 4 - Intent
Intent properties answer the question "what kind of replies is this contact giving?"
HeyReach classifies each reply as Positive, Neutral, or Negative based on its content, and these properties surface that classification at the contact level.
Use them to prioritize follow-up, segment lead quality, and avoid spending sales cycles on contacts whose intent is clearly negative.
HeyReach intent
Identifier: heyreach_intent | Format: Dropdown (Positive / Neutral / Negative) | Update logic: Overwrites
The latest intent classification HeyReach assigned to a reply from this contact.
Use cases:
Filter contacts where intent equals Positive to build a high-quality lead list for sales rep follow-up
Build a report comparing positive intent rate across campaigns to identify which messaging elicits the strongest replies
Trigger a workflow that auto-creates a deal in HubSpot the moment intent flips to Positive on a contact
HeyReach positive intent count
Identifier: heyreach_positive_intent_count | Format: Number (integer) | Update logic: Increments
Total number of replies classified as Positive across all HeyReach interactions with this contact.
Use cases:
Filter contacts with 2 or more positive intent signals to identify consistently engaged prospects worth deal-stage progression
Build a report showing positive intent count per sender to evaluate which reps are best at moving conversations forward
Trigger a workflow that escalates the contact to an account executive when positive intent count crosses a defined threshold
HeyReach negative intent count
Identifier: heyreach_negative_intent_count | Format: Number (integer) | Update logic: Increments
Total number of replies classified as Negative across all HeyReach interactions with this contact.
Use cases:
Filter contacts with 1 or more negative intent signals to suppress them from future campaigns and avoid further outreach
Build a report identifying campaigns with above-average negative intent counts to flag messaging that may be triggering objections
Trigger a workflow that automatically marks the contact as do-not-contact in HubSpot the moment negative intent is recorded
Last intent date
Identifier: heyreach_last_intent_date | Format: DateTime | Update logic: Overwrites
The date and time of the most recent reply where HeyReach classified intent for this contact.
Use cases:
Filter contacts where last intent date is more recent than 7 days to focus reps on the freshest qualified conversations
Build a stale intent report identifying contacts whose intent classification is more than 60 days old, signalling that the lead may have gone cold
Trigger a workflow that re-prioritizes the contact in a sales rep's task list whenever the last intent date refreshes
Section 5 - Operational context
Operational context properties answer the question "what is the current state of this contact in HeyReach?"
They track the most recent activity and the responsible outbound actor, supporting troubleshooting and ownership visibility without modifying HubSpot's native ownership model.
Last HeyReach activity date
Identifier: heyreach_last_activity_date | Format: DateTime | Update logic: Overwrites
The date and time of the most recent HeyReach activity logged on this contact, including connection requests, messages, replies, and InMails.
Use cases:
Filter contacts whose last HeyReach activity is more than 14 days ago to identify dormant conversations needing re-engagement
Build an activity recency report showing the distribution of contacts by days-since-last-activity to gauge campaign momentum
Trigger a workflow that pauses the contact in HeyReach if no activity has occurred within a defined window, freeing up sender capacity
HeyReach outbound actor
Identifier: heyreach_outbound_actor | Format: Single-line text | Update logic: Overwrites
The team member responsible for the most recent outbound interaction with this contact. Stored separately from HubSpot's native Contact Owner field, which HeyReach never modifies.
Use cases:
Filter contacts by outbound actor to give each rep a personalized list of leads they are actively engaging on LinkedIn
Build a per-actor performance report comparing outreach volume, reply rate, and intent across team members
Trigger a workflow that notifies the outbound actor in Slack whenever a new reply lands on a contact they are responsible for
Quick reference - all 20 properties
Property name | Identifier | Format | Update logic |
Created by HeyReach | heyreach_created_by_heyreach | Boolean | Set once |
First HeyReach touch date | heyreach_first_touch_date | DateTime | Set once |
First HeyReach campaign name | heyreach_first_campaign_name | Text | Set once |
First HeyReach campaign ID | heyreach_first_campaign_id | Text | Set once |
HeyReach campaign count | heyreach_campaign_count | Number | Increments |
HeyReach list count | heyreach_list_count | Number | Increments |
Last HeyReach campaign name | heyreach_last_campaign_name | Text | Overwrites |
Last HeyReach campaign ID | heyreach_last_campaign_id | Text | Overwrites |
Last HeyReach sender | heyreach_last_sender | Text | Overwrites |
HeyReach reply received | heyreach_reply_received | Boolean | Overwrites |
HeyReach reply count | heyreach_reply_count | Number | Increments |
First HeyReach reply date | heyreach_first_reply_date | DateTime | Set once |
Last HeyReach reply date | heyreach_last_reply_date | DateTime | Overwrites |
Time to first reply (hours) | heyreach_time_to_first_reply | Number | Set once |
Sender reply time (hours) | heyreach_sender_reply_time | Number | Overwrites |
HeyReach intent | heyreach_intent | Dropdown | Overwrites |
HeyReach positive intent count | heyreach_positive_intent_count | Number | Increments |
HeyReach negative intent count | heyreach_negative_intent_count | Number | Increments |
Last intent date | heyreach_last_intent_date | DateTime | Overwrites |
Last HeyReach activity date | heyreach_last_activity_date | DateTime | Overwrites |
HeyReach outbound actor | heyreach_outbound_actor | Text | Overwrites |
Have questions about the HeyReach property group or how a specific property is populating in HubSpot? Chat with our support team via the widget in the bottom-right corner. 🚀
