LinkedIn Outreach Platform Agentic Workflow
Read Conversation History — LinkedIn Outreach Platform Agentic Workflow
Searches the inbox for a person by name, opens the first matching thread, and returns the search-result previews plus the full message history
sidebutton install linkedin The read-before-you-write primitive for outreach. LinkedIn's Focused/Other inbox split hides pitches and old threads from the default list, so the only reliable way to find prior contact is the message search — this workflow drives it.
Opens /messaging/?searchTerm=<name>, captures the result list (one entry per matching
thread, with sender/date preview), opens the first match, and returns its complete
message history.
One person can have multiple threads (connection-note thread + later message thread is a common LinkedIn artifact). The returned search-result block lists all of them with date previews; only the first is opened in full. Re-run with a more specific name, or read the previews, when the block shows more than one thread.
Read-only: nothing is typed, clicked beyond thread selection, or sent.
Steps
- 1. Navigate to a URL
- url
- https://www.linkedin.com/messaging/?searchTerm={{person_name}}
browser.navigate - 2. Wait
- selector
- main
- timeout
- 12000
browser.wait - 3. Wait
- ms
- 1500
browser.wait - 4. Extract text from a selector
- selector
- .msg-conversations-container__conversations-list, [class*="conversation-list"]
- as
- thread_list
browser.extract - 5. Click an element
- selector
- li[class*="conversation"]:has-text("{{person_name}}")
browser.click - 6. Wait
- selector
- .msg-s-message-list-content
- timeout
- 8000
browser.wait - 7. Wait
- ms
- 1000
browser.wait - 8. Extract text from a selector
- selector
- .msg-s-message-list-content
- as
- history
browser.extract - 9. control stop
- message
- |
control.stop
Workflow definition
schema_version: 1
version: "1.0.0"
last_verified: "2026-08-25"
id: linkedin_thread_history
title: "Read Conversation History"
description: "Searches the inbox for a person by name, opens the first matching thread, and returns the search-result previews plus the full message history"
overview: |
The read-before-you-write primitive for outreach. LinkedIn's Focused/Other inbox split
hides pitches and old threads from the default list, so the only reliable way to find
prior contact is the message search — this workflow drives it.
Opens `/messaging/?searchTerm=<name>`, captures the result list (one entry per matching
thread, with sender/date preview), opens the first match, and returns its complete
message history.
**One person can have multiple threads** (connection-note thread + later message thread
is a common LinkedIn artifact). The returned search-result block lists all of them with
date previews; only the first is opened in full. Re-run with a more specific name, or
read the previews, when the block shows more than one thread.
Read-only: nothing is typed, clicked beyond thread selection, or sent.
category:
level: task
domain: sales
reusable: true
params:
person_name:
type: string
description: Name to search for, as shown on their profile (last name alone is often the most precise)
required: true
policies:
allowed_domains:
- "*.linkedin.com"
steps:
- type: browser.navigate
url: https://www.linkedin.com/messaging/?searchTerm={{person_name}}
- type: browser.wait
selector: main
timeout: 12000
- type: browser.wait
ms: 1500
- type: browser.extract
selector: '.msg-conversations-container__conversations-list, [class*="conversation-list"]'
as: thread_list
- type: browser.click
selector: 'li[class*="conversation"]:has-text("{{person_name}}")'
- type: browser.wait
selector: .msg-s-message-list-content
timeout: 8000
- type: browser.wait
ms: 1000
- type: browser.extract
selector: .msg-s-message-list-content
as: history
- type: control.stop
message: |
## Matching threads (previews)
{{thread_list}}
## Full history of first matching thread
{{history}}