Skip to main content

How to write a good LinkedIn outreach message

A practical guide to writing LinkedIn outreach messages that get replies - covering connection requests, first messages, follow-ups, HeyReach variables, and how to diagnose low performance.

Sending a message on LinkedIn is easy. Getting a reply is something else entirely. This guide covers what actually works - from the connection request through to follow-up messages, and how to use HeyReach's personalisation variables to make every message feel specific to the person receiving it.

☝🏼 This article focuses on message quality and strategy. For the technical setup of message steps in your HeyReach sequence, see How to launch your first Campaign.

Before you write a word, optimize your LinkedIn profile

When a prospect receives your connection request or message, one of the first things they do is click your name. If the profile looks empty, generic, or untrustworthy, the message gets ignored regardless of how good the copy is.

Before running any campaign, make sure each LinkedIn sender account has:

  • A professional profile photo: clear, high quality, friendly expression

  • A headline that explains who you help: not just a job title. Instead of "Account Executive at Acme Corp", try "Helping SaaS companies book more meetings through LinkedIn outreach"

  • An About section written in first person: who you help, how you help them, and what results you deliver

  • Recent activity: a profile that has not posted or engaged in a long time can appear inactive

🚨 Fix the profile before launching campaigns. Message optimisation cannot compensate for a profile that prospects do not trust.

📖 For more in depth approach you can check this step by step guide for LinkedIn profile Optimization.

The Connection Request optimization

The connection request is the first touchpoint. Keep it simple.

Blank vs note - what HeyReach data shows

Based on HeyReach campaign data, blank connection requests average around a 27% acceptance rate, while requests with a personalised note average around 22%. Blank requests tend to feel less like a sales approach, which is why they convert better in most cases.

The exception is when your note references something genuinely specific to that person: a recent post, a shared event, a mutual connection, or a relevant observation.

A note that reads "Hi {FIRST_NAME}, I help companies like {COMPANY} with X" is not personal, it is a template with a variable, and most people recognise it immediately.

That kind of note tends to hurt acceptance rates rather than help them.

If you use a note, keep it short
LinkedIn connection notes are capped at 300 characters. The note has one job: give the person a reason to accept. It's not the place to pitch.

A good connection note:

  • References something specific (a post, a shared group, a mutual contact)

  • Does not ask for anything

  • Does not mention your product or service

  • Is 1-2 sentences maximum

Example of a connection note that works:
"Hi {FIRST_NAME} - came across your post on {INDUSTRY} trends and it really resonated. Would love to connect."

Example of a connection note that does not work:
"Hi {FIRST_NAME}, I noticed you work at {COMPANY} as {POSITION}. We help companies like yours improve their LinkedIn outreach. Would love to connect and share some insights!"
This is a pitch disguised as a connection request. Most people can spot it immediately.

📖 If you need additional help you can get this proven templates for LinkedIn connection messages.

The first message after connection

This is the most important message in your sequence.

The most common mistake: pitching immediately
Sending a sales pitch the moment someone accepts your connection request is the fastest way to get ignored. The first message should not try to sell anything. Its only job is to start a genuine conversation.

Three ingredients of a first message that gets replies

1. A specific opener
Reference something real about the person. Not just their name and company, but something that shows you actually looked at their profile or their work. This is where HeyReach variables become useful when combined with a well-built lead list.

2. A relevant observation or context
One or two sentences that show you understand their situation. Not a pitch - a demonstration that you have something relevant to say to this specific person.

3. A low-friction call to action
End with a single, easy question or a light offer. Ask for a conversation or permission to share something useful - not a demo booking on the first touch.

Keep it short
Shorter messages tend to get more replies. Aim for 3-5 sentences for your first message. If you cannot say what you need to in 5 sentences, you are trying to do too much in one message.

Example first message (good):
"Hey {FIRST_NAME}, I was looking at what {COMPANY} is doing in the {INDUSTRY} space and it caught my attention. We have been working with a few similar teams on [relevant challenge], happy to share what has been working if that is useful. Worth a quick conversation?"

Example first message (bad):
"Hi {FIRST_NAME}, great to connect! I am reaching out because at [Company] we specialise in helping businesses like {COMPANY} improve their [outcome]. We have worked with 500+ companies and achieved X result. Would you be open to a 15-minute call this week to explore if there is a fit?"
This is a pitch. The person did not ask for one.

Using HeyReach variables effectively

HeyReach supports the following personalisation variables. They are replaced with each lead's real data when the message is sent:

Variable

What it inserts

Example output

{FIRST_NAME}

Lead's first name

Sarah

{LAST_NAME}

Lead's last name

Johnson

{COMPANY}

Lead's company name

Acme Corp

{POSITION}

Lead's job title

VP of Marketing

{INDUSTRY}

Lead's industry

SaaS

{LOCATION}

Lead's location

London, UK

{MY_FIRST_NAME}

Sender's first name

James

{MY_LAST_NAME}

Sender's last name

Williams

🚨 Critical: Variable names are case-sensitive and must use single curly braces. {FIRST_NAME} works. {first_name}, {{FIRST_NAME}}, and {First_Name} will not be replaced and will appear as raw text in your sent messages. Always double-check your variable spelling before launching a campaign.

Variables alone do not make a message personal
Using {FIRST_NAME} at the start of a generic message does not make it feel personal. It just looks like automation with a name swapped in.

The rest of the message also needs to be relevant to that specific person. Variables are a tool; they work when the message around them is genuinely tailored.

How to use variables well:

  • Use {POSITION} or {INDUSTRY} to anchor your message to their context: "As a {POSITION} in {INDUSTRY}, you are probably seeing..."

  • Use {COMPANY} to make observations feel specific: "I noticed {COMPANY} recently..."

  • Use {MY_FIRST_NAME} in your sign-off for a natural, human close

  • Import custom variables via CSV for deeper personalisation - a specific icebreaker, a relevant stat for their sector, or any field unique to your outreach

Always set a fallback message
For any message that uses variables, set a fallback. This is the version sent if a variable fails to populate (e.g. the lead's company name is blank in your data). The fallback should read naturally without the variable - not leave an obvious blank where the value should have been.

Follow-up messages

Not everyone replies to the first message. Following up is a normal part of outreach - most people are busy and the first message may have been missed or skimmed.

How many follow-ups to send
Two to three follow-ups is a reasonable range for LinkedIn. Space them out - following up the next day feels pushy. A gap of 4-7 days between each message is more natural and gives the person time to see it at a good moment.

Each follow-up should add something new
The worst follow-up is a copy of the first message with "Just wanted to bump this up" added. Every follow-up should bring a new angle, a new piece of value, or a new reason to respond:

  • Share something genuinely useful: a relevant article, a case study, an insight specific to their industry

  • Reference something new: a recent post they made or news about their company

  • Make the ask even lighter: "No pressure if the timing is off - happy to send a one-pager if that is easier"

  • On the final touch, a "closing" message: "I won't keep following up after this, but wanted to leave the door open if the timing is ever right"

Example follow-up (good):
"Hey {FIRST_NAME} - I know inboxes fill up fast. Thought this might be relevant given what {COMPANY} is doing in {INDUSTRY}: [specific resource or observation]. Still happy to share more if useful - no pressure either way."

Example follow-up (bad):
"Hi {FIRST_NAME}, just following up on my previous message. Did you get a chance to look at it? Would love to connect this week."
This adds nothing and signals you have no new value to offer.

Message templates you can adapt

These are starting points - always tailor them to the specific lead and your specific offer. A template used without customisation will underperform.

Template 1 - Role and Challenge Based

Best for: standard prospecting to a well-defined audience.

"Hey {FIRST_NAME} - as a {POSITION} in {INDUSTRY}, you are probably dealing with [specific challenge]. We have been working with a few similar teams on this and have some ideas that might be relevant. Happy to share if useful - worth a quick conversation?"

Template 2 - Post Engagement Based

Best for: leads imported via HeyReach's post engagement import.

"Hey {FIRST_NAME} - saw you engaged with [post topic] recently, which caught my attention. We have been helping {INDUSTRY} teams with [related challenge] - happy to share what has been working if that is useful."

Template 3 - Event Attendee Based

Best for: leads imported from a LinkedIn event.

"Hey {FIRST_NAME} - noticed we both attended [event name] recently. The session on [topic] was interesting given what {COMPANY} is working on. Would love to swap notes - worth connecting?"

Template 4 - Follow-up (No Reply)

Best for: second or third touch after no response to the first message.

"Hey {FIRST_NAME} - I know inboxes fill up fast. I will keep this brief: we have been helping {POSITION}s in {INDUSTRY} with [specific outcome], and thought there might be a fit given what {COMPANY} is doing. If the timing is off, no worries - just wanted to make sure this did not get lost."

Template 5 - Final Touch

Best for: the last message in your sequence to a lead who has not responded.

"Hey {FIRST_NAME} - {MY_FIRST_NAME} here. I won't keep reaching out after this - I know your time is valuable. If the timing is ever right to explore [what you do], feel free to reach out. Either way, hope things are going well at {COMPANY}."

🫡 Final touch messages often generate replies from leads who had been meaning to respond but had not yet. Do not skip the last step of your sequence.

Diagnosing low performance

If your campaign is underperforming, the fix is usually straightforward once you identify where the drop-off is happening.

Low acceptance rate
Usually a list or profile issue. Your targeting may be too broad, your sender profile may not look compelling, or your connection note (if using one) is too generic. Fix the list and the profile before changing the message.

Good acceptance rate but low reply rate
Usually a message issue. Your first message is not giving people a reason to respond. Shorten it, make the opener more specific to the person, and simplify the call to action to a single clear ask.

Good acceptance and reply rate but low conversion
Usually a qualification issue. You are starting conversations but the leads are not the right fit, or the value proposition needs refinement. This is a positioning problem rather than an outreach problem.

⚠️ Quick diagnostic: If your reply rate is very low, look at your lead list before touching the copy. A poorly targeted list will underperform regardless of how good the message is.

📖 Sometimes low performance goes beyond the messaging, beofre you start loosing your mind over a copy opt for full campaign audit framework

Message quality checklist

Before launching any campaign in HeyReach, check every message against this list:

  • The first message does not pitch a product or ask for a meeting

  • The opener references something specific to this person or their company

  • The message is 3-5 sentences or fewer

  • The call to action is a single, easy-to-answer question or offer

  • All variables use the correct format: {FIRST_NAME}, {LAST_NAME}, {COMPANY}, {POSITION}, {INDUSTRY}, {LOCATION}, {MY_FIRST_NAME}, {MY_LAST_NAME}

  • Variable names are case-sensitive and spelled exactly as listed above

  • A fallback message is set for every step that uses variables

  • Each follow-up adds something new - it does not just repeat the previous message

  • The message reads naturally when variables are replaced with real values


Have questions about your message copy or want feedback on a specific sequence? Chat with our support team via the widget in the bottom-right corner - we are happy to take a look. 🚀

Did this answer your question?