
LinkedIn to Attio
Stop Missing LinkedIn Follow-Ups: Build an Attio Agent With One Prompt
Most follow-up gaps on a RevOps team do not come from weak task discipline. They happen because LinkedIn messages go unanswered not because the rep forgot to care, but because nothing in Attio reminded them the conversation was still open.
You can build a workflow in Attio that monitors unanswered LinkedIn outreach, gathers full deal context, drafts a follow-up message, and creates an assigned task for the right rep. All from one prompt pasted into Attio's workflow builder. Attio's AI reads the prompt and builds the trigger, the loop, the agent steps, and the task block for you.
The catch is that the workflow only works if LinkedIn activity is already flowing into Attio as structured, workflow-ready data. This article walks through the setup in four parts: sync layer, signal layer, agent layer, and action layer.
If you want a practical way to implement the first two layers without custom workarounds, Groovin's Attio sync setup is designed for exactly this: it captures LinkedIn messages, invites, and InMails into Attio in real time, attaches conversation history to the right record as Notes, and exposes workflow-ready fields your Attio workflows and agents can actually filter on.
By the end, you will have the actual prompt used to build this workflow, an explanation of each step, and the key decisions to make before rolling it out.

Why your Attio agent fails without LinkedIn context
What people lump together as "LinkedIn automation"
Most content about LinkedIn automation mixes together three different things:
LinkedIn outreach tools, tools built to send messages, manage sequences, and scale connection requests
CRM workflow automation, Attio workflows, task creation, and record updates triggered by data changes
Follow-up drafting, Attio Agents, summaries, and suggested next steps
For an Attio-first RevOps team, the second and third categories matter most. But they only work when the input data is dependable.
That is what CRM-aligned LinkedIn prospecting actually means: Attio stays aware of what happened on LinkedIn in real time, so workflows and agents act on reality instead of stale records.
What missing context looks like inside Attio
Here is what the problem looks like in practice:
A rep sends a LinkedIn message, but the timestamp never lands on the Attio record
The conversation direction is not tracked, so Attio cannot tell who sent last
The agent runs, sees no LinkedIn data, and either skips the record or drafts a follow-up that contradicts an active conversation
Practical fix: Before tuning your agent prompt, test one live contact record end to end. In a working setup, you should be able to open the Attio record and see the LinkedIn conversation in Notes, the timestamp of your last outbound message, and the direction field showing who sent last. If those are missing, the problem is upstream. A sync layer like Groovin fills that gap by syncing messages, invites, and InMails into the correct Attio record in real time and logging conversations as Notes.
Watch out for: If an agent reads vague "recent activity" fields, it will produce confident but wrong output. The reliability problem starts upstream. Fix the data layer before you change the prompt.
Use this four-layer setup if you want reliable follow-up
The four layers below are the backbone of the workflow:
Sync layer, LinkedIn activity flows into the right Attio record in real time
Signal layer, that activity becomes structured fields and timestamps the workflow can filter on
Agent layer, the Attio Agent interprets those signals, gathers context, and drafts a next step
Action layer, a task assigned to the right rep gets created with the draft attached
Groovin supports the sync and signal layers. It syncs LinkedIn messages, invites, and InMails into the right Attio records automatically, exposes structured timestamp and direction fields, and logs conversation history as Notes. That is what makes the agent layer dependable.
Without that foundation, every prompt is working from empty fields.
Which Attio fields your agent needs
Turn LinkedIn activity into structured attributes
A prompt that says "look at recent LinkedIn activity" usually fails. There is nothing precise for the agent to reason on: no timestamps, no direction, no thread content.
A filter that says "find People where Last LinkedIn message sent at is between 3 and 4 days ago and Last LinkedIn message direction equals sent" gives the workflow something specific to act on. You can debug it, improve it, and trust the output.
That is what workflow-ready signals mean in practice: structured Attio attributes, populated automatically, that workflows and agents can filter, sort, and trigger on.
The fields this workflow uses
Attio attribute | What it tells the workflow | How it is used |
|---|---|---|
Last LinkedIn message sent at | When the rep last touched this contact on LinkedIn | Trigger filter: between 3 and 4 days ago |
Last LinkedIn message direction | Whether the last message was sent or received | Filter: equals "sent" — confirms no reply came after |
Last LinkedIn message sent by | Which Attio user sent the last message | Task assignee: routes the task to the right rep automatically |
LinkedIn URL | The contact's LinkedIn profile | Included in the task body so the rep can open the conversation in one click |
Notes (LinkedIn conversations) | Full conversation history logged by Groovin | Research Agent reads Notes to understand the thread before drafting |
Related deals, emails, calls, meetings | Full deal context beyond LinkedIn | Research Agent pulls this to personalize the follow-up draft |
Last LinkedIn invite accepted at | A new warm connection was just established | Useful for a first-touch variation of this workflow |
Groovin populates all of these automatically as part of the sync. Message timestamps, direction, the Attio user who sent the message, and the full conversation thread in Notes are logged without manual entry. That is what gives both the filter and the Research Agent something real to work with.
Set custom context in Ask Attio so the agent understands your data model
Attio Agents work better when the field meaning is explicit. Go to Attio settings and add custom context that tells the agent how your LinkedIn data is structured.
Here is the custom context used in the workflow Gio built:
We use Groovin to sync LinkedIn activity into Attio. LinkedIn interactions (connection invites and messages) are tracked on People records via dedicated attributes that log who sent or received the interaction and when. When building workflows or filters around LinkedIn outreach, always use a time window (for example, "between 3 and 4 days ago") rather than a simple "older than X days" to avoid re-triggering on the same records daily. Groovin also logs LinkedIn conversations as Notes on People and Company records. When trying to understand a contact's context, check their Notes for past LinkedIn conversation history.
This takes under ten minutes to set up and noticeably improves how the Research Agent reads your LinkedIn fields and Notes.
How to build the workflow with one prompt
What "one prompt" actually means here
The one prompt does not go into a chat window. It goes into Attio's workflow builder.
Paste the prompt, send it, and Attio's AI reads the instruction and builds the entire workflow for you: the daily trigger, the filter on LinkedIn fields, the loop over matching contacts, the Research Agent step, the Copywriter Agent step, and the task creation block. You get a fully wired workflow, not just a draft.
After Attio builds it, review each step before publishing. Attio's AI occasionally leaves an invalid value in the linked record field or in the direction filter. Fix those manually if you see them, then publish.
The prompt
*Context* You are a LinkedIn follow-up automation system monitoring outbound messages that haven't received replies. You have access to People records with LinkedIn message metadata fields ("Last LinkedIn message sent at", "Last LinkedIn message direction", "Last LinkedIn message sent by", LinkedIn URL). You also have access to related deals, call recordings, notes, emails, and other context about each person. This automation runs daily. *Task* Build the following workflow: Trigger: daily recurring schedule Find People where "Last LinkedIn message sent at" is between 3–4 days ago AND "Last LinkedIn message direction" equals "sent" (use a 3–4 day time window, not "older than X days", to avoid re-triggering on the same records daily) Loop over each matching person and run the following steps in sequence: Step A — Custom Agent: Research Give this agent access to: Notes, Emails, Call recordings, Meetings, Records. Prompt: You are a research assistant. Your job is to gather context about a person so that a separate step can draft a personalized LinkedIn follow-up message. Person record: {Loop > Current person} Research steps: 1. Look up the person record: name, LinkedIn URL, associated company, associated deals. 2. Check their notes for past LinkedIn conversation context (Groovin logs LinkedIn messages as notes). 3. Check recent emails, call recordings, and meetings involving this person. 4. Review any linked deal records for deal stage and status. Output a structured context summary with the following sections: - Person: name, title, company - LinkedIn URL - Deal context: stage, key topics - Recent interactions: key points from notes, emails, calls, meetings - Suggested angle: one sentence on the best hook for a follow-up message Step B — Custom Agent: Copywriter No tool access needed for this agent. Its input is the output of the Research agent above. Prompt: You are a copywriter drafting a short LinkedIn follow-up message. You will be given a research summary about a person. Write the message and nothing else. Research summary: {Research Agent > Response} Rules: - Output ONLY the message text. No preamble, no explanation, no subject line. - 2–4 sentences max. - Reference something specific from the research (recent conversation, their company, deal topic, or shared interest). - End with a clear, low-friction call-to-action. - Tone: direct, warm, human. Like a message from a real person, not a sales bot. - No em dashes, no double dashes, no "I hope this message finds you well", no AI filler phrases. - If context is thin, use a warm and simple professional message rather than inventing specifics. Create a task with: Body: "Follow up on LinkedIn with [Person Name] ([LinkedIn URL]) — Suggested message: [Copywriter Agent output]" Assignee: value from "Last LinkedIn message sent by" field Linked records: the person record + their first associated deal (if one exists) *Constraints*
How the two-agent structure works
The workflow uses two agents in sequence, not one.
Research Agent has tool access to Notes, Emails, Call recordings, Meetings, and Records. It looks up the person, reads their Notes for the LinkedIn conversation Groovin logged, checks recent emails and calls, reviews the linked deal stage, and outputs a structured context summary. The critical instruction is explicit: check Notes for LinkedIn conversation context. That is where Groovin stores the thread.
Copywriter Agent has no tool access. Its only input is the Research Agent's structured summary. It writes one message, 2 to 4 sentences, referencing something specific from the research, ending with a low-friction call to action. No preamble, no AI filler. The rep should be able to read it and paste it directly into LinkedIn.
Separating the two keeps output cleaner. The Research Agent focuses on gathering. The Copywriter Agent focuses on writing. Combining both into one agent usually produces generic drafts because the reasoning and the writing compete for the same context window.
The time window is not optional
The filter uses "between 3 and 4 days ago" rather than "older than 3 days." This matters.
"Older than 3 days" re-triggers on the same records every day once they cross the threshold. Every contact you sent a message to 3, 5, or 10 days ago without a reply would get a new task created on each daily run. The 3-to-4-day window narrows the trigger to a single-day slice, so each record is processed exactly once.
Gotcha to watch: This is worth adding explicitly to your Ask Attio custom context. Telling the agent to use time windows rather than "older than X days" filters makes it less likely to build a re-triggering workflow if you use the prompt again to iterate later.
Choose the right action layer: task creation or Slack digest
This workflow creates tasks by default
The workflow creates a task for each matching contact, assigned to the rep who sent the last LinkedIn message, with the drafted follow-up in the task body and the person record and deal linked. The rep opens the task, reads the draft, and pastes it into LinkedIn if it looks right.
That is a reasonable default when the signal layer is clean and the team is comfortable reviewing AI-drafted copy before acting on it.
Use a Slack digest first if the setup is still new
A Slack digest is the safer starting point for most teams:
The setup is new and outputs have not been validated on real records
Data quality varies, which is common when you backfill older conversations
A manager wants visibility before reps act on drafts
The team needs time to build trust in the Copywriter Agent's output quality
A simple digest: send a Slack message each morning with the day's flagged contacts, each with the Attio record link and the drafted follow-up. The rep reads it, decides what to use, and acts.
Dimension | Task in Attio | Slack digest |
|---|---|---|
Trust required | High | Lower — manager reviews first |
Best for | Validated signal layer | New rollouts and mixed data quality |
Risk | Task noise if filter misfires | Reps may skim or ignore the digest |
Good first step? | After 2 to 4 weeks of pilot | Yes, on day one |
Set these guardrails before rollout
Pilot with one or two reps before rolling out team-wide. Check that the filter fires correctly, the Research Agent pulls real Notes, and the Copywriter Agent produces usable drafts.
Verify one real record end to end. Open the Attio record, confirm the LinkedIn conversation is in Notes, and confirm the direction and timestamp fields updated correctly after the last message.
Choose which conversations sync. Not every LinkedIn thread belongs in Attio. Groovin keeps conversation sync opt-in by default, so you control what lands in Notes.
Define what wrong looks like. If the Copywriter Agent drafts a message that contradicts the conversation in Notes, check whether the Research Agent found the Notes and whether the sync completed correctly. Check the data first, not the prompt.
Groovin acts as a secure gateway throughout. It does not store message content on Groovin servers and the integration is GDPR compliant. That makes selective rollout easier and helps with internal security review.
A workflow you can build this week
The outbound follow-up workflow
Here is the full workflow, as Gio built it:
Trigger: daily recurring schedule
Filter: People where Last LinkedIn message sent at is between 3 and 4 days ago AND Last LinkedIn message direction equals "sent"
Loop: for each matching person, run Research Agent then Copywriter Agent in sequence
Research Agent: reads Notes for the LinkedIn conversation Groovin logged, plus emails, calls, meetings, and linked deals — outputs a structured context summary
Copywriter Agent: takes the summary and writes a 2 to 4 sentence follow-up message
Task creation: body is "Follow up on LinkedIn with [Name] ([LinkedIn URL]) — Suggested message: [draft]", assigned to Last LinkedIn message sent by, linked to person record and first deal
Follow this setup order
Install Groovin, connect Attio, and confirm the default list, owner, and lifecycle stage for new records
Verify one real record end to end: last outbound message timestamp updated, direction shows "sent", conversation appears in Notes
Add the custom Ask Attio context shown above in Attio settings
Paste the workflow prompt into Attio's workflow builder and let Attio build the workflow
Review each step — fix any invalid values in the linked record field or direction filter before publishing
Run in Slack digest mode for two weeks and validate draft quality against real records
Switch to task creation once the filter and drafts are reliable
Do not skip step two. If the direction field is empty or the conversation is not in Notes, paste the prompt and the workflow will build correctly but produce empty or wrong output from day one.
What to try next: the invite-accepted variation
Once the outbound follow-up workflow is running, the next natural addition uses a different trigger: Last LinkedIn invite accepted at updates on a contact record and no open task exists. The Research Agent checks Notes for any conversation that happened before the invite. The Copywriter Agent drafts a first-touch message. The task creation step stays the same. This is a good second workflow to build once the outbound version is validated.
How to tell if the workflow is working
Reps get a daily task list with drafted follow-ups instead of manually reviewing who has not replied
The task body includes the LinkedIn URL so the rep can open the conversation in one click
The draft references something specific from the research, not a generic "just checking in"
The task is assigned to the rep who sent the last message, not a default or generic owner
If the draft contradicts the conversation: check whether the LinkedIn Notes synced correctly and whether the direction and timestamp fields updated as expected after the last message. The prompt is rarely the issue. The data layer usually is.
Why "just connect LinkedIn with Zapier" usually falls short
Zapier and similar connectors move data between open APIs. LinkedIn is not an open API for conversations, invite events, or direct messages. That is the main limitation.
Teams that try to bridge the gap usually end up in one of three places:
Brittle workarounds that break when LinkedIn changes its interface
Batch updates that arrive hours or days after the event
Manual copy-paste steps that defeat the point of automation
Because LinkedIn has a closed API for direct messages, generic middleware cannot pull full conversation threads. Groovin acts as a secure, Attio-native gateway that bridges this gap, capturing DMs, InMails, and invites directly from the browser and logging them into the right Attio records and Notes without storing your data on Groovin servers.
If you want an Attio agent to work reliably, the data layer has to be built for LinkedIn-to-Attio sync specifically. That means real-time event capture, structured attribute mapping, and conversation history logged as Notes on the right record.
That is the gap Groovin fills as an Attio-native integration. It gives Attio the LinkedIn context that generic connectors do not, so workflows and agents have something real to act on.
Conclusion: fix the signal layer, then add the agent
The best LinkedIn follow-up system for an Attio-first team is not a sender. It is a workflow built around Attio as the source of truth: sync layer, signal layer, agent layer, and action layer.
One prompt into Attio's workflow builder can produce a fully wired follow-up agent, but only when the LinkedIn fields underneath it are populated automatically, accurately, and in real time. Without that foundation, the Research Agent has nothing to read and the Copywriter Agent has nothing to reference.
The real win is not more outreach. It is a team that stops missing the follow-ups it already earned because a rep sent a message three days ago and no one knew the conversation was still waiting.
Start with the sync. Validate the fields. Paste the prompt. Review the drafts. Then scale.
FAQ
Why does an Attio agent become unreliable when LinkedIn conversations are not synced into Attio as Notes?
Because the Research Agent has nothing to read. The Research Agent is explicitly instructed to check Notes for LinkedIn conversation context. If Groovin has not synced the conversation, the agent either skips the context or works from an incomplete picture. The Copywriter Agent then drafts a message based on an empty or partial summary. The prompt is rarely the problem. The sync layer usually is.
What LinkedIn fields does this workflow filter on?
Two fields: Last LinkedIn message sent at and Last LinkedIn message direction. The filter finds People where the last message was sent between 3 and 4 days ago and where direction equals "sent", meaning the rep sent last and no reply came in. Both conditions must be true. Contacts where the prospect replied are excluded automatically because their direction field shows "received."
Why use "between 3 and 4 days ago" instead of "older than 3 days"?
To avoid re-triggering on the same records daily. "Older than 3 days" keeps re-processing every contact who has been waiting more than 3 days, creating a new task on each daily run. A 3-to-4-day window narrows the trigger to a single-day slice, so each record is processed exactly once.
How does the two-agent structure work?
The Research Agent gathers context. The Copywriter Agent writes the message. The Research Agent has tool access to Notes, Emails, Call recordings, Meetings, and Records. It builds a structured summary including the LinkedIn conversation from Notes, deal stage, recent interactions, and a suggested angle. The Copywriter Agent receives that summary and outputs only the message text, 2 to 4 sentences, with no preamble or explanation. Separating the two produces cleaner, more specific drafts than a single combined agent.
How should teams sequence the setup before pasting the prompt?
Sync layer first, then signal validation, then the prompt. Install Groovin and confirm that LinkedIn messages are landing on the right Attio records as Notes, that direction and timestamp fields update after each message, and that Last LinkedIn message sent by reflects the correct Attio user. Only after those fields are clean should you paste the prompt into the workflow builder.
When should a team switch from Slack digest to automatic task creation?
After two to four weeks of pilot where the filter, drafts, and task routing have been validated on real records. Automatic tasks work well when the trigger is narrow and reliable, the direction and timestamp fields consistently reflect actual activity, and the Copywriter Agent produces drafts the team can act on without significant editing.
What makes this more dependable than a Zapier setup?
Groovin captures what Zapier cannot: full LinkedIn conversation threads, direction context, and message-level timestamps, in real time. LinkedIn's API does not expose direct messages or InMail to generic connectors. Groovin bridges that gap natively, logging conversations as Notes and populating the structured fields the workflow filters on. Without that, the Research Agent has no conversation to reference and the Copywriter Agent produces generic output.
Should every LinkedIn conversation sync into Attio?
No. Selective sync is the better approach. Groovin keeps conversation sync opt-in by default. You decide which threads belong in Attio. Syncing everything creates noise in the Notes field and makes the Research Agent's job harder, not easier.
What is the first thing to check when a draft looks wrong?
The sync and signal layer, not the prompt. Verify that the LinkedIn conversation landed in Notes, that the direction field shows "sent", and that the timestamp updated correctly after the last message. If those fields are accurate, the Research Agent has what it needs. If they are not, no change to the prompt will fix the output.
Can this workflow also handle invite-accepted follow-ups?
Yes, as a variation using a different trigger. Replace the outbound message filter with a trigger on Last LinkedIn invite accepted at. The Research Agent and Copywriter Agent steps stay the same. The Research Agent will check Notes for any conversation that happened before the invite. This is a good second workflow to build once the outbound follow-up version is running cleanly.
Stop Missing LinkedIn Follow-Ups: Build an Attio Agent With One Prompt
Most follow-up gaps on a RevOps team do not come from weak task discipline. They happen because LinkedIn messages go unanswered not because the rep forgot to care, but because nothing in Attio reminded them the conversation was still open.
You can build a workflow in Attio that monitors unanswered LinkedIn outreach, gathers full deal context, drafts a follow-up message, and creates an assigned task for the right rep. All from one prompt pasted into Attio's workflow builder. Attio's AI reads the prompt and builds the trigger, the loop, the agent steps, and the task block for you.
The catch is that the workflow only works if LinkedIn activity is already flowing into Attio as structured, workflow-ready data. This article walks through the setup in four parts: sync layer, signal layer, agent layer, and action layer.
If you want a practical way to implement the first two layers without custom workarounds, Groovin's Attio sync setup is designed for exactly this: it captures LinkedIn messages, invites, and InMails into Attio in real time, attaches conversation history to the right record as Notes, and exposes workflow-ready fields your Attio workflows and agents can actually filter on.
By the end, you will have the actual prompt used to build this workflow, an explanation of each step, and the key decisions to make before rolling it out.

Why your Attio agent fails without LinkedIn context
What people lump together as "LinkedIn automation"
Most content about LinkedIn automation mixes together three different things:
LinkedIn outreach tools, tools built to send messages, manage sequences, and scale connection requests
CRM workflow automation, Attio workflows, task creation, and record updates triggered by data changes
Follow-up drafting, Attio Agents, summaries, and suggested next steps
For an Attio-first RevOps team, the second and third categories matter most. But they only work when the input data is dependable.
That is what CRM-aligned LinkedIn prospecting actually means: Attio stays aware of what happened on LinkedIn in real time, so workflows and agents act on reality instead of stale records.
What missing context looks like inside Attio
Here is what the problem looks like in practice:
A rep sends a LinkedIn message, but the timestamp never lands on the Attio record
The conversation direction is not tracked, so Attio cannot tell who sent last
The agent runs, sees no LinkedIn data, and either skips the record or drafts a follow-up that contradicts an active conversation
Practical fix: Before tuning your agent prompt, test one live contact record end to end. In a working setup, you should be able to open the Attio record and see the LinkedIn conversation in Notes, the timestamp of your last outbound message, and the direction field showing who sent last. If those are missing, the problem is upstream. A sync layer like Groovin fills that gap by syncing messages, invites, and InMails into the correct Attio record in real time and logging conversations as Notes.
Watch out for: If an agent reads vague "recent activity" fields, it will produce confident but wrong output. The reliability problem starts upstream. Fix the data layer before you change the prompt.
Use this four-layer setup if you want reliable follow-up
The four layers below are the backbone of the workflow:
Sync layer, LinkedIn activity flows into the right Attio record in real time
Signal layer, that activity becomes structured fields and timestamps the workflow can filter on
Agent layer, the Attio Agent interprets those signals, gathers context, and drafts a next step
Action layer, a task assigned to the right rep gets created with the draft attached
Groovin supports the sync and signal layers. It syncs LinkedIn messages, invites, and InMails into the right Attio records automatically, exposes structured timestamp and direction fields, and logs conversation history as Notes. That is what makes the agent layer dependable.
Without that foundation, every prompt is working from empty fields.
Which Attio fields your agent needs
Turn LinkedIn activity into structured attributes
A prompt that says "look at recent LinkedIn activity" usually fails. There is nothing precise for the agent to reason on: no timestamps, no direction, no thread content.
A filter that says "find People where Last LinkedIn message sent at is between 3 and 4 days ago and Last LinkedIn message direction equals sent" gives the workflow something specific to act on. You can debug it, improve it, and trust the output.
That is what workflow-ready signals mean in practice: structured Attio attributes, populated automatically, that workflows and agents can filter, sort, and trigger on.
The fields this workflow uses
Attio attribute | What it tells the workflow | How it is used |
|---|---|---|
Last LinkedIn message sent at | When the rep last touched this contact on LinkedIn | Trigger filter: between 3 and 4 days ago |
Last LinkedIn message direction | Whether the last message was sent or received | Filter: equals "sent" — confirms no reply came after |
Last LinkedIn message sent by | Which Attio user sent the last message | Task assignee: routes the task to the right rep automatically |
LinkedIn URL | The contact's LinkedIn profile | Included in the task body so the rep can open the conversation in one click |
Notes (LinkedIn conversations) | Full conversation history logged by Groovin | Research Agent reads Notes to understand the thread before drafting |
Related deals, emails, calls, meetings | Full deal context beyond LinkedIn | Research Agent pulls this to personalize the follow-up draft |
Last LinkedIn invite accepted at | A new warm connection was just established | Useful for a first-touch variation of this workflow |
Groovin populates all of these automatically as part of the sync. Message timestamps, direction, the Attio user who sent the message, and the full conversation thread in Notes are logged without manual entry. That is what gives both the filter and the Research Agent something real to work with.
Set custom context in Ask Attio so the agent understands your data model
Attio Agents work better when the field meaning is explicit. Go to Attio settings and add custom context that tells the agent how your LinkedIn data is structured.
Here is the custom context used in the workflow Gio built:
We use Groovin to sync LinkedIn activity into Attio. LinkedIn interactions (connection invites and messages) are tracked on People records via dedicated attributes that log who sent or received the interaction and when. When building workflows or filters around LinkedIn outreach, always use a time window (for example, "between 3 and 4 days ago") rather than a simple "older than X days" to avoid re-triggering on the same records daily. Groovin also logs LinkedIn conversations as Notes on People and Company records. When trying to understand a contact's context, check their Notes for past LinkedIn conversation history.
This takes under ten minutes to set up and noticeably improves how the Research Agent reads your LinkedIn fields and Notes.
How to build the workflow with one prompt
What "one prompt" actually means here
The one prompt does not go into a chat window. It goes into Attio's workflow builder.
Paste the prompt, send it, and Attio's AI reads the instruction and builds the entire workflow for you: the daily trigger, the filter on LinkedIn fields, the loop over matching contacts, the Research Agent step, the Copywriter Agent step, and the task creation block. You get a fully wired workflow, not just a draft.
After Attio builds it, review each step before publishing. Attio's AI occasionally leaves an invalid value in the linked record field or in the direction filter. Fix those manually if you see them, then publish.
The prompt
*Context* You are a LinkedIn follow-up automation system monitoring outbound messages that haven't received replies. You have access to People records with LinkedIn message metadata fields ("Last LinkedIn message sent at", "Last LinkedIn message direction", "Last LinkedIn message sent by", LinkedIn URL). You also have access to related deals, call recordings, notes, emails, and other context about each person. This automation runs daily. *Task* Build the following workflow: Trigger: daily recurring schedule Find People where "Last LinkedIn message sent at" is between 3–4 days ago AND "Last LinkedIn message direction" equals "sent" (use a 3–4 day time window, not "older than X days", to avoid re-triggering on the same records daily) Loop over each matching person and run the following steps in sequence: Step A — Custom Agent: Research Give this agent access to: Notes, Emails, Call recordings, Meetings, Records. Prompt: You are a research assistant. Your job is to gather context about a person so that a separate step can draft a personalized LinkedIn follow-up message. Person record: {Loop > Current person} Research steps: 1. Look up the person record: name, LinkedIn URL, associated company, associated deals. 2. Check their notes for past LinkedIn conversation context (Groovin logs LinkedIn messages as notes). 3. Check recent emails, call recordings, and meetings involving this person. 4. Review any linked deal records for deal stage and status. Output a structured context summary with the following sections: - Person: name, title, company - LinkedIn URL - Deal context: stage, key topics - Recent interactions: key points from notes, emails, calls, meetings - Suggested angle: one sentence on the best hook for a follow-up message Step B — Custom Agent: Copywriter No tool access needed for this agent. Its input is the output of the Research agent above. Prompt: You are a copywriter drafting a short LinkedIn follow-up message. You will be given a research summary about a person. Write the message and nothing else. Research summary: {Research Agent > Response} Rules: - Output ONLY the message text. No preamble, no explanation, no subject line. - 2–4 sentences max. - Reference something specific from the research (recent conversation, their company, deal topic, or shared interest). - End with a clear, low-friction call-to-action. - Tone: direct, warm, human. Like a message from a real person, not a sales bot. - No em dashes, no double dashes, no "I hope this message finds you well", no AI filler phrases. - If context is thin, use a warm and simple professional message rather than inventing specifics. Create a task with: Body: "Follow up on LinkedIn with [Person Name] ([LinkedIn URL]) — Suggested message: [Copywriter Agent output]" Assignee: value from "Last LinkedIn message sent by" field Linked records: the person record + their first associated deal (if one exists) *Constraints*
How the two-agent structure works
The workflow uses two agents in sequence, not one.
Research Agent has tool access to Notes, Emails, Call recordings, Meetings, and Records. It looks up the person, reads their Notes for the LinkedIn conversation Groovin logged, checks recent emails and calls, reviews the linked deal stage, and outputs a structured context summary. The critical instruction is explicit: check Notes for LinkedIn conversation context. That is where Groovin stores the thread.
Copywriter Agent has no tool access. Its only input is the Research Agent's structured summary. It writes one message, 2 to 4 sentences, referencing something specific from the research, ending with a low-friction call to action. No preamble, no AI filler. The rep should be able to read it and paste it directly into LinkedIn.
Separating the two keeps output cleaner. The Research Agent focuses on gathering. The Copywriter Agent focuses on writing. Combining both into one agent usually produces generic drafts because the reasoning and the writing compete for the same context window.
The time window is not optional
The filter uses "between 3 and 4 days ago" rather than "older than 3 days." This matters.
"Older than 3 days" re-triggers on the same records every day once they cross the threshold. Every contact you sent a message to 3, 5, or 10 days ago without a reply would get a new task created on each daily run. The 3-to-4-day window narrows the trigger to a single-day slice, so each record is processed exactly once.
Gotcha to watch: This is worth adding explicitly to your Ask Attio custom context. Telling the agent to use time windows rather than "older than X days" filters makes it less likely to build a re-triggering workflow if you use the prompt again to iterate later.
Choose the right action layer: task creation or Slack digest
This workflow creates tasks by default
The workflow creates a task for each matching contact, assigned to the rep who sent the last LinkedIn message, with the drafted follow-up in the task body and the person record and deal linked. The rep opens the task, reads the draft, and pastes it into LinkedIn if it looks right.
That is a reasonable default when the signal layer is clean and the team is comfortable reviewing AI-drafted copy before acting on it.
Use a Slack digest first if the setup is still new
A Slack digest is the safer starting point for most teams:
The setup is new and outputs have not been validated on real records
Data quality varies, which is common when you backfill older conversations
A manager wants visibility before reps act on drafts
The team needs time to build trust in the Copywriter Agent's output quality
A simple digest: send a Slack message each morning with the day's flagged contacts, each with the Attio record link and the drafted follow-up. The rep reads it, decides what to use, and acts.
Dimension | Task in Attio | Slack digest |
|---|---|---|
Trust required | High | Lower — manager reviews first |
Best for | Validated signal layer | New rollouts and mixed data quality |
Risk | Task noise if filter misfires | Reps may skim or ignore the digest |
Good first step? | After 2 to 4 weeks of pilot | Yes, on day one |
Set these guardrails before rollout
Pilot with one or two reps before rolling out team-wide. Check that the filter fires correctly, the Research Agent pulls real Notes, and the Copywriter Agent produces usable drafts.
Verify one real record end to end. Open the Attio record, confirm the LinkedIn conversation is in Notes, and confirm the direction and timestamp fields updated correctly after the last message.
Choose which conversations sync. Not every LinkedIn thread belongs in Attio. Groovin keeps conversation sync opt-in by default, so you control what lands in Notes.
Define what wrong looks like. If the Copywriter Agent drafts a message that contradicts the conversation in Notes, check whether the Research Agent found the Notes and whether the sync completed correctly. Check the data first, not the prompt.
Groovin acts as a secure gateway throughout. It does not store message content on Groovin servers and the integration is GDPR compliant. That makes selective rollout easier and helps with internal security review.
A workflow you can build this week
The outbound follow-up workflow
Here is the full workflow, as Gio built it:
Trigger: daily recurring schedule
Filter: People where Last LinkedIn message sent at is between 3 and 4 days ago AND Last LinkedIn message direction equals "sent"
Loop: for each matching person, run Research Agent then Copywriter Agent in sequence
Research Agent: reads Notes for the LinkedIn conversation Groovin logged, plus emails, calls, meetings, and linked deals — outputs a structured context summary
Copywriter Agent: takes the summary and writes a 2 to 4 sentence follow-up message
Task creation: body is "Follow up on LinkedIn with [Name] ([LinkedIn URL]) — Suggested message: [draft]", assigned to Last LinkedIn message sent by, linked to person record and first deal
Follow this setup order
Install Groovin, connect Attio, and confirm the default list, owner, and lifecycle stage for new records
Verify one real record end to end: last outbound message timestamp updated, direction shows "sent", conversation appears in Notes
Add the custom Ask Attio context shown above in Attio settings
Paste the workflow prompt into Attio's workflow builder and let Attio build the workflow
Review each step — fix any invalid values in the linked record field or direction filter before publishing
Run in Slack digest mode for two weeks and validate draft quality against real records
Switch to task creation once the filter and drafts are reliable
Do not skip step two. If the direction field is empty or the conversation is not in Notes, paste the prompt and the workflow will build correctly but produce empty or wrong output from day one.
What to try next: the invite-accepted variation
Once the outbound follow-up workflow is running, the next natural addition uses a different trigger: Last LinkedIn invite accepted at updates on a contact record and no open task exists. The Research Agent checks Notes for any conversation that happened before the invite. The Copywriter Agent drafts a first-touch message. The task creation step stays the same. This is a good second workflow to build once the outbound version is validated.
How to tell if the workflow is working
Reps get a daily task list with drafted follow-ups instead of manually reviewing who has not replied
The task body includes the LinkedIn URL so the rep can open the conversation in one click
The draft references something specific from the research, not a generic "just checking in"
The task is assigned to the rep who sent the last message, not a default or generic owner
If the draft contradicts the conversation: check whether the LinkedIn Notes synced correctly and whether the direction and timestamp fields updated as expected after the last message. The prompt is rarely the issue. The data layer usually is.
Why "just connect LinkedIn with Zapier" usually falls short
Zapier and similar connectors move data between open APIs. LinkedIn is not an open API for conversations, invite events, or direct messages. That is the main limitation.
Teams that try to bridge the gap usually end up in one of three places:
Brittle workarounds that break when LinkedIn changes its interface
Batch updates that arrive hours or days after the event
Manual copy-paste steps that defeat the point of automation
Because LinkedIn has a closed API for direct messages, generic middleware cannot pull full conversation threads. Groovin acts as a secure, Attio-native gateway that bridges this gap, capturing DMs, InMails, and invites directly from the browser and logging them into the right Attio records and Notes without storing your data on Groovin servers.
If you want an Attio agent to work reliably, the data layer has to be built for LinkedIn-to-Attio sync specifically. That means real-time event capture, structured attribute mapping, and conversation history logged as Notes on the right record.
That is the gap Groovin fills as an Attio-native integration. It gives Attio the LinkedIn context that generic connectors do not, so workflows and agents have something real to act on.
Conclusion: fix the signal layer, then add the agent
The best LinkedIn follow-up system for an Attio-first team is not a sender. It is a workflow built around Attio as the source of truth: sync layer, signal layer, agent layer, and action layer.
One prompt into Attio's workflow builder can produce a fully wired follow-up agent, but only when the LinkedIn fields underneath it are populated automatically, accurately, and in real time. Without that foundation, the Research Agent has nothing to read and the Copywriter Agent has nothing to reference.
The real win is not more outreach. It is a team that stops missing the follow-ups it already earned because a rep sent a message three days ago and no one knew the conversation was still waiting.
Start with the sync. Validate the fields. Paste the prompt. Review the drafts. Then scale.
FAQ
Why does an Attio agent become unreliable when LinkedIn conversations are not synced into Attio as Notes?
Because the Research Agent has nothing to read. The Research Agent is explicitly instructed to check Notes for LinkedIn conversation context. If Groovin has not synced the conversation, the agent either skips the context or works from an incomplete picture. The Copywriter Agent then drafts a message based on an empty or partial summary. The prompt is rarely the problem. The sync layer usually is.
What LinkedIn fields does this workflow filter on?
Two fields: Last LinkedIn message sent at and Last LinkedIn message direction. The filter finds People where the last message was sent between 3 and 4 days ago and where direction equals "sent", meaning the rep sent last and no reply came in. Both conditions must be true. Contacts where the prospect replied are excluded automatically because their direction field shows "received."
Why use "between 3 and 4 days ago" instead of "older than 3 days"?
To avoid re-triggering on the same records daily. "Older than 3 days" keeps re-processing every contact who has been waiting more than 3 days, creating a new task on each daily run. A 3-to-4-day window narrows the trigger to a single-day slice, so each record is processed exactly once.
How does the two-agent structure work?
The Research Agent gathers context. The Copywriter Agent writes the message. The Research Agent has tool access to Notes, Emails, Call recordings, Meetings, and Records. It builds a structured summary including the LinkedIn conversation from Notes, deal stage, recent interactions, and a suggested angle. The Copywriter Agent receives that summary and outputs only the message text, 2 to 4 sentences, with no preamble or explanation. Separating the two produces cleaner, more specific drafts than a single combined agent.
How should teams sequence the setup before pasting the prompt?
Sync layer first, then signal validation, then the prompt. Install Groovin and confirm that LinkedIn messages are landing on the right Attio records as Notes, that direction and timestamp fields update after each message, and that Last LinkedIn message sent by reflects the correct Attio user. Only after those fields are clean should you paste the prompt into the workflow builder.
When should a team switch from Slack digest to automatic task creation?
After two to four weeks of pilot where the filter, drafts, and task routing have been validated on real records. Automatic tasks work well when the trigger is narrow and reliable, the direction and timestamp fields consistently reflect actual activity, and the Copywriter Agent produces drafts the team can act on without significant editing.
What makes this more dependable than a Zapier setup?
Groovin captures what Zapier cannot: full LinkedIn conversation threads, direction context, and message-level timestamps, in real time. LinkedIn's API does not expose direct messages or InMail to generic connectors. Groovin bridges that gap natively, logging conversations as Notes and populating the structured fields the workflow filters on. Without that, the Research Agent has no conversation to reference and the Copywriter Agent produces generic output.
Should every LinkedIn conversation sync into Attio?
No. Selective sync is the better approach. Groovin keeps conversation sync opt-in by default. You decide which threads belong in Attio. Syncing everything creates noise in the Notes field and makes the Research Agent's job harder, not easier.
What is the first thing to check when a draft looks wrong?
The sync and signal layer, not the prompt. Verify that the LinkedIn conversation landed in Notes, that the direction field shows "sent", and that the timestamp updated correctly after the last message. If those fields are accurate, the Research Agent has what it needs. If they are not, no change to the prompt will fix the output.
Can this workflow also handle invite-accepted follow-ups?
Yes, as a variation using a different trigger. Replace the outbound message filter with a trigger on Last LinkedIn invite accepted at. The Research Agent and Copywriter Agent steps stay the same. The Research Agent will check Notes for any conversation that happened before the invite. This is a good second workflow to build once the outbound follow-up version is running cleanly.
Stop Missing LinkedIn Follow-Ups: Build an Attio Agent With One Prompt
Most follow-up gaps on a RevOps team do not come from weak task discipline. They happen because LinkedIn messages go unanswered not because the rep forgot to care, but because nothing in Attio reminded them the conversation was still open.
You can build a workflow in Attio that monitors unanswered LinkedIn outreach, gathers full deal context, drafts a follow-up message, and creates an assigned task for the right rep. All from one prompt pasted into Attio's workflow builder. Attio's AI reads the prompt and builds the trigger, the loop, the agent steps, and the task block for you.
The catch is that the workflow only works if LinkedIn activity is already flowing into Attio as structured, workflow-ready data. This article walks through the setup in four parts: sync layer, signal layer, agent layer, and action layer.
If you want a practical way to implement the first two layers without custom workarounds, Groovin's Attio sync setup is designed for exactly this: it captures LinkedIn messages, invites, and InMails into Attio in real time, attaches conversation history to the right record as Notes, and exposes workflow-ready fields your Attio workflows and agents can actually filter on.
By the end, you will have the actual prompt used to build this workflow, an explanation of each step, and the key decisions to make before rolling it out.

Why your Attio agent fails without LinkedIn context
What people lump together as "LinkedIn automation"
Most content about LinkedIn automation mixes together three different things:
LinkedIn outreach tools, tools built to send messages, manage sequences, and scale connection requests
CRM workflow automation, Attio workflows, task creation, and record updates triggered by data changes
Follow-up drafting, Attio Agents, summaries, and suggested next steps
For an Attio-first RevOps team, the second and third categories matter most. But they only work when the input data is dependable.
That is what CRM-aligned LinkedIn prospecting actually means: Attio stays aware of what happened on LinkedIn in real time, so workflows and agents act on reality instead of stale records.
What missing context looks like inside Attio
Here is what the problem looks like in practice:
A rep sends a LinkedIn message, but the timestamp never lands on the Attio record
The conversation direction is not tracked, so Attio cannot tell who sent last
The agent runs, sees no LinkedIn data, and either skips the record or drafts a follow-up that contradicts an active conversation
Practical fix: Before tuning your agent prompt, test one live contact record end to end. In a working setup, you should be able to open the Attio record and see the LinkedIn conversation in Notes, the timestamp of your last outbound message, and the direction field showing who sent last. If those are missing, the problem is upstream. A sync layer like Groovin fills that gap by syncing messages, invites, and InMails into the correct Attio record in real time and logging conversations as Notes.
Watch out for: If an agent reads vague "recent activity" fields, it will produce confident but wrong output. The reliability problem starts upstream. Fix the data layer before you change the prompt.
Use this four-layer setup if you want reliable follow-up
The four layers below are the backbone of the workflow:
Sync layer, LinkedIn activity flows into the right Attio record in real time
Signal layer, that activity becomes structured fields and timestamps the workflow can filter on
Agent layer, the Attio Agent interprets those signals, gathers context, and drafts a next step
Action layer, a task assigned to the right rep gets created with the draft attached
Groovin supports the sync and signal layers. It syncs LinkedIn messages, invites, and InMails into the right Attio records automatically, exposes structured timestamp and direction fields, and logs conversation history as Notes. That is what makes the agent layer dependable.
Without that foundation, every prompt is working from empty fields.
Which Attio fields your agent needs
Turn LinkedIn activity into structured attributes
A prompt that says "look at recent LinkedIn activity" usually fails. There is nothing precise for the agent to reason on: no timestamps, no direction, no thread content.
A filter that says "find People where Last LinkedIn message sent at is between 3 and 4 days ago and Last LinkedIn message direction equals sent" gives the workflow something specific to act on. You can debug it, improve it, and trust the output.
That is what workflow-ready signals mean in practice: structured Attio attributes, populated automatically, that workflows and agents can filter, sort, and trigger on.
The fields this workflow uses
Attio attribute | What it tells the workflow | How it is used |
|---|---|---|
Last LinkedIn message sent at | When the rep last touched this contact on LinkedIn | Trigger filter: between 3 and 4 days ago |
Last LinkedIn message direction | Whether the last message was sent or received | Filter: equals "sent" — confirms no reply came after |
Last LinkedIn message sent by | Which Attio user sent the last message | Task assignee: routes the task to the right rep automatically |
LinkedIn URL | The contact's LinkedIn profile | Included in the task body so the rep can open the conversation in one click |
Notes (LinkedIn conversations) | Full conversation history logged by Groovin | Research Agent reads Notes to understand the thread before drafting |
Related deals, emails, calls, meetings | Full deal context beyond LinkedIn | Research Agent pulls this to personalize the follow-up draft |
Last LinkedIn invite accepted at | A new warm connection was just established | Useful for a first-touch variation of this workflow |
Groovin populates all of these automatically as part of the sync. Message timestamps, direction, the Attio user who sent the message, and the full conversation thread in Notes are logged without manual entry. That is what gives both the filter and the Research Agent something real to work with.
Set custom context in Ask Attio so the agent understands your data model
Attio Agents work better when the field meaning is explicit. Go to Attio settings and add custom context that tells the agent how your LinkedIn data is structured.
Here is the custom context used in the workflow Gio built:
We use Groovin to sync LinkedIn activity into Attio. LinkedIn interactions (connection invites and messages) are tracked on People records via dedicated attributes that log who sent or received the interaction and when. When building workflows or filters around LinkedIn outreach, always use a time window (for example, "between 3 and 4 days ago") rather than a simple "older than X days" to avoid re-triggering on the same records daily. Groovin also logs LinkedIn conversations as Notes on People and Company records. When trying to understand a contact's context, check their Notes for past LinkedIn conversation history.
This takes under ten minutes to set up and noticeably improves how the Research Agent reads your LinkedIn fields and Notes.
How to build the workflow with one prompt
What "one prompt" actually means here
The one prompt does not go into a chat window. It goes into Attio's workflow builder.
Paste the prompt, send it, and Attio's AI reads the instruction and builds the entire workflow for you: the daily trigger, the filter on LinkedIn fields, the loop over matching contacts, the Research Agent step, the Copywriter Agent step, and the task creation block. You get a fully wired workflow, not just a draft.
After Attio builds it, review each step before publishing. Attio's AI occasionally leaves an invalid value in the linked record field or in the direction filter. Fix those manually if you see them, then publish.
The prompt
*Context* You are a LinkedIn follow-up automation system monitoring outbound messages that haven't received replies. You have access to People records with LinkedIn message metadata fields ("Last LinkedIn message sent at", "Last LinkedIn message direction", "Last LinkedIn message sent by", LinkedIn URL). You also have access to related deals, call recordings, notes, emails, and other context about each person. This automation runs daily. *Task* Build the following workflow: Trigger: daily recurring schedule Find People where "Last LinkedIn message sent at" is between 3–4 days ago AND "Last LinkedIn message direction" equals "sent" (use a 3–4 day time window, not "older than X days", to avoid re-triggering on the same records daily) Loop over each matching person and run the following steps in sequence: Step A — Custom Agent: Research Give this agent access to: Notes, Emails, Call recordings, Meetings, Records. Prompt: You are a research assistant. Your job is to gather context about a person so that a separate step can draft a personalized LinkedIn follow-up message. Person record: {Loop > Current person} Research steps: 1. Look up the person record: name, LinkedIn URL, associated company, associated deals. 2. Check their notes for past LinkedIn conversation context (Groovin logs LinkedIn messages as notes). 3. Check recent emails, call recordings, and meetings involving this person. 4. Review any linked deal records for deal stage and status. Output a structured context summary with the following sections: - Person: name, title, company - LinkedIn URL - Deal context: stage, key topics - Recent interactions: key points from notes, emails, calls, meetings - Suggested angle: one sentence on the best hook for a follow-up message Step B — Custom Agent: Copywriter No tool access needed for this agent. Its input is the output of the Research agent above. Prompt: You are a copywriter drafting a short LinkedIn follow-up message. You will be given a research summary about a person. Write the message and nothing else. Research summary: {Research Agent > Response} Rules: - Output ONLY the message text. No preamble, no explanation, no subject line. - 2–4 sentences max. - Reference something specific from the research (recent conversation, their company, deal topic, or shared interest). - End with a clear, low-friction call-to-action. - Tone: direct, warm, human. Like a message from a real person, not a sales bot. - No em dashes, no double dashes, no "I hope this message finds you well", no AI filler phrases. - If context is thin, use a warm and simple professional message rather than inventing specifics. Create a task with: Body: "Follow up on LinkedIn with [Person Name] ([LinkedIn URL]) — Suggested message: [Copywriter Agent output]" Assignee: value from "Last LinkedIn message sent by" field Linked records: the person record + their first associated deal (if one exists) *Constraints*
How the two-agent structure works
The workflow uses two agents in sequence, not one.
Research Agent has tool access to Notes, Emails, Call recordings, Meetings, and Records. It looks up the person, reads their Notes for the LinkedIn conversation Groovin logged, checks recent emails and calls, reviews the linked deal stage, and outputs a structured context summary. The critical instruction is explicit: check Notes for LinkedIn conversation context. That is where Groovin stores the thread.
Copywriter Agent has no tool access. Its only input is the Research Agent's structured summary. It writes one message, 2 to 4 sentences, referencing something specific from the research, ending with a low-friction call to action. No preamble, no AI filler. The rep should be able to read it and paste it directly into LinkedIn.
Separating the two keeps output cleaner. The Research Agent focuses on gathering. The Copywriter Agent focuses on writing. Combining both into one agent usually produces generic drafts because the reasoning and the writing compete for the same context window.
The time window is not optional
The filter uses "between 3 and 4 days ago" rather than "older than 3 days." This matters.
"Older than 3 days" re-triggers on the same records every day once they cross the threshold. Every contact you sent a message to 3, 5, or 10 days ago without a reply would get a new task created on each daily run. The 3-to-4-day window narrows the trigger to a single-day slice, so each record is processed exactly once.
Gotcha to watch: This is worth adding explicitly to your Ask Attio custom context. Telling the agent to use time windows rather than "older than X days" filters makes it less likely to build a re-triggering workflow if you use the prompt again to iterate later.
Choose the right action layer: task creation or Slack digest
This workflow creates tasks by default
The workflow creates a task for each matching contact, assigned to the rep who sent the last LinkedIn message, with the drafted follow-up in the task body and the person record and deal linked. The rep opens the task, reads the draft, and pastes it into LinkedIn if it looks right.
That is a reasonable default when the signal layer is clean and the team is comfortable reviewing AI-drafted copy before acting on it.
Use a Slack digest first if the setup is still new
A Slack digest is the safer starting point for most teams:
The setup is new and outputs have not been validated on real records
Data quality varies, which is common when you backfill older conversations
A manager wants visibility before reps act on drafts
The team needs time to build trust in the Copywriter Agent's output quality
A simple digest: send a Slack message each morning with the day's flagged contacts, each with the Attio record link and the drafted follow-up. The rep reads it, decides what to use, and acts.
Dimension | Task in Attio | Slack digest |
|---|---|---|
Trust required | High | Lower — manager reviews first |
Best for | Validated signal layer | New rollouts and mixed data quality |
Risk | Task noise if filter misfires | Reps may skim or ignore the digest |
Good first step? | After 2 to 4 weeks of pilot | Yes, on day one |
Set these guardrails before rollout
Pilot with one or two reps before rolling out team-wide. Check that the filter fires correctly, the Research Agent pulls real Notes, and the Copywriter Agent produces usable drafts.
Verify one real record end to end. Open the Attio record, confirm the LinkedIn conversation is in Notes, and confirm the direction and timestamp fields updated correctly after the last message.
Choose which conversations sync. Not every LinkedIn thread belongs in Attio. Groovin keeps conversation sync opt-in by default, so you control what lands in Notes.
Define what wrong looks like. If the Copywriter Agent drafts a message that contradicts the conversation in Notes, check whether the Research Agent found the Notes and whether the sync completed correctly. Check the data first, not the prompt.
Groovin acts as a secure gateway throughout. It does not store message content on Groovin servers and the integration is GDPR compliant. That makes selective rollout easier and helps with internal security review.
A workflow you can build this week
The outbound follow-up workflow
Here is the full workflow, as Gio built it:
Trigger: daily recurring schedule
Filter: People where Last LinkedIn message sent at is between 3 and 4 days ago AND Last LinkedIn message direction equals "sent"
Loop: for each matching person, run Research Agent then Copywriter Agent in sequence
Research Agent: reads Notes for the LinkedIn conversation Groovin logged, plus emails, calls, meetings, and linked deals — outputs a structured context summary
Copywriter Agent: takes the summary and writes a 2 to 4 sentence follow-up message
Task creation: body is "Follow up on LinkedIn with [Name] ([LinkedIn URL]) — Suggested message: [draft]", assigned to Last LinkedIn message sent by, linked to person record and first deal
Follow this setup order
Install Groovin, connect Attio, and confirm the default list, owner, and lifecycle stage for new records
Verify one real record end to end: last outbound message timestamp updated, direction shows "sent", conversation appears in Notes
Add the custom Ask Attio context shown above in Attio settings
Paste the workflow prompt into Attio's workflow builder and let Attio build the workflow
Review each step — fix any invalid values in the linked record field or direction filter before publishing
Run in Slack digest mode for two weeks and validate draft quality against real records
Switch to task creation once the filter and drafts are reliable
Do not skip step two. If the direction field is empty or the conversation is not in Notes, paste the prompt and the workflow will build correctly but produce empty or wrong output from day one.
What to try next: the invite-accepted variation
Once the outbound follow-up workflow is running, the next natural addition uses a different trigger: Last LinkedIn invite accepted at updates on a contact record and no open task exists. The Research Agent checks Notes for any conversation that happened before the invite. The Copywriter Agent drafts a first-touch message. The task creation step stays the same. This is a good second workflow to build once the outbound version is validated.
How to tell if the workflow is working
Reps get a daily task list with drafted follow-ups instead of manually reviewing who has not replied
The task body includes the LinkedIn URL so the rep can open the conversation in one click
The draft references something specific from the research, not a generic "just checking in"
The task is assigned to the rep who sent the last message, not a default or generic owner
If the draft contradicts the conversation: check whether the LinkedIn Notes synced correctly and whether the direction and timestamp fields updated as expected after the last message. The prompt is rarely the issue. The data layer usually is.
Why "just connect LinkedIn with Zapier" usually falls short
Zapier and similar connectors move data between open APIs. LinkedIn is not an open API for conversations, invite events, or direct messages. That is the main limitation.
Teams that try to bridge the gap usually end up in one of three places:
Brittle workarounds that break when LinkedIn changes its interface
Batch updates that arrive hours or days after the event
Manual copy-paste steps that defeat the point of automation
Because LinkedIn has a closed API for direct messages, generic middleware cannot pull full conversation threads. Groovin acts as a secure, Attio-native gateway that bridges this gap, capturing DMs, InMails, and invites directly from the browser and logging them into the right Attio records and Notes without storing your data on Groovin servers.
If you want an Attio agent to work reliably, the data layer has to be built for LinkedIn-to-Attio sync specifically. That means real-time event capture, structured attribute mapping, and conversation history logged as Notes on the right record.
That is the gap Groovin fills as an Attio-native integration. It gives Attio the LinkedIn context that generic connectors do not, so workflows and agents have something real to act on.
Conclusion: fix the signal layer, then add the agent
The best LinkedIn follow-up system for an Attio-first team is not a sender. It is a workflow built around Attio as the source of truth: sync layer, signal layer, agent layer, and action layer.
One prompt into Attio's workflow builder can produce a fully wired follow-up agent, but only when the LinkedIn fields underneath it are populated automatically, accurately, and in real time. Without that foundation, the Research Agent has nothing to read and the Copywriter Agent has nothing to reference.
The real win is not more outreach. It is a team that stops missing the follow-ups it already earned because a rep sent a message three days ago and no one knew the conversation was still waiting.
Start with the sync. Validate the fields. Paste the prompt. Review the drafts. Then scale.
FAQ
Why does an Attio agent become unreliable when LinkedIn conversations are not synced into Attio as Notes?
Because the Research Agent has nothing to read. The Research Agent is explicitly instructed to check Notes for LinkedIn conversation context. If Groovin has not synced the conversation, the agent either skips the context or works from an incomplete picture. The Copywriter Agent then drafts a message based on an empty or partial summary. The prompt is rarely the problem. The sync layer usually is.
What LinkedIn fields does this workflow filter on?
Two fields: Last LinkedIn message sent at and Last LinkedIn message direction. The filter finds People where the last message was sent between 3 and 4 days ago and where direction equals "sent", meaning the rep sent last and no reply came in. Both conditions must be true. Contacts where the prospect replied are excluded automatically because their direction field shows "received."
Why use "between 3 and 4 days ago" instead of "older than 3 days"?
To avoid re-triggering on the same records daily. "Older than 3 days" keeps re-processing every contact who has been waiting more than 3 days, creating a new task on each daily run. A 3-to-4-day window narrows the trigger to a single-day slice, so each record is processed exactly once.
How does the two-agent structure work?
The Research Agent gathers context. The Copywriter Agent writes the message. The Research Agent has tool access to Notes, Emails, Call recordings, Meetings, and Records. It builds a structured summary including the LinkedIn conversation from Notes, deal stage, recent interactions, and a suggested angle. The Copywriter Agent receives that summary and outputs only the message text, 2 to 4 sentences, with no preamble or explanation. Separating the two produces cleaner, more specific drafts than a single combined agent.
How should teams sequence the setup before pasting the prompt?
Sync layer first, then signal validation, then the prompt. Install Groovin and confirm that LinkedIn messages are landing on the right Attio records as Notes, that direction and timestamp fields update after each message, and that Last LinkedIn message sent by reflects the correct Attio user. Only after those fields are clean should you paste the prompt into the workflow builder.
When should a team switch from Slack digest to automatic task creation?
After two to four weeks of pilot where the filter, drafts, and task routing have been validated on real records. Automatic tasks work well when the trigger is narrow and reliable, the direction and timestamp fields consistently reflect actual activity, and the Copywriter Agent produces drafts the team can act on without significant editing.
What makes this more dependable than a Zapier setup?
Groovin captures what Zapier cannot: full LinkedIn conversation threads, direction context, and message-level timestamps, in real time. LinkedIn's API does not expose direct messages or InMail to generic connectors. Groovin bridges that gap natively, logging conversations as Notes and populating the structured fields the workflow filters on. Without that, the Research Agent has no conversation to reference and the Copywriter Agent produces generic output.
Should every LinkedIn conversation sync into Attio?
No. Selective sync is the better approach. Groovin keeps conversation sync opt-in by default. You decide which threads belong in Attio. Syncing everything creates noise in the Notes field and makes the Research Agent's job harder, not easier.
What is the first thing to check when a draft looks wrong?
The sync and signal layer, not the prompt. Verify that the LinkedIn conversation landed in Notes, that the direction field shows "sent", and that the timestamp updated correctly after the last message. If those fields are accurate, the Research Agent has what it needs. If they are not, no change to the prompt will fix the output.
Can this workflow also handle invite-accepted follow-ups?
Yes, as a variation using a different trigger. Replace the outbound message filter with a trigger on Last LinkedIn invite accepted at. The Research Agent and Copywriter Agent steps stay the same. The Research Agent will check Notes for any conversation that happened before the invite. This is a good second workflow to build once the outbound follow-up version is running cleanly.
Similar Blogs

Crafted with ❤️ amid the French peaks 🇫🇷 🏔️ — ©2026 Groovin. All rights reserved.
Groovin is not associated with, or endorsed by, the LinkedIn Corporation.

Crafted with ❤️ amid the French peaks 🇫🇷 🏔️ — ©2026 Groovin. All rights reserved.
Groovin is not associated with, or endorsed by, the LinkedIn Corporation.

Crafted with ❤️ amid the French peaks 🇫🇷 🏔️ — ©2026 Groovin. All rights reserved.
Groovin is not associated with, or endorsed by, the LinkedIn Corporation.


