- Get deal activity history for AI analysis
- Review contact engagement timeline
- Check recent events before taking action
- Gather context for decision-making
- Audit what happened on a record
hubspot.v2.get_timeline_events
What This Does (The Simple Version)
Think of this like viewing someone’s activity feed or history log. Every HubSpot record (contact, deal, company, etc.) has a timeline showing what’s happened - emails sent, meetings scheduled, custom events logged. This action retrieves that timeline. Real-world example: Before calling a lead, you want to see their recent activity. This action gets their timeline showing: form submitted 3 days ago, whitepaper downloaded yesterday, demo requested today. Now you have context for the call.How It Works
This action retrieves timeline events from a HubSpot record. You specify:- What type of record (contact, deal, company, etc.)
- Which record (the HubSpot ID)
- Filter options (optional - specific event types, date ranges)
- How many events to retrieve
Setting It Up
Step 1: Choose Object Type
Select which type of HubSpot record to get events from:- Contacts - Person timeline
- Companies - Organization timeline
- Deals - Deal timeline
- Tickets - Ticket timeline
Step 2: Enter Object ID
In the “Object ID” field, enter the HubSpot ID of the record. Usually you’ll insert a variable here:- Click the
{}
button - Select the object ID from a previous action:
- From a search:
current_deal
→hs_object_id
- From a lookup:
contact_record
→id
- From a webhook:
deal_id
(if provided)
- From a search:
{}
→ select deal_record
→ hs_object_id
Step 3: Filter by Event Type (Optional)
Want only specific types of events? Enter an event type in the “Event Type Filter” field. Leave blank to get all event types (most common). Or enter a specific type:NOTE
- Only notesMEETING
- Only meetingsEMAIL
- Only emails- Custom event types you’ve created (e.g.,
onboarding_completed
)
NOTE
to get only notes
Step 4: Set Date Range (Optional)
Want events from a specific time period? Start Date field:- Enter start date (events after this date)
- Formats:
2025-01-01
or01/01/2025
- Or click
{}
to insert date variable
- Enter end date (events before this date)
- Same format options
2025-01-01
, End Date = 2025-03-31
(Q1 2025 events only)
Step 5: Set Result Limit (Optional)
Enter the maximum number of events to return. Default: 100 Maximum: 500 When to adjust:- Testing? Use 10-20 for faster results
- AI analysis? Use 50-100 (enough context, not overwhelming)
- Complete history? Use 500
Step 6: Name Your Output Variable
Give the events list a descriptive name in the “Output Variable Name” field. Good names:deal_timeline
contact_events
recent_activity
timeline_history
What You Get Back
The action returns a list of timeline events, each containing event details. Example output saved todeal_timeline
:
id
- Event IDeventType
- Type of event (MEETING, EMAIL, NOTE, custom types)timestamp
- When it occurredheadline
- Event title/subjectdetails
- Event description/bodyobjectId
- The record it’s associated with
Using the Results
Pass to AI for Analysis
The most common use - send timeline events to AI for context: In Invoke LLM action:- Prompt: Type “Analyze this deal timeline: ” then click
{}
→ selectdeal_timeline
Example:Analyze this deal timeline: {{deal_timeline}}
- AI receives the full event list and can analyze patterns, identify risks, suggest next steps
Loop Through Events
Process each event individually:-
For Loop
- Loop through: Click
{}
→ selectdeal_timeline
- Current item:
current_event
- Loop through: Click
-
Inside loop: Access event details
- Click
{}
→current_event
→headline
- Click
{}
→current_event
→timestamp
- Click
Count Events
Want to know how many events there are? Add Set Variable action:- Use variable picker to count items in
deal_timeline
array
Check for Recent Activity
Add If Condition:- Check if
deal_timeline
list length > 0 - Check if most recent event timestamp is within last 7 days
- Take action based on activity level
Common Workflows
Deal Health Analysis
Goal: Analyze deal activity before updating-
Lookup HubSpot Object (V2)
- Get deal details
- Output Variable:
deal_record
-
Get Timeline Events (V2)
- Object Type: Deals
- Object ID: Click
{}
→deal_record
→id
- Limit: 50
- Output Variable:
deal_timeline
-
Invoke LLM
- Prompt: “Analyze this deal timeline and assess health: ” +
deal_timeline
variable - Output Variable:
health_assessment
- Prompt: “Analyze this deal timeline and assess health: ” +
-
Update HubSpot Object (V2)
- Update deal with health score
Check Recent Contact Activity
Goal: Only send email if contact hasn’t been contacted recently-
Get Timeline Events (V2)
- Object Type: Contacts
- Object ID: Click
{}
→contact_id
- Event Type Filter:
EMAIL
- Start Date: Click
{}
→seven_days_ago
(system variable) - Output Variable:
recent_emails
-
If Condition
- Check if
recent_emails
is empty (no emails in last 7 days)
- Check if
-
Send Email (inside if block)
- Only runs if no recent emails
- End Condition
Gather Context for Sales Call
Goal: Get complete activity history before calling prospect-
Search HubSpot (V2)
- Find target contact
- Output Variable:
target_contact
-
Get Timeline Events (V2)
- Object Type: Contacts
- Object ID: Click
{}
→target_contact
→hs_object_id
- Limit: 100
- Output Variable:
contact_history
-
Invoke LLM
- Prompt: “Summarize this contact’s history and suggest talking points: ” +
contact_history
variable - Output Variable:
call_prep
- Prompt: “Summarize this contact’s history and suggest talking points: ” +
Real Examples
Pre-Call Research
Scenario: Sales rep clicks “Run” before calling a lead to get instant context. Trigger: Manual Configuration:- Object Type: Contacts
- Object ID: (manually enter contact ID or use search first)
- Event Type Filter: Leave blank (get all events)
- Start Date: Leave blank
- End Date: Leave blank
- Limit: 100
- Output Variable:
contact_timeline
Deal Stall Detection
Scenario: Every morning, check deals for inactivity. Trigger: Scheduled (daily at 9:00 AM) Configuration:- Object Type: Deals
- Object ID: Click
{}
→current_deal
→hs_object_id
(from loop) - Event Type Filter: Leave blank
- Start Date: Click
{}
→thirty_days_ago
- End Date: Leave blank
- Limit: 10 (just need to know if ANY activity exists)
- Output Variable:
recent_activity
recent_activity
is empty, flag deal as stalled.
Troubleshooting
No Events Returned
Action returns empty list[]
Possible causes:
- Record has no timeline events
- Event type filter doesn’t match any events
- Date range excludes all events
- Object ID doesn’t exist
- Check HubSpot - does this record have timeline events?
- Remove event type filter (leave blank to get all types)
- Remove date range filters
- Verify object ID is correct (check execution log)
- Try with a record you know has events
Wrong Event Type
Filter returns no results but events exist Possible causes:- Event type name is case-sensitive or misspelled
- Using wrong event type identifier
- Event types are usually UPPERCASE:
EMAIL
,MEETING
,NOTE
- For custom events, check exact event type identifier
- Leave filter blank first to see all event types, then filter
Too Many Events
Returns 500 events but there are more Possible causes:- HubSpot maximum limit is 500
- Record has thousands of events
- Use date range to focus on recent events
- Use start_date to get last 30/60/90 days only
- Use event type filter to narrow down
- If you need all events, make multiple calls with different date ranges
Events Missing Details
Events returned butdetails
field is empty
This is normal - not all event types have details. Some only have headlines.
How to handle:
- Check
headline
field (always present) - Some events just track “this happened” without description
- Use
eventType
to understand what kind of event it was
Tips & Best Practices
✅ Do:- Use result limit to control how many events you get
- Pass timeline to AI for analysis (great context)
- Filter by date range for recent activity checks
- Use in loops to analyze multiple records
- Leave event type filter blank unless you need specific types
- Check execution log to see what events were returned
- Request all events for records with thousands (use date range)
- Forget that event types are case-sensitive
- Assume all events have detailed descriptions
- Use without object ID (it’s required)
- Expect events from the future (end_date should be past or present)
- Getting 100 events takes ~1-2 seconds
- Fewer events = faster response
- Date range filters speed up retrieval
- Event type filters reduce result size
- All events: Complete history for AI analysis
- EMAIL only: Check email frequency/timing
- MEETING only: Count of meetings scheduled
- NOTE only: Sales notes and context
- Custom events: Track specific milestones
Related Actions
What to do with events:- For Loop - Process each event
- If Condition - Check if events exist
- Create Timeline Event (V2) - Add new events
- Invoke LLM - Analyze events with AI
- Get Engagements (V2) - Similar but for engagements (calls, emails, meetings, notes)
- Lookup HubSpot Object (V2) - Get object before retrieving timeline
- HubSpot Deal Analysis - Uses timeline events for AI analysis
- HubSpot Customer Onboarding - Uses engagement history
Last Updated: 2025-10-01