A few weeks ago, I checked our SDR dashboard and paused. Each SDR was spending over 6 hours a week just managing LinkedIn outreach by hand. They were sending connection requests, follow-ups, and tracking replies. All of it was stuck in messy Google Sheets. We were not making progress. We were just wasting time.
That was our breaking point.
So we built an automated system using Make, Unipile, and Apify. Now, from a single sheet, we auto-extract LinkedIn profiles, send personalized invites and DMs, and even trigger ChatGPT generated comments on posts when prospects don’t engage. In one run alone, we triggered 58 actions, invites, DMs, and comments, in under an hour.
It’s how we handled more outreach while still keeping it personal. Let me walk you through the exact process.
The Problem: Manual Outreach Took Too Long
Piusha, our SDR, put it clearly during our weekly team meeting:
“Honestly, doing all this manually takes way too much time. I’m spending hours just sending invites, following up, and tracking everything in Sheets. It’s just not practical. We can’t keep doing this without some kind of automation.”
We were reaching out to prospects on LinkedIn by doing everything manually. We sent connection requests, follow-up messages, and commented on their posts to stay on their radar. It kind of worked, but behind the scenes, it was a mess.
Every action needed to be tracked manually:
- Who got which follow-up?
- Did they reply?
- Was the invite accepted?
- Did we engage with their content?
We kept everything in a shared Google Sheet, and honestly, it was getting out of hand.
Why Common Tools Fell Short
We explored the standard automation tools, those that claim to simplify personalization. But most of them had problems.
- Some went against LinkedIn’s rules.
- Some didn’t give us enough control.
- And some just felt too robotic and templated.
We wanted more flexibility. We needed something we could adjust, track, and improve at every step without losing the human touch.
That’s when Ayush, our AI Automation engineer, came up with a better, more flexible approach.
The Fix: Breaking It Down and Building Smart
We decided to build our own automation workflow using:
- Make: Our central automation hub
- Google Sheets: Our command centre
- Unipile: To send DMs, invites, and comments
- Apify: To scrape recent LinkedIn posts
- ChatGPT: To generate contextual, human-sounding comments
Here’s how we set it up.
Step-by-Step Automation Workflow
Step 1: Google Sheets as Your Tracker
We began by organizing our outreach data in Google Sheets. It wasn’t anything fancy like a CRM, just a clear and easy-to-use setup.
Each row had:
- LinkedIn URL
- Outreach status (e.g., “Follow 1 Sent”, “Invite Sent”, “Commented”)
- Custom follow-up messages (Follow 1, 2, 3)
- Engagement status
The sheet acts as our main tracking system. Every time an automation runs, it updates the sheet instantly, so we always have the latest status in one place. That meant we no longer had to guess who got what. We could see and track every prospect’s journey clearly.

Step 2: Extract the Right Data from URLs
Unipile, the tool we use to send LinkedIn messages and invites, doesn’t work directly with profile URLs. It needs just the username portion (e.g., linkedin.com/in/yourname25 becomes yourname25). So we built a Text parser in Make to pull out the username automatically. That username is then used to get something called a “provider ID.”
Why’s that important? Without the provider ID, LinkedIn won’t allow sending messages or requests through the API.

Step 3: Capture the Provider ID (and Handle Errors)
Once we had the username, we used Unipile to get the provider ID from LinkedIn. But then things got tricky. Some profiles were locked, and others had privacy settings that stopped scraping. To keep the automation running smoothly, we added error handling into the workflow. If the provider ID couldn’t be fetched due to a locked profile, the system skipped the contact and moved on. No crashes, no delays.

Step 4: Automate Messaging, Requests & Comments
Now that we had the data, the outreach process began.
1. If already connected:
We created an HTTP model to send personalized messages via Unipile. This automation sent out the first follow-up and instantly updated the sheet to “Follow 1 Sent”.

2. If not connected:
It sent a connection request, with the option to add a note that served as the first message.

3. If connection was pending or ignored:
Next, we focused on engagement. We used Apify to scrape the prospect’s latest LinkedIn post. That content was then sent to ChatGPT. It generates a custom 10-line comment that’s neutral, clear, and avoids generic phrases. Once the comment is ready, it’s posted directly on the prospect’s post to help us stay visible and improve our chances of engagement.

Step 5: Track Every Step with Status Tags
Each interaction updated the outreach status in our sheet:
- Invite Sent
- Follow 1 Sent
- Commented
- Follow 2 Sent
- Follow 3 Sent
This made it easy to filter who needed what and to run automations only for the right set of people. We use filters like "Follow 1 Sent" to trigger the next follow-up round, so we only targeted people who needed Follow Up 2.

Step 6: Add Time Gaps to Keep It Natural
We spaced out follow-ups by 3 to 4 days. No rapid messages, no spam. Just a steady pace that respected people’s inboxes. This approach worked well. People started responding and engaging more naturally with our messages.

Real Results: What Changed After We Switched
Before automation:
- It took hours to track and send follow-ups.
- We’d forget to engage with key accounts.
- We had no idea what was working.
After automation:
- Outreach became 10x faster.
- Our sheet showed us exactly who was engaged, where they were in the funnel, and what the next action was.
- In one batch before the call, our SDR Piusha ran automation for 58 leads: 5 got messages, 2 got connection invites, and 31 got contextual comments. All in one go.
- That level of control and insight? Game-changing.
Why This Matters for GTM Teams
If you’re in a SaaS GTM team juggling outbound, LinkedIn is probably part of your process. But without a clear system, you’re likely spending hours on follow-ups, missing connections, and doing tasks AI could easily manage. This system didn’t just save us time. It made our outreach easy to track, plan, and repeat. We no longer rely on memory or guesswork. Every action is logged. Every contact has context. And here’s the best part: we’re just getting started.
Key Takeaways for B2B SaaS Teams
- Don’t rely on complicated tools: Create simple workflows you can adjust and manage yourself.
- Start with a fresh Google Sheet: It’s your main control centre.
- Use AI where it helps, not where it gets in the way: ChatGPT helps you get things done but doesn’t replace your thinking.
- Track every step: Outreach isn’t just sending messages. It’s a step-by-step process.
- Be real: Even with automation, your messages should still sound like you.
This automation didn’t come from a playbook. It came from a pain point. This kind of setup is what takes a GTM from good to great. And if you're growing outreach at a B2B SaaS company, this system might just keep you sane.
If you want help building or improving your outbound engine:
1. Drop me a message or connection request on LinkedIn. I'm always happy to talk about systems, strategy, and growth.
2. If you just want the JSON file to try out our workflow, I’m happy to send that over too.
— Karthick Raajha
Founder, Revv Growth