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
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.
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.
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:
[firstName], I work with [jobTitle]s at [company]-stage companies on [relevant topic]."[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.
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:
[company] just [raised a round / opened a new office / launched a product] — congratulations."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.
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.
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.
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.
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:
For campaigns targeting prospects at specific companies, company-level events provide meso-personalisation that applies to all prospects at the company:
[company] just closed your Series B — congratulations."[company], I imagine [related challenge] is front of mind."These lines can be written once per company segment and applied to all contacts at that company via a [companyLine] custom field.
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 locationEvery 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.
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.
In Aimfox Campaign Settings → Connection Note or Message Step, enable the AI personalisation toggle. When enabled, Aimfox:
The AI-generated first line is unique per prospect and references specific profile content. Your template provides the second and third sentences.
Aimfox's AI personalisation draws primarily from:
Profile elements it does not use:
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.
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:
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.
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:
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).
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.
| 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) |
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.
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:
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.
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.
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:
Rebuild templates every 90 days for campaigns that run continuously.
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:
This ensures the two touchpoints feel distinct rather than identical outreach from two channels.
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.
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.
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.
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.
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?
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.
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).
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.
"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."
| 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 |
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.