LinkedIn Ad Personalization Is Live in Campaign Manager. Here Is What It Actually Does.
LinkedIn now lets you insert member profile data directly into your ad copy. Here is how the feature works, what to watch for, and the test worth running.
The average B2B buyer consumes 13 pieces of content before making a purchase decision. Fifty-four percent say they are overwhelmed by the amount available. The problem is not reach. It is relevance.
LinkedIn rolled out ad personalization in Campaign Manager to close that gap. It is in gradual testing right now, so not every account has access. If yours does, you will see a "Personalize text" button below the introductory text box when building ads.
The feature inserts member profile data directly into your ad copy using macros: %FIRSTNAME%, %JOBTITLE%, %COMPANYNAME%, and %INDUSTRY%. The member sees their own name, title, company, or industry in the ad as it renders in their feed. You write the template. LinkedIn fills it in at delivery.
Before you enable it on your next campaign, you need to understand how the fallback system works. That is where most B2B advertisers will waste money without realizing it.
What LinkedIn Ad Personalization Actually Does
The feature operates with two separate text fields. The first is your introductory text, which you already write for every ad. This becomes your fallback. It serves when personalization is unavailable for any reason.
The second field is your personalized text. This is where you write the macro-enabled version. LinkedIn shows this version when the member's profile has the data your macro calls for and when the conditions for delivery are met.
Available macros:
%FIRSTNAME% pulls from the member's profile name. Straightforward. Available on almost every member.
%JOBTITLE% pulls from the member's current position. If the member selected a title from LinkedIn's typeahead, the platform uses the standardized version. If they typed a custom string, LinkedIn uses inference models to classify it. That inference adds a variable you cannot fully control.
%COMPANYNAME% pulls from the member's current employer. Same dynamic, same inference logic applies for members who did not select from the typeahead.
%INDUSTRY% pulls from the industry field on the member's profile. Worth noting: LinkedIn's industry taxonomy is broad. "Financial Services" covers investment banks, credit unions, insurance carriers, and fintech. If your copy assumes too much about what industry means for the reader, this macro will misfire.
The feature is currently available for Classic ad sets only, with single image and video formats, and for these objectives: website visits, engagement, video views, website conversions, and lead generation. It must be set up directly in Campaign Manager. The LinkedIn API does not support it yet, so any workflow that builds or edits ads programmatically cannot use it.
One hard limit: the personalized text field does not support hyperlinks. URLs will not be clickable. Put your destination link in the standard URL field, not inline in the text.
Four Triggers That Revert Your Ad to Generic Copy
Four triggers revert your ad to the non-personalized introductory text: the ad is shared or reposted, it serves on the LinkedIn Audience Network, a macro field is empty or cannot be inferred, or the member has opted out of ad personalization in their settings.
You cannot see which trigger fired or what percentage of your impressions ran personalized vs. fallback. Campaign Manager does not break this out. You are testing a blend and reading blended results.
One trigger you can eliminate before launch: turn off LinkedIn Audience Network for the campaign. That removes the most controllable source of fallback impressions and reduces noise in the test.
Writing Copy That Actually Uses the Signal
The mistake most B2B advertisers will make: inserting %FIRSTNAME% at the start of the copy and calling it personalization. That is the minimum viable version of this feature and it produces minimal results.
LinkedIn's own guidance is directionally right here: combining macros is where the signal gets interesting. "%FIRSTNAME%, most %JOBTITLE%s at a company like %COMPANYNAME% are dealing with [specific pain]" works because it requires the reader to confirm three things about themselves in one sentence. That is not personalization as novelty. That is personalization as targeting confirmation. It tells the reader they are in the right place.
The macro that carries the most weight for B2B depends on the seniority of your target. LinkedIn's own testing suggests senior members respond more to company name than first name. The reasoning holds: a VP does not need to be addressed by name. Seeing their company called out signals that this is not a mass blast.
For director and below, job title is the stronger macro. That audience is more likely to identify with their function than their employer. "Most %JOBTITLE%s running this at your company's scale..." frames the copy as role-specific expertise, not broad targeting.
The introductory text fallback should not be an afterthought. It is the version that a meaningful share of your audience will see. Write it as a complete ad, not a stripped-down backup. The most common failure mode is writing compelling personalized copy and then writing a weak fallback that delivers to a large portion of impressions unnoticed.
Why LinkedIn Built This
LinkedIn benefits when advertisers produce more creative variants and engage more deeply with Campaign Manager's ad build tools. A feature that requires you to write two versions of every ad, test macro combinations, and tune fallback behavior creates engagement with the platform that correlates with higher spend.
That is not a reason to avoid the feature. The incentive structure and the practitioner value can both be real at the same time.
The honest constraint: LinkedIn does not give you impression-level visibility into how often the personalized version delivered versus the fallback. You cannot split your results by "personalized impression" vs. "fallback impression" in native reporting. You are testing a blend. If the fallback is delivering to 30-40% of impressions and the personalized version to the rest, your campaign performance reflects that mix. You cannot isolate the personalized version's contribution cleanly.
This is the same data gap that exists with any A/B test where the control bleeds into the variant's delivery. Run the test knowing the signal is directional, not surgical. Building a measurement layer outside of platform reporting is the right move here, and it applies across LinkedIn, Meta, and Google. For how to structure that on Meta, see Meta's Attribution Dashboard Shows What Meta Wants You to See. Here Is How to Measure B2B Pipeline Instead..
The Experiment Worth Running
The cleanest test of this feature right now:
Pick one campaign with a known baseline, ideally something you have run for at least four weeks and have reliable CTR and conversion rate data on.
Duplicate the campaign. Turn off Audience Network on the duplicate. Build two ads in the personalized version: one using %FIRSTNAME% + %JOBTITLE% and one using %COMPANYNAME% + %JOBTITLE%. Write fallback copy that is genuinely strong, not a placeholder.
Run the duplicate against the original for four weeks. Compare CTR and conversion rate on the duplicate versus the original. If the duplicate outperforms by 15% or more on CTR and holds conversion rate, the personalization is doing work. If CTR lifts but conversion rate drops, the macro combination is attracting clicks from people who self-select out. Wrong audience match or copy that overpromises.
The AI draft button is worth trying once. Click it, see what LinkedIn generates, treat it as a starting point rather than a final copy. The platform will pick macros for you automatically. Look at what it chooses. If the macro selection matches your hypothesis about which signal resonates with your audience, you have a sanity check. If it picks differently, understand why before overriding it.
Check Your Campaign Settings Before You Build
Two things to confirm before enabling ad personalization on any active campaign.
First, confirm the campaign is running on a Classic ad set, not a Performance+ ad set. The feature is not available for Performance+. If you are running Reserved Ads or unsure how Classic and Reserved formats differ, LinkedIn Reserved Ads: What B2B Advertisers Need to Know Before Booking covers the distinction.
Second, audit your Audience Network setting. If Audience Network is enabled, your fallback copy will run on external placements you cannot see or control. For a personalization test, that noise will make your results harder to read. Disable it for the campaign you are testing.
The feature is worth testing for any B2B advertiser running single image or video campaigns with audience segments that have strong LinkedIn profile data quality. That typically means mid-market and enterprise job functions where title and company are filled in accurately. Early-career or SMB-focused audiences have more profile gaps and will trigger the fallback more frequently.
Run the test on your strongest-performing existing campaign so you have a clean baseline to compare against. That is more useful than launching a new campaign with personalization enabled from day one, where you have no baseline and cannot isolate the variable.
This Is Version One
LinkedIn has said this is the beginning of a larger roadmap, not a finished feature. The current macro set is limited, the reporting visibility is thin, and the API gap means most programmatic workflows cannot touch it yet. That will change.
Test it now while CPMs are lower and competition for the placement is lighter. The B2B advertisers who understand the fallback behavior and build disciplined tests today will have a performance baseline when the feature matures and everyone else starts running it.
What's changing in B2B paid media. What it means for your pipeline.