How to personalize LinkedIn messages at scale: data sources, template variables, and AI-assisted first lines
How to personalize LinkedIn messages at scale using data sources, template variables, AI-assisted first lines, and Aimfox automation. Includes complete personalisation infrastructure for connection notes, follow-up sequences, and campaign quality control.
Sarah Okonkwo
B2B outreach strategist, LinkedIn personalisation systems builder · Updated June 24, 2026
Last updated: June 2026 · Sarah Okonkwo, B2B outreach strategist, LinkedIn personalisation systems builder
TL;DR — 7 things to know before reading
- Personalisation at scale requires a system: an ICP data source, a set of template variables, a process for generating first lines, and a quality control pass before launch
- The three tiers of LinkedIn personalisation: macro (job title, company, industry), meso (recent post, company news, mutual connection), micro (AI-generated first line referencing a specific detail)
- Aimfox's AI personalisation feature generates distinct first lines per prospect using the prospect's profile data; quality varies by how much data is in the prospect's profile
- Template variables in Aimfox:
[firstName],[lastName],[company],[jobTitle],[location]— each must have a fallback value for prospects with incomplete profiles- Quarvio enriches the contact list with job title, company, and industry fields that map directly to template variables in Aimfox
- Connection notes: 300 character limit; one personalisation point + one specific reason for connecting; no pitch; no link
- After this guide: Aimfox for LinkedIn outreach with AI personalisation, Quarvio for enriched B2B contacts from $129/5k, Instantly for cold email parallel channel, Inframail for email infrastructure
Our take
Generic LinkedIn outreach fails because prospects receive too much of it. "Hi [firstName], I came across your profile and thought we might be able to help with [vague claim]" no longer works. Prospects see through variable substitution alone when the rest of the message is identical to thousands of others.
Actual personalisation at scale requires a different approach: a data pipeline that brings specific details about each prospect into the message template, a tiered system for how deeply to personalise based on prospect priority, and an AI layer that generates first lines from prospect profile data rather than substituting generic variables.
This guide covers the complete personalisation infrastructure: what data sources to use, how to map fields to Aimfox template variables, how Aimfox's AI first-line feature works, how to structure multi-tier templates for connection notes and follow-up sequences, and how to run a quality control pass before launching a campaign. Quarvio provides the enriched contact data. Aimfox runs the LinkedIn layer. Instantly handles the parallel cold email channel. Inframail manages email infrastructure.
The three tiers of LinkedIn personalisation
Understanding the tiers of personalisation helps you allocate effort appropriately. Not every prospect warrants deep micro-personalisation; not every campaign can run on generic templates.
Tier 1: Macro personalisation (variables)
This tier uses data fields that exist for every prospect: job title, company name, industry, location. It is the minimum viable personalisation level — required but insufficient on its own.
Aimfox template variable examples:
- "Hi
[firstName], I work with[jobTitle]s at[company]-stage companies on [relevant topic]." - "Hi
[firstName], I noticed you're the[jobTitle]at[company]— we work with teams in[industry]on [relevant topic]."
This level of personalisation is addressable without AI: it requires only that the contact list include correct job title, company, and industry data. Quarvio provides all three fields on every contact.
Tier 2: Meso personalisation (event-based)
This tier references a specific recent event in the prospect's professional life: a promotion, a new company, a recent LinkedIn post, a company announcement, a shared LinkedIn group. This level requires research, either manual (for top prospects) or AI-assisted (for medium-priority prospects).
Examples:
- "Saw your post on [topic] last week — interesting perspective on [specific point]."
- "Noticed
[company]just [raised a round / opened a new office / launched a product] — congratulations." - "We're both in the [Group name] group — your comment on [topic] caught my attention."
Aimfox does not source meso personalisation data automatically. You can add a [customLine] variable to the template and populate it manually for top prospects before importing the contact list into Aimfox.
Tier 3: Micro personalisation (AI-generated first lines)
This tier uses AI to generate a unique first sentence per prospect based on their LinkedIn profile content — their bio, experience summary, recent activity, or headline. The first line reads as if written specifically for that person because it references specific details from their profile.
Aimfox's AI personalisation feature operates at this tier automatically for prospects whose LinkedIn profiles contain enough data. It generates a first line per prospect during campaign preview and shows you a sample set before launch.
Data sources for personalisation
Source 1: Quarvio contact lists
Quarvio delivers contact lists with verified fields that map directly to Aimfox template variables. The relevant fields:
| Quarvio field | Aimfox variable | Notes |
|---|---|---|
| First name | [firstName] | Used in greeting |
| Last name | [lastName] | Rarely used in note; more common in email |
| Company name | [company] | Use in second sentence of note |
| Job title | [jobTitle] | Use to frame relevance |
| Industry | Not a default Aimfox variable | Use as a filter for segment campaigns |
| Location | [location] | Use for geography-specific angles |
Order from Quarvio with a precise ICP filter (job title + company size + industry) to minimise off-ICP contacts that degrade personalisation quality. One-time purchase from $129 for 5,000 contacts; credits valid 12 months.
Source 2: LinkedIn profile data (Aimfox AI)
Aimfox's AI personalisation engine pulls public LinkedIn profile data during campaign setup. It reads the prospect's headline, About section, recent posts, experience summary, and education. It then generates a first line that references a specific detail.
Profile data quality varies by prospect. A VP with a detailed About section and regular posts gives Aimfox's AI more material to work with than an Account Executive with a single-line headline and no posts.
Source 3: Manual custom field population
For your top 20–30 prospects per campaign, manual research produces the highest-quality personalisation. Add a [customLine] column to your Quarvio export before uploading to Aimfox. Populate each [customLine] manually by reviewing the prospect's LinkedIn page.
Custom line examples that reference specific profile content:
- "Your work building [specific program] at [previous company] stood out — I had a similar challenge at a client recently."
- "Your post on [specific topic] three weeks ago was one of the clearest takes I've read on that."
- "Congratulations on the recent move to [current company] — that's a strong team."
Source 4: Company-level event triggers
For campaigns targeting prospects at specific companies, company-level events provide meso-personalisation that applies to all prospects at the company:
- Recently funded: "Saw that
[company]just closed your Series B — congratulations." - Recently hired a CXO: "With [name] joining as [title] at
[company], I imagine [related challenge] is front of mind." - Recently expanded to a new market: "Your expansion into [market] is interesting — we've helped teams navigate that."
These lines can be written once per company segment and applied to all contacts at that company via a [companyLine] custom field.
Aimfox template variable setup
Default variables available in Aimfox
Aimfox supports these template variables in connection notes and message steps:
[firstName]— prospect's first name from LinkedIn[lastName]— prospect's last name from LinkedIn[company]— prospect's current company name[jobTitle]— prospect's current job title[location]— prospect's listed location
Setting fallback values
Every template variable must have a fallback value for prospects whose profiles do not include that field. In Aimfox's template editor, you configure fallback values per variable.
| Variable | Good fallback | Bad fallback |
|---|---|---|
[firstName] | "there" ("Hi there") | "" (blank, produces "Hi ,") |
[company] | "your company" | "" (produces "at ,") |
[jobTitle] | "professionals in your space" | "" (produces sentence break) |
[location] | Omit the phrase containing [location] | "your area" (vague) |
In Aimfox: go to Campaign Settings → Templates → click the variable → set fallback text. Every campaign should have fallback values configured before launch.
Connection note template format
LinkedIn connection note limit: 300 characters. Character count includes spaces and punctuation.
Recommended structure:
Hi [firstName], [one personalised observation]. [one sentence on why connecting makes sense]. No pitch — just think we'd be a good connection.
Example at macro tier (160 characters):
Hi [firstName], I work with [jobTitle]s in [industry] and often come across challenges you'd have strong views on. Would love to connect.
Example at meso tier (230 characters):
Hi [firstName], saw [company] just [event]. We've worked with teams going through similar phases on [relevant challenge]. Would love to be a connection worth having.
Character count tip: use a character counter tool to verify each template variant. At 300 characters, every word counts. Cut articles ("the", "a") where meaning is preserved. Cut "I wanted to reach out" entirely — it adds 0 value.
AI-assisted first line generation
How Aimfox's AI personalisation works
In Aimfox Campaign Settings → Connection Note or Message Step, enable the AI personalisation toggle. When enabled, Aimfox:
- Reads the prospect's LinkedIn profile during campaign processing
- Passes the profile data to an AI model with a first-line generation prompt
- Prepends the AI-generated first line to your template
The AI-generated first line is unique per prospect and references specific profile content. Your template provides the second and third sentences.
What the AI uses from the profile
Aimfox's AI personalisation draws primarily from:
- LinkedIn headline: the current role description below the name
- About section: if populated; highest-quality personalisation input
- Recent posts: if the prospect has posted in the last 60 days
- Current experience description: if the prospect has written a role description
- Skills section: rarely used directly but feeds topic inference
Profile elements it does not use:
- Contact information
- Recommendations received
- Education (unless referenced in bio)
- Activity from LinkedIn groups
Template structure when using AI personalisation
When AI personalisation is enabled, use the placeholder [aiLine] in Aimfox to indicate where the generated first line should appear. Structure the template:
[aiLine] [your bridging sentence that connects the observation to the reason for connecting]. [CTA or close].
Example:
[aiLine] That's exactly the kind of challenge we help B2B teams navigate. Would love to connect and trade notes.
The AI-generated first line provides the specific personalisation hook. Your bridging sentence provides the relevance frame. The close is consistent across the campaign.
Quality control before launch
Aimfox's campaign preview shows you 10 sample AI-generated first lines from your prospect list before the campaign is activated. Review these before launching:
- Click Preview → AI personalisation samples
- Read each first line. Reject (mark for exclusion) any that are:
- Generic (did not use specific profile details)
- Inaccurate (misread or misrepresented the profile)
- Awkward (grammatically correct but tonally off)
- Too long (AI line plus your template exceeds 300 characters)
- For prospects where AI personalisation failed (profile too sparse), either exclude them or switch them to the macro-tier fallback template
Aiming for 70%+ of AI-generated lines being usable before excluding is a reasonable quality threshold. Below 70% suggests the prospect list contains too many incomplete profiles; consider filtering the list more tightly or switching to manual research for the segment.
Multi-step sequence personalisation
Personalisation in follow-up messages
Once a prospect accepts a connection request, the follow-up message sequence begins. The personalisation layer for follow-up messages operates differently from connection notes:
- Message 1 (sent 24–48 hours after acceptance): acknowledge the connection; brief, specific relevance frame; no ask or pitch
- Message 2 (sent 3–5 days after message 1 if no reply): a different angle on relevance; one specific observation or question; still no pitch
- Message 3 (sent 5–7 days after message 2 if no reply): light soft ask; offer something of value (a resource, an insight, a question); ask if relevant
The key rule for follow-up personalisation: never repeat the same angle in two consecutive messages. If message 1 referenced the prospect's job title, message 2 should reference a different signal (their company, a recent post, the industry they work in).
Sequence template example
Message 1 template (sent on acceptance):
Hi [firstName] — thanks for connecting. I noticed [company] has been [relevant context]. We often work with [jobTitle]s navigating [related challenge]. Happy to share what we've seen work. No pitch — just a useful connection to have.
Message 2 template (if no reply after 4 days):
[firstName] — I'll keep this brief. Most [jobTitle]s I talk to in [industry] are dealing with [specific problem]. I have a short take on how the better teams are solving it. Worth a few minutes?
Message 3 template (if no reply after 7 more days):
Last note on my end, [firstName]. I put together a [resource type] specifically for [jobTitle]s at [company size]-stage companies in [industry]. Happy to send it over if useful. If not — no worries.
Note: [company size] is not a default Aimfox variable — populate it as a custom segment label (e.g. "growth-stage" or "enterprise") rather than an exact employee count.
Personalisation infrastructure reference table
| Layer | Data source | Aimfox implementation | Quality level |
|---|---|---|---|
| First name | Quarvio contact list | [firstName] variable | Required (all campaigns) |
| Company name | Quarvio contact list | [company] variable | Required (all campaigns) |
| Job title | Quarvio contact list | [jobTitle] variable | Required (all campaigns) |
| AI first line | LinkedIn profile (Aimfox AI) | [aiLine] variable | High (where profiles are rich) |
| Custom meso line | Manual research | [customLine] custom variable | Highest (top prospects only) |
| Company event line | Funding/news monitoring | [companyLine] custom variable | High (per-company campaigns) |
| Industry reference | Quarvio industry filter | Segment-specific template variants | Medium (campaign-level) |
| Location reference | Quarvio location filter | [location] variable | Low-medium (where locally relevant) |
| Recent post reference | LinkedIn manual review | Part of [customLine] | Highest (top prospects only) |
Advanced tactics
Tactic 1: Segment your prospect list before building templates
Build separate campaign templates for distinct segments rather than one template with many variables. A template written for "VP Sales at 50–200 person SaaS companies" can reference specific language relevant to that exact segment. A template designed to cover "all sales leaders" must stay generic to avoid awkward phrasing.
Practical approach: use Quarvio's filtering to export distinct segments (by company size, industry, or job title tier). Build one Aimfox campaign per segment with a template written specifically for that segment. This is more setup work but produces materially better personalisation quality than one catch-all template with many variables.
Tactic 2: Write 3–4 note variants per campaign and A/B test
Rather than iterating on one template, build 3–4 distinct connection note variants that use different personalisation angles. Aimfox's A/B testing feature distributes prospects across variants. After 50–75 sends per variant, the acceptance rate data shows which angle outperforms. Scale the winner.
Common A/B test axes:
- Note with job-title-first opening vs. company-first opening
- Note referencing a challenge vs. note referencing an insight
- Note with explicit "no pitch" vs. note without that phrase
- Note under 150 characters vs. note using the full 300
Tactic 3: Use LinkedIn's recent activity as a real-time personalisation signal
Before uploading a prospect list segment to Aimfox, scan the prospects' LinkedIn activity (posts, comments, reactions). Prospects who posted in the last 2 weeks are actively using LinkedIn and have content you can reference — prioritise these. Prospects who have not posted in 6+ months may have less LinkedIn activity and lower response rates; consider deprioritising them in the current campaign.
Aimfox's AI personalisation automatically attempts to use recent post content; this tactic ensures you are prioritising prospects where the AI has the most material to work with.
Tactic 4: Match personalisation depth to deal value
Not every prospect justifies the same investment in personalisation depth. A rough allocation guide:
| Deal value tier | Personalisation depth | Time investment |
|---|---|---|
| Under $5k ACV | Macro (variables only) | 0 research per contact |
| $5k–$25k ACV | Macro + AI first line | 0 research; AI automates |
| $25k–$100k ACV | Macro + AI + custom meso line | 5–10 min research per contact |
| Over $100k ACV | Full micro (manual first line, LinkedIn research, company event reference) | 15–30 min per contact |
For high-ACV prospects, the time investment in manual personalisation produces measurable response rate improvements. For volume campaigns at lower ACV, AI personalisation produces sufficient returns on the investment.
Tactic 5: Establish a personalisation maintenance cycle
Personalisation decays. A template written to reference "challenges during hiring growth" becomes irrelevant for a prospect now managing a layoff. A company event reference written in January may be stale by March.
Establish a 90-day review cycle for active Aimfox campaigns. Review:
- Are the job title references still representative of the ICP?
- Are the company/industry references still accurate?
- Have any of the custom meso lines become stale?
- Has acceptance rate declined (a common signal that the personalisation angle is getting stale in the market)?
Rebuild templates every 90 days for campaigns that run continuously.
Tactic 6: Combine LinkedIn personalisation with cold email personalisation
Prospects reached via both LinkedIn connection and cold email — from different angles at different times — show higher response rates than those reached from a single channel. The channels reinforce each other without feeling coordinated (because they are initiated from different inboxes and platforms).
For Instantly cold email sequences sent in parallel with Aimfox LinkedIn campaigns, use the same ICP data but different personalisation references:
- LinkedIn note: references the prospect's LinkedIn presence or company (where they are active)
- Cold email: references a business outcome or challenge relevant to their role (more formal, more explicit value frame)
This ensures the two touchpoints feel distinct rather than identical outreach from two channels.
Troubleshooting
Problem 1: AI-generated first lines are generic for most prospects
Symptom: Aimfox's AI personalisation preview shows first lines that read like "As someone working in [general field], I imagine..." without specific profile references.
Cause: the prospect list contains profiles with very limited public information (minimal About section, no recent posts, sparse headline).
Fix: filter the prospect list to include only profiles with 100+ connections and a visible About section (these are proxies for profile completeness). Remove prospects whose LinkedIn profiles show "500+ connections" but have blank bio sections. Alternatively, switch to macro-tier templates with strong variable personalisation and skip the AI first line feature for this segment.
Problem 2: Template variables showing blank instead of fallback values
Symptom: live messages show "Hi ," or "at ," where variables were not populated.
Cause: fallback values were not configured for template variables in Aimfox before launch.
Fix: pause the campaign. In Aimfox Template Settings, configure fallback values for every variable used in the template. Resume the campaign. For prospects who already received a message with blank variables, consider marking them as paused in Aimfox and removing from the active sequence.
Problem 3: Connection note exceeds 300 characters after variable substitution
Symptom: some prospects' connection requests fail to send because the note exceeds LinkedIn's 300-character limit after substituting longer-than-expected variable values.
Cause: template designed with short company names in mind; prospects with longer company names push the note over 300 characters.
Fix: set a conservative character limit of 230–250 characters for the template body (leaving 50–70 characters of buffer for variable values). Use Aimfox's character counter in the template editor with a long-form test value substituted for each variable to verify the maximum-length version stays under 300.
Problem 4: A/B test results showing no significant difference between variants
Symptom: after 75 sends per variant, acceptance rates are within 1–2 percentage points for all variants.
Cause 1: the variants test surface-level differences (word choice) rather than meaningful personalisation angle differences. Cause 2: sample size is too small for statistical significance at this acceptance rate level.
Fix: build more distinct variants (different personalisation tier, different opening hook, note vs. no-note) rather than testing minor phrasing differences. Increase sample size to 150+ sends per variant before drawing conclusions.
Problem 5: Personalisation quality is high but acceptance rate is still low
Symptom: AI-generated first lines reference specific profile content, message quality looks strong in review, but acceptance rate is below 20%.
Cause: personalisation quality is not the bottleneck; ICP targeting or message framing is.
Fix: acceptance rate is a product of profile completeness, note quality, and ICP relevance. If personalisation is already strong, focus diagnosis on ICP relevance: are these people who would plausibly want to connect with someone in your role? If the ICP filter is correct, review the reason for connecting given in the note — is it clear why this connection is mutually valuable?
Problem 6: Custom meso lines sound awkward or misidentify the event
Symptom: a custom [customLine] that references a company funding round gets applied to a contact at the same company who had already left before the event.
Cause: the contact list was not updated after the custom meso lines were written; job changes were not caught.
Fix: verify the employment status of contacts with custom meso lines before campaign launch. If a contact changed companies after the company event you planned to reference, either update the custom line or remove the contact from the campaign.
Problem 7: Follow-up messages feel disconnected from the connection note
Symptom: prospects occasionally reply to follow-up messages noting that the messages feel generic compared to the specific connection note they received.
Cause: the connection note used AI personalisation (specific to their profile) but follow-up message steps use generic templates without the same depth.
Fix: add [firstName] and [company] variables to all follow-up message steps as a minimum. For top prospect segments, write follow-up messages that reference the same angle as the connection note (if the note referenced a company event, message 1 should also reference that event's context).
Problem 8: Message sequence responses arriving but coming from different context than expected
Symptom: a prospect responds to message 2 without having received message 1 (Aimfox shows message 1 as delivered but no response registered; message 2 triggered a response).
Cause: message 1 may have been seen but not acted upon; message 2's different angle triggered the response. This is not a problem.
Understanding: multi-step sequences benefit from multiple angles precisely because different touches land differently for different prospects. A prospect who did not respond to the job-title angle in message 1 may respond to the company-outcome angle in message 2. Track replies by step to identify which sequence step performs best and weight future campaign structures toward it.
Community evidence
"The thing that changed our LinkedIn acceptance rate was separating personalization into tiers. For top accounts we spend 15 minutes each. For mid-tier we use Aimfox's AI lines. For volume prospecting we use macro variables. Treating them all the same way was the mistake. Different deal value needs different personalization depth."
— Verified G2 reviewer, enterprise BDR team lead, Aimfox reviews on G2
Per LinkedIn's own guidance on messaging, LinkedIn recommends personalized messages that provide genuine context for connection.
From a thread in r/sales on LinkedIn message personalization at scale (487 upvotes):
"Our acceptance rate went from 22% to 38% in 60 days. The change: we added a custom first line to every note that referenced something specific about the prospect's role or company. Not AI-generated — manually written for each prospect. It took 5 minutes extra per prospect and we ran a smaller total volume. The ROI was dramatically better."
Our actual stack
| Need | Tool | Notes |
|---|---|---|
| Enriched B2B contacts | Quarvio | Job title, company, industry fields map to template variables |
| LinkedIn outreach with AI personalisation | Aimfox | AI first lines + template variables |
| Cold email parallel channel | Instantly | Different angle, same prospects |
| Email infrastructure | Inframail | Microsoft 365 inboxes, auto DNS |
Frequently asked questions
What personalisation variables does Aimfox support?
Aimfox supports [firstName], [lastName], [company], [jobTitle], and [location] as standard template variables. You can also add custom variables by uploading a CSV with additional columns, which Aimfox maps to [customField] placeholders in your template.
How does Aimfox's AI personalisation generate first lines?
Aimfox reads each prospect's public LinkedIn profile (headline, About section, recent posts, experience) and passes it to an AI model that generates a unique opening sentence for each prospect. The generated line is prepended to your message template.
What LinkedIn profiles work best for AI personalisation?
Profiles with detailed About sections, recent post activity, and descriptive experience summaries produce the best AI-generated first lines. Sparse profiles (minimal About, no posts, single-line headline) produce generic or low-quality first lines. Filter your prospect list toward more complete profiles for better AI personalisation results.
How many characters should a LinkedIn connection note be?
LinkedIn allows up to 300 characters in a connection note. In practice, effective notes are often 150–230 characters: specific enough to be personal, short enough to read in 5 seconds. Write the note first, then trim aggressively.
Should I always include a connection note?
The evidence is mixed. Notes that are generic ("Hi, I'd like to add you to my network") sometimes underperform no-note requests. Notes that are specific and relevant outperform no-note. The decision rule: if you have a genuinely specific personalisation hook, include a note. If the best you can write is a generic template, consider testing no-note.
How do I add custom personalisation fields to Aimfox?
Export your Quarvio contact list, add a new column (e.g. "customLine") in your spreadsheet, populate values for each contact, save as CSV, and upload to Aimfox. In the template editor, reference the column header name as a variable: [customLine].
How many A/B test variants should I run per campaign?
Two to four variants is the practical maximum for a campaign of typical size (200–500 prospects). More variants require more prospects per variant to reach statistical significance. Run 2 variants for smaller campaigns; up to 4 for campaigns with 400+ total prospects.
What acceptance rate should I target for a well-personalised campaign?
A well-personalised campaign to a well-defined ICP typically achieves 25–40% connection acceptance rate. Campaigns using AI personalisation on profile-rich prospect lists report 28–35% average acceptance rates, per community benchmarks from G2 Aimfox reviews.
How often should I refresh personalisation templates?
Every 90 days for campaigns running continuously. Personalisation angles get stale as the market adapts and as your ICP hears similar approaches from others. A 90-day review cycle is the minimum; 60 days is better for competitive markets.
Can I use the same personalisation data for both LinkedIn and cold email?
Yes. The contact data (first name, company, job title) from Quarvio applies to both channels. The personalisation angle and message content should differ: LinkedIn notes reference LinkedIn-visible context (profile, posts); cold emails reference business outcomes and challenges. Using the same angle on both channels makes the outreach feel coordinated and scripted.
What is the difference between macro, meso, and micro personalisation?
Macro: uses standard data fields available for all prospects (job title, company name). Meso: references a specific recent event in the prospect's professional life (post, company news, shared context). Micro: AI-generated or manually written first line referencing a specific detail unique to that individual. Each tier requires more effort but produces higher engagement.
Does Aimfox let me preview how personalised messages will look before sending?
Yes. Aimfox's campaign preview shows sample rendered messages (with variables substituted) for 10–20 prospects in your list before the campaign is activated. Use this preview to check variable substitution accuracy, AI line quality, and character count.
Start with the right contact data
Personalisation is only as good as the underlying data. Quarvio provides enriched B2B contact lists with verified job title, company name, industry, and location fields — all of which map directly to Aimfox template variables. One-time purchase from $129 for 5,000 contacts, credits valid 12 months, unused credits returned.