
To turn CRM data into a paid media plan, export closed-won and closed-lost opportunities, open pipeline, deal size and sales cycle from Salesforce or HubSpot, cluster the wins into 3 to 5 segments, split budget by win rate and deal size, then sync each segment into LinkedIn matched audiences (300 matched members minimum) and Google Customer Match (100 records minimum).
Key takeaways
- Start from closed-won and closed-lost opportunity records, not personas: industry, employee count, region, deal size, win rate and sales cycle by segment.
- LinkedIn requires at least 300 rows per uploaded list and 300 matched members before a campaign serves, and recommends 10,000 or more emails on a contact list to reach that match floor.
- Google Customer Match files need a minimum of 100 user records, lists expire after 540 days of membership, and uploads can take up to 48 hours to process.
- HubSpot syncs audiences natively to Google Ads, LinkedIn Ads and Facebook Ads, with per-network size minimums as low as 20 users on Facebook and 1,000 on the Google Search Network.
- Write campaign identifiers back to the CRM through UTMs and hidden form fields, or your segment plan will have no pipeline proof behind it.
Most paid media plans start from a persona doc and last quarter's channel mix. Your CRM holds a better brief: which accounts bought, what they paid, and how long they took to close. Here is how to turn that into segments, a budget split and live audiences in LinkedIn Ads, Google Ads and Meta Ads Manager, including the size and match rules that decide whether a segment can be targeted at all.
What to pull from Salesforce or HubSpot before you plan spend
Pull records, not dashboards. You want one row per opportunity with account attributes attached, so you can compare wins to losses. Five exports cover almost every planning decision:
- Closed-won opportunities, last 18 to 24 months: account name, website domain, industry, employee count, region, amount, create date, close date, lead source.
- Closed-lost opportunities, same window: same fields plus loss reason and stage reached. Losses at stage 1 tell you about targeting; losses at stage 4 tell you about product and price.
- Open pipeline: accounts with an active opportunity and their stage. These are your bottom-of-funnel and sales-support audiences.
- Buying committee contacts on won deals: titles and seniority from Salesforce opportunity contact roles, or contacts associated with a HubSpot deal. Real job title targeting comes from here.
- Customers and churned accounts: your suppression and expansion lists.
Two hygiene rules matter most. Make the account website domain a required, cleaned field, because domain is the join key between the CRM, LinkedIn company lists and your reporting. And export work email on contacts, since match rates depend on the identifier you hand over.
How to turn closed-won patterns into segments and a budget split
Aim for 3 to 5 segments you can name, size and fund, not a 12-cell matrix nobody runs.
- Cluster the wins. Sort closed-won deals by industry, then employee band, then region. Keep every cluster with at least 5 wins.
- Score each cluster on three numbers: win rate, average deal size and median days to close. Expected value per opportunity is win rate times deal size. A segment closing 25% at $60,000 is worth $15,000 per opportunity; one closing 12% at $30,000 is worth $3,600. Fund the first one first.
- Check reachability. Count the matchable accounts and contacts per segment, then compare against the platform minimums below. A segment with 120 matchable accounts is a sales play, not a LinkedIn campaign.
- Split budget by expected value. A defensible starting split across three segments is 60/30/10, with the smallest share on the unproven cluster.
- Write the exclusions now: customers, late-stage opportunities, closed-lost-for-price accounts, competitors and your own employee domains.
Practical tip: keep one source list per segment in the CRM (a Salesforce report or a HubSpot active list) and derive every platform audience from it. The moment you maintain segment definitions separately in Campaign Manager and Google Ads, they drift.
How to push CRM lists into LinkedIn matched audiences
LinkedIn matched audiences accept two kinds of CRM export: a company list (names and domains) and a contact list (emails). Most failed uploads are size or header problems.
- Per LinkedIn's company targeting list requirements, an uploaded list needs at least 300 rows, must match a minimum of 300 members to be used in an active campaign, and caps at 20 MB or 300,000 companies. LinkedIn recommends 1,000 or more companies and suggests adding the LinkedIn Page URL plus fields like industry, city, state, country or zip to improve matching.
- For contacts, LinkedIn's contact targeting requirements set the same 300-row and 300-matched-member floor, and recommend uploading at least 10,000 personal or professional email addresses to help ensure the list matches at least 300 verified addresses on LinkedIn. Emails can be plain or SHA-256 hashed.
- Do not change the template headers. LinkedIn's matched audiences troubleshooting guide lists the supported company headers (companyname, companywebsite, companyemaildomain, linkedincompanypageurl, stocksymbol, industry, city, state, companycountry, zipcode) and contact headers (email, firstname, lastname, jobtitle, employeecompany, country).
- If a segment lands under 300 matched members, that guide notes you can select multiple lists in one campaign to clear the minimum. Location is a required targeting criterion and will cut the audience further.
- Check match quality with the Company Engagement Report, which LinkedIn documents as showing which companies from an uploaded list were and were not matched.
The practical read: expect only a fraction of a contact list to become targetable. Company lists built on clean domains hold up better than contact lists of personal Gmail addresses from gated content.
How to push the same segments into Google Customer Match
Google Customer Match turns a CRM list into audiences across Search, the Shopping tab, Gmail, YouTube and Display, per Google's Customer Match documentation. Four rules shape how you run it:
- Minimum size. Google's Customer Match troubleshooting guide states that all submitted files must have a minimum of 100 user records, and recommends audience list sizes of at least 100 users to prevent ads from not serving.
- Freshness. Lists have a maximum membership duration of 540 days, and a list must have at least 100 members added or updated within the last 540 days to stay eligible. Schedule a refresh; do not upload once.
- Formatting. Files must be CSV using only the approved headers (Email, Phone, First Name, Last Name, Country, Zip, Mobile Device ID). If you pre-hash, use hex SHA-256 on lowercased, trimmed values; Google Ads can also hash raw data locally at upload. Processing can take up to 48 hours.
- Auto-inclusion. Campaigns using Smart Bidding and optimized targeting automatically include all Customer Match lists in the account unless you opt out. If your closed-won list is quietly shaping a prospecting campaign's bidding, that is why. Google also now recommends Data Manager or the Data Manager API over the Google Ads API for new Customer Match integrations.
Mirror the same segments into Meta as customer list custom audiences, and keep segment names identical across platforms so reporting lines up later.
Which ad platforms integrate natively with HubSpot and Salesforce
HubSpot is the most hands-off option if your CRM is HubSpot. Its ads audiences documentation covers Facebook, Google and LinkedIn ad accounts, audiences built from website visitors, HubSpot contacts or existing audiences, and a sync that runs in both directions as contacts enter or leave a segment. HubSpot also warns that synced audience size will be significantly lower than the number of contacts you selected, because each network matches on cookies or contact information. It publishes the per-network minimums, which are the numbers to plan against:
| Network | Minimum per HubSpot's documentation |
|---|---|
| Google Search Network | At least 1,000 active visitors or users in the last 30 days |
| Google Display Network | At least 100 active visitors or users in the last 30 days |
| YouTube | At least 1,000 active visitors or users in the last 30 days |
| Gmail | At least 100 active visitors or users in the last 30 days in the Display Network |
| Facebook Ads | At least 20 users |
| LinkedIn Ads | At least 300 members |
Salesforce is different. There is no one-click audience push inside Sales Cloud, so segments reach ad platforms one of three ways: a manual report export and upload, activation through Salesforce Data Cloud, or a sync layer such as a reverse ETL tool. That is the main reason Salesforce-based teams end up with stale lists.
Which tools do which step
Tofu publishes this article and makes Tofu Ads Agent. Here is an honest map of where each category stops.
| Tool | Plans spend from deal data | Builds the audiences | Creative and campaign build | Best for |
|---|---|---|---|---|
| HubSpot ads | No | Yes, to Google, LinkedIn and Facebook | Basic ad creation and tracking | HubSpot teams wanting list sync and ad attribution |
| 6sense, Demandbase | Partly, with intent and account scoring | Yes, within their own ABM advertising | No | Enterprise ABM programs with budget for intent data |
| Metadata.io | Partly | Yes, across LinkedIn, Google and Meta | Experiment and campaign automation | Demand gen teams running high-volume paid tests |
| Reverse ETL and CDPs (Hightouch, Census, Segment, GrowthLoop) | No | Yes, warehouse or CRM segments to most ad platforms | No | Teams with a data warehouse and an analytics engineer |
| Tofu Ads Agent | Yes, from closed-won and closed-lost deals in Salesforce or HubSpot | Yes, from a CRM list or report, an existing LinkedIn audience, or a plain-English description | Yes, on-brand creative plus staged campaigns | Lean B2B teams needing plan, audiences, creative and build in one place |
Tofu Ads Agent reads closed-won and closed-lost deals, pipeline, sales velocity and deal size to produce the ICP and segments, plans top, mid and bottom of funnel plays, sizes audiences before any spend, and stages campaigns into your own ad account switched off until someone turns them on. Pricing is a flat $2,500 per month, not a percentage of spend. The honest limits: it is newer than Metadata.io, 6sense or Demandbase, it needs CRM and ad-account connections first, and it recommends rather than auto-spends.
How to write campaign data back to the CRM
A segment plan with no write-back is a guess with a spreadsheet. Three steps make pipeline attributable by segment:
- Standardize UTMs before launch. Encode segment, funnel stage and channel in utm_campaign and utm_content, and use the same naming in LinkedIn Campaign Manager, Google Ads and Meta Ads Manager.
- Capture them on the form and store them on the record. Hidden fields for first-touch and last-touch campaign on the contact, stamped onto the account and opportunity so revenue groups by segment.
- Turn on native tracking if you use HubSpot. Per HubSpot's ad tracking documentation, HubSpot attributes contacts to specific ads by appending tracking parameters to your ad URLs, and only attributes clicks that happen after auto-tracking is enabled. Mind the gaps: LinkedIn Message ads, Thought Leader Ads and Document ads cannot be tracked due to API limitations, though Lead Gen Form submissions still sync, and renaming an ad campaign does not update the utm_campaign value in the tracking template.
Mistakes that break CRM-to-ads workflows
- Confusing record count with audience size. Google explains that file counts and reported list size differ because of inactive users, ad personalization opt-outs and formatting problems. Plan around matched size.
- Launching segments that cannot clear the floor. Under 300 matched members, a LinkedIn campaign will not serve. Combine lists or switch that segment to firmographic targeting.
- Uploading once. A Customer Match list with no members added or updated in 540 days becomes ineligible, and a static export goes stale the week sales adds new accounts.
- Dirty domain data. Blank or misspelled website fields break company matching and show up as misses in the Company Engagement Report.
- No suppression. Customers, late-stage opportunities and internal domains eat budget if you never build the exclusion lists.
With the plan, segments and write-back in place, the bottleneck moves to execution: enough creative per segment to test, campaigns built per funnel stage, and weekly bid and budget tuning. That is the work lean B2B SaaS teams run out of time for, and what Tofu Ads Agent produces while a person still approves every launch.
Frequently asked questions
What match rate should I expect when uploading a CRM list to LinkedIn?
LinkedIn does not publish a match rate, but its guidance implies only a share of a list becomes targetable: it recommends uploading at least 10,000 personal or professional email addresses to help ensure the list matches at least 300 verified addresses on LinkedIn. Company lists built on clean website domains generally perform better than contact lists built on personal email addresses. Use the Company Engagement Report to see which companies from an uploaded list were and were not matched.
How many contacts or accounts do I need before I can run ABM ads?
On LinkedIn, an uploaded list needs at least 300 rows and must reach 300 matched members before a campaign serves, and you can select multiple lists in one campaign to clear that minimum. Google Customer Match files need a minimum of 100 user records, and Google recommends list sizes of at least 100 users so ads actually serve. Through HubSpot's audience sync the published minimums are 20 users for Facebook Ads, 300 members for LinkedIn Ads and 1,000 active users in the last 30 days for the Google Search Network.
Can I sync Salesforce segments to LinkedIn and Google without a CDP?
Yes, by exporting a Salesforce report to CSV and uploading it as a LinkedIn matched audience or a Google Customer Match list. The cost is maintenance: manual uploads go stale, and Google requires at least 100 members added or updated within 540 days for a list to stay eligible. A reverse ETL tool, Salesforce Data Cloud, or a platform that reads the CRM directly removes the manual refresh step.
How often should I refresh CRM-based ad audiences?
Monthly at minimum, weekly if sales is adding accounts quickly. Google states Customer Match lists have a maximum membership duration of 540 days and recommends refreshing regularly, including through continuous syncing with third-party CRMs. HubSpot-synced audiences update automatically as contacts enter or leave the underlying segment, which is the main operational advantage of the native integration.
Which ad networks does HubSpot connect to natively for audiences?
HubSpot's ads audiences documentation covers Facebook, Google and LinkedIn ad accounts, with audiences built from website visitors, HubSpot contacts or existing audiences and synced in both directions. One limit to watch: Facebook caps each ad account at 500 total audiences, so once you hit that cap you cannot create new Facebook audiences from HubSpot.
Should I use a LinkedIn company list or a contact list for a closed-won segment?
Start with a company list. It matches on company names, websites, email domains and LinkedIn Page URLs, which are cleaner fields than contact emails, and LinkedIn recommends 1,000 or more companies per list. Then layer job function, seniority or job title drawn from the buying committee on your won deals, which gets you account plus persona precision without needing 10,000 emails.
How do I prove paid pipeline by segment after launch?
Encode segment and funnel stage in utm_campaign and utm_content, capture first-touch and last-touch campaign in hidden form fields, and stamp those values on the contact, account and opportunity so revenue can be grouped by segment. If you use HubSpot, enable auto-tracking, which appends tracking parameters to ad URLs and attributes contacts to specific ads, keeping in mind it cannot track LinkedIn Message ads, Thought Leader Ads or Document ads.
Sources
- Requirements for company targeting lists in Campaign Manager · LinkedIn Help
- Requirements for contact targeting lists in Campaign Manager · LinkedIn Help
- Troubleshooting Tips for LinkedIn Matched Audiences · LinkedIn Help
- About Customer Match · Google Ads Help
- Fix Customer Match issues with list upload, small list size, or low volume · Google Ads Help
- Create ads audiences in HubSpot · HubSpot Knowledge Base
- Ad tracking in HubSpot · HubSpot Knowledge Base