
It’s been exactly 5 months since our marketing team at Userpilot launched our first ever ABM (Account Based Marketing) campaign, and the results are in: over $900,000 in pipeline, with $8 in pipeline per $ spend. While these early results are promising – the past 5 months were a real grind – we were thrown into the ‘deep end’ since none of us had done ABM before (our ACV wasn’t quite “there” for ABM before).
For the past 5 years, Userpilot growth has come 100% from inbound – with the majority from organic SEO traffic. At our peak in early 2024, we would publish up to 150 content pieces per month, driving 235,000 monthly visitors. But at some point – SEO content started to bring diminishing returns – for both internal and external reasons. Nobody who works in marketing needs explaining that 2024 was a horrible year in SEO – with relentless Google updates throwing many website’s content efforts against the wall, and extreme SERP volatility. After a year of ups and downs, our traffic finally settled around the same place where we started.
But we also noticed something more fundamental – as our product became more robust and our prices increased (in 2024, we almost doubled our ACV!) – our conversion rate from SEO started slowly decreasing. It seemed like while this acquisition channel worked for cheaper, transactional B2B sales – it started to limp when our ACV grew and the sales process became more enterprise-oriented – and longer. In July our CEO called me out for having built a ‘siloed marketing department’ – with every function paddling independently towards their own goals, without collaborating much, and definitely without creating the much-wanted ‘flywheel effect’ – where the team’s effort contributes to more than the sum of its parts. It was time for me to act – and ABM or die trying…
The first thing I learned about ABM is that it’s brutal. There are no playbooks. Most ABM resources are very high-level (‘strategic’), and there’s a painful lack of tactical resources on how to set the campaigns up.
Busting Silos by Hillary Carpio
And no wonder – no one wants to share exactly how they set up their campaigns and what were their “winning formulas” (ad formats etc.) – let alone how much they’ve spent on their campaigns and what ROAS they’ve achieved!
And yet – before even starting to work on your first ABM program – you need to (somehow) answer a lot of the questions:
Goals: What are you trying to achieve with your ABM campaigns? What are your goals and KPIs for each campaign? What are the leading metrics (e.g. ad CPMs, CTRs) you can use to measure the success of your campaigns before they’ve ended?
Level of personalization: Are you going to run one-to-many, one-to-few or one-to-one ABM campaigns?
Campaign setup: Account stages, account scoring: What stages will your ABM campaigns consist of? What are the benchmarks for reaching each stage? How will you score your accounts to operationalize reaching those benchmarks?
Duration: How long will each of your campaigns last?
Of course, it’s easier to answer these questions with the power of hindsight – it wasn’t like we had all of the answers before starting our first campaign. But we learned a lot through trial and error – and hopefully this post will allow you to avoid some of the growing pains and (costly) mistakes we initially made.
One thing we knew from the beginning was that we wanted to start from running a “one to many” ABM s – targeting many accounts (with a shared characteristic) with ads. This play can be used to identify accounts with intent from the SAM to be included in more personalized campaigns and outreach.
And then – based on their engagement level – “account score” – we would be passing them on to the next stage – targeting them with different (more solution- and product-oriented) ads, and at some point – with personalized BDR outreach.
The question was – at which point? How do we set the stages and account scores – and the goals, respectively?
We decided to align the ABM campaign stages with different stages of the “awareness funnel” – but still needed to figure out account scoring and “thresholds” for each stage. One resource that helped us decide on it was Kyle Poyar’s article “Your guide to GTM metrics 2.0” featuring “ABX benchmarks” .
We used it (tweaking it slightly, as below) to decide on:
Based on what we’ve read at e.g. Growth Unhinged, we decided to structure our ABM campaign stages as follows:
The accounts in each state are then shown different content (ads) – the further down the funnel, the more product-oriented the content:
If this sounds simple – it is.
But surprisingly it wasn’t easy to arrive at this *simple* account scoring model – at first we really overcomplicated things, adding a combination of factors such as page visits (qualitative/intent signals) and weights to specific ads/ page visits.
This proved to be too hard to execute – for once because, as we learned the hard way – website visitor deanonymization is too unreliable to use for consistent account scoring. The accounts we were targeting simply wouldn’t show up in any website visits, even though we knew they landed on the landing pages for the ABM ads we created specifically for them.
How do we know? We’ve actually set up a separate no-index domain for our ABM ad campaigns to be sure 100% of the traffic landing there is our ‘target accounts’. And sadly, from the ~300 visitors to a certain page path on that website – in 90 days, Breeze Intelligence (based on Clearbit’s API) identified only 1 company…ourselves!
And according to a study by Syft – Clearbit is actually the most accurate from many popular deanonymization services 😬
So we decided to simplify the account scoring – and use only quantitative ad engagement data from Linkedin in our CRM and use the qualitative aspect (which ad campaign groups – organized by intent – the accounts engaged in) for personalizing the BDR outreach.
First – we’re pushing the company-level engagement data from LinkedIn Campaign Manager to Hubspot.
As of January 2025 – you can’t do this natively.
So at first – we found a cool and cheap (we were paying $69 per month) tool that acts as a LinkedIn API data connector for Hubspot – Fibbler.
Then – when we realized Fibbler pushes only quantitative engagement data into the CRM, not qualitative ones (which campaigns the company engaged with – we use that information for personalising BDR outreach) – we decided to build our own API solution with the help of my partner – ZenABM.
That way, we can push both quantitative campaign engagements and qualitative ones into company properties on Hubspot:
Since the campaigns are already segmented by intent, 12 in our case, we can then create a workflow to assign the respective intent(s) in a custom multiple checkboxes company property on the company level based on the campaign names/intent coming in from ZenABM. Then when the BDRs do the prospecting themselves and create leads, the associated company’s intent(s), from the custom property, gets copied to the lead level as tags. This helps the BDRs reach out with very relevant, targeted messages – based on what the company members are already engaged with.
So – to sum up – using ZenABM/Fibbler we push the ad engagements and clicks on a weekly basis into custom Hubspot company properties – “LinkedIn Ad Engagements – 7 days” and “LinkedIn Ad Clicks – 7 days”. Then, we add the values of these properties in the “Cumulative LinkedIn Ad Engagements / Clicks” – from the start of the specific ABM campaign we are running.
Then – we created Active accounts Lists on Hubspot with list membership based on being in a specific ABM stage and the thresholds of “cumulative LinkedIn Ad Engagement/ Clicks”. We have a separate list for each stage of each campaign:
Using list membership and a workflow, we update the “ABM stage” company property:
How did we know how many accounts we should target, or what budget to set? After we decided to use Kyle’s ABX benchmarks, we then set a revenue goal for this initiative and ACV – and worked our way backwards (knowing our close rate and qualification rate).
So let’s assume you want to close $ 1 million in revenue from ABM in 2025. Your ACV is $50k. Your close rate is 25% and your qualification rate is 75%. How many accounts do you need to target?
1,000,000 in ARR / 50k in ACV = 20 deals
So we’re looking at: 20 / 0.25 / 0.75 / 0.18*/ 0.32/ 0.55 = 3367 accounts that you need to target to hit your revenue target.
How much budget will you need for that? That depends on your CPMs and Cost per Conversion from the channels you pick. Knowing 55% of your target accounts will become aware, and then – 32% of those will be interested, and 18% will be considering (will have booked a demo) – you will need approximately 107 accounts to convert into demos.
If your cost per conversion is $1100, you’re looking at a $117,700 LinkedIn ad budget. You can also try to calculate it (more accurately) based on your average CMPs, CTRs and landing page conversion rates.
You can also look at your average cost per click to Landing Page – and the conversion to demo rate. Dividing your target number of demos by the demo conversion rate will give you the number of visitors you need to drive to your LPs. Then multiplying this by your average cost per click will give your ABM budget. Let’s take a look at an example:
The average CTRs are ~ 0.35% – 0.45%. So for every 1000 impressions – you get only 3-4 clicks. How many clicks do you need to book a demo? Let’s say your great landing pages convert at 1% rate.
So to generate 107 demos with a 1% landing page conversion rate and a 0.4% CTR, you would need approximately 2,675,000 impressions.
Let’s say your CPM is $55. You’ll need to spend $55 x 2,675 = $147,125. LinkedIn doesn’t distribute impressions equally between accounts though – use tools with impressions cap like Factors.ai to cap impressions per account.
This is of course an approximation – you may want to set aside 15-20% extra for a ‘margin of error’.
As I mentioned before, for starters we used only LinkedIn Ads. We’ve also set up a separate no-follow entity (lookalike website that functions as a set of landing pages) for ABM ad destinations – and are planning to use it for running retargeting ads on Google Display networks. Specifically across a preferred set of 100 publications only, and then Gmail & YouTube via their Demand Gen campaign type.
We’ve toyed with using our lead lists directly on Google Display – but the match rates were too low (nobody’s using company emails on Google Accounts…) to run them.
For our first campaign, we “recycled” the account list we used for cold outbound in H1. That list was based on the “win-loss” analysis we did on our growth and enterprise deals, and used various targeting filters like company size, location etc. We only enrolled the companies that didn’t convert before.
We also targeted accounts using specific technologies (where relevant for a specific ABM campaign). The second campaign was based on this, and targeted a specific segment of accounts in our SAM that were using a specific technology.
For this we used Clay and Builtwith’s API to build the list.
Depending on the focus of each ABM campaign, we use different additional selection criteria for the companies we want to target. For example, for a campaign focusing on our new “Session Replay + Analytics” features, we would target lookalike companies to our enterprise customers, that also match the following:
Firmographic Fit:
Technographic Indicators (from BuiltWith or similar tools):
We also tap into our CRM data to uncover the right-sized accounts that we previously lost to competitors because of missing features:
Once we have a list of accounts we want to target, we add them to the right ABM campaign list on Hubspot and use a workflow to update the “ABM Campaign Name” Company property and the ABM stage (set to identified):
We prospect for relevant personas (e.g., PM, UI/UX, PMM, CXO) in those identified accounts using Apollo/clay. We then enrich them, even for custom properties like “Persona” and “Seniority” to add a deeper level of segmentation, and then create separate active lists on HubSpot for each persona based and their stage. Initially, all personas are added to the “identified” stage.
Contacts in these HubSpot active lists are sent to LinkedIn Campaign Manager using HubSpot Ad Audiences for dynamic ad targeting.
Note: After the match is completed on LinkedIn, you should have at least 300 LinkedIn members to start a campaign. Additionally, all these contacts must be mapped as marketing contacts; otherwise, they will not be sent over.
It usually takes around 48 hours for your audience to get ready on LinkedIn after being synced. Once available, you can use these lists with LinkedIn targeting options and add additional filters to further narrow down your audience for more precise targeting.
Now that the audience is ready, we can start running our ads.
All our accounts start in the “identified” stage. However, as soon as an account meets the ABM stage benchmarks (e.g., when an account receives more than 5 clicks, it moves to the “interested” stage – and the “awareness” ads are paused for them, and they are automatically enrolled in the “interested” stage ads).
The active lists are automatically updated based on account properties, and since these lists are used on LinkedIn, they are updated there as well. This ensures that accounts are removed from the “identified” list and added to the “interested” list, and targeted with ads that are more aligned to their current stage.
This segmentation allowed us to craft highly targeted messaging tailored to each persona’s pain points and their position in the ABM funnel.
The LinkedIn campaign groups were structured based on the persona and their ABM stage, while the campaigns within each group focused on specific messaging themes such as their job to be done, potential benefits, and relevant case studies.
For example, in the screenshot above, the first ad is targeted at accounts in the awareness stage for PM personas and introduces our product by highlighting various jobs to be done by the PM persona. The second ad, targeted at PMs in the consideration stage, showcases a case study of a similar persona and the value they derived from using our solution.
This segmented and personalized approach to ads significantly boosted engagement by ensuring the messaging resonated with the specific needs and challenges of each persona at their respective ABM stages.
Before we started working on the content for the campaigns (ads, landing pages etc.) – we had to decide on how we’re going to structure the content based on the “ABM Campaign stages” and how LinkedIn Ads work.
For our first Campaign – the “Product Drive 2024” campaign – we targeted a list of 1417 accounts that we didn’t manage to convert from cold outbound in H1 2024.
We then split those accounts into 8 separate personas – and created separate LinkedIn ad campaigns (with messaging personalized to each persona’s JTBDs!) for each of them.
Since we were uploading contact lists for each persona to LinkedIn for each campaign, and could fetch company engagements per campaign with ZenABM – we thought this would allow us to gauge intent per account based on campaign engagements and target the right personas with BDR outreach with surgical precision.
There was a big opportunity in this – but also a catch in terms of LinkedIn (API) limitations (that we didn’t know about & had to create a workaround for in subsequent campaigns.)
So we went back to the drawing board, and created a campaign structure based on Campaign groups based on shared intent rather than persona – with different personas in each campaign group (but we would still exclude some personas where the Campaign group intent wasn’t relevant!)
This solved the three limitations above:
How did we manage the process of creating all assets for all these different campaigns and personas without getting lost in it, and keeping our campaign names (which inform us about the intent!) in order?
Well, this is also something we had to grapple with at the beginning. Since our whole marketing team is a power user of Notion database to run different marketing campaigns & manage the work between different functions – we tapped into Notion databases for ABM asset creation management too.
The important aspect of using Notion databases is creating the campaign group, campaign and ad names – which we then use to tease out company intent from campaign engagements based on the keywords included in the campaign names. So it was super-important for us to keep those “clean”. We did that with a formula concatenating the relevant properties into the asset/campaign names:
Using this database, we would also assign the assets to specific “asset owners”, create asset brief templates, and assign the graphics creation task to our graphic designers automatically once the “asset owner” (another team member) ticked off the “asset brief done?” field.
We also use it to track which assets have been launched and which haven’t yet:
Now that I’ve talked about how we structured the campaigns, decided on goals and budgets, and how we manage the asset creation process – it’s time to get down to the bottom of which assets we’re actually using in our ABM campaigns.
As you know – we’ve settled on LinkedIn as our (for now only) channel – and we’re using different types of ads there, with the following mix from most used to least used:
In terms of inventory performance – the single image ads had the highest CTR and the lowest cost per click to landing page – followed by video ads and thought leader ads. The DM ads so far have been extremely expensive in terms of cost per conversion.
We use text ads to generate brand awareness – as they result in a high number of impressions at a negligible cost, but rarely translate into clicks. I also wonder how many people actually do notice these ads as they are quite *inconspicuous* on LinkedIn (to say the least…)
TLAs seemed great when it comes to the CTRs – but this metric is a bit misleading for LinkedIn Thought Leader Ads, as they count every click on the ad – including “read more”, author’s profiles , people tagged etc.
But they are very successful in driving attention to more “top of the funnel” assets like events and webinars – especially if the posts are coming from influencers popular with the ICP (and they are speakers at the promoted webinars/events). So in the upcoming campaigns, we are planning to use them in moderation in the “awareness” stage.
How many of the different types of ads are we using per campaign? This is what our inventory split per campaign looks like:
(Abbreviations: B=Benefit, F=Feature, J=JTBD, W=Webinar, A=Audit, E=Education, CS=Case Study, T=Testimonial, D=Demo)
Here are our top performing ads from our first ABM campaign:
As part of the campaigns, we’re also working with the BDRs on the email sequences they send to the relevant personas in the accounts that reached the “interested” stage.
As I described before, we calculated a “reasonable” budget by reverse-engineering our revenue target, assuming a conversion benchmark at each stage of the campaign. So far we’re spending ~ $20k per month.
After running 2 campaigns so far, we’re already getting feedback in terms of how the campaigns are performing compared to the benchmarks we set – and can use the weekly number of accounts that passed through the stage thresholds as “leading metrics” to evaluate how well our campaigns are going.
In terms of team, I’m lucky to have found an *amazing* ABM manager (Siddhesh) and have an equally amazing Marketing Ops manager (Bilal), 2 full-time, in house graphic designers (Teo and Ivana) and a very seasoned growth/performance manager (Tiana).
Pro TIP: Don’t even *think about* starting ABM without having a marketing ops manager. The amount of revops work to set this up is brutal.
It took us a *long* time to pick our tool stack for these campaigns – mostly because a) most ABM tools are extremely expensive and don’t offer trials (it’s an investment of $60k at least, the best deal we got was $30k and it was multi-year) b) based on Reddit reviews we’ve been reading, we weren’t even convinced *they would work*. In our niche, the intent is very peculiar and the search volume for “high intent” keywords is low. So tools that offer third party intent signals based on Bambora’s data weren’t good enough. “Custom intent” solutions are expensive. And based on the results we got from Breeze Intelligence (which is a website deanonymization solution offered together with Hubspot Marketing) – I wouldn’t be confident in intent based on reverse IP-lookup anyway.
So pretty quickly, we made up our mind that we want to run our ABM campaigns mostly on LinkedIn, and find a tool that would show us account engagements per campaign, and push the engagement signals to Hubspot. We almost found that tool in Dreamdata – the only catch was that they weren’t offering a bi-directional CRM sync, and so we would need to implement a data workhouse and a reverse-ETL to push the data to Hubspot. Which we definitely didn’t have the resources for…🫠
Since most ABM tools focus on display advertising on Private Advertising Networks (which makes) ultimately we decided to go with Hubspot + Apollo (which we stopped using after Hubspot launched their “sales workspace” – essentially a sales engagement solution – it makes it easier to keep everything in one tool!) + ZenABM.
So, to sum up, we are currently using:
The toolstack is costing us ~$2500 per month
That was another tricky part. Apart from Kyle Poyar’s ABX benchmarks, couldn’t find a lot on specific ABM stage conversion benchmarks. Comparing ad benchmarks to other companies is a bit like comparing apples and oranges…And since we chose Hubspot Marketing rather than a dedicated ABM tool – we had to build all the reporting dashboards ourselves.
In any case, these are the metrics we decided to monitor:
We monitor the metrics, as well as which accounts have progressed to which stage of the ABM campaign (every week and cumulatively) and how much pipeline each account has generated – on Hubpost dashboards – one for each campaign, with more granular reports – and one for all currently running campaigns.
We also monitor the number of leads sequenced by the BDRs every week:
Our first ABM Campaign – the “Product Drive Campaign” – centered around different buyer’s personas and the different pain points that Userpilot solves for them. We wanted to capture more leads by using our (very popular – we had over 6,200 signups in 2024!) online conference – Product Drive – as the “gateway asset” for the target accounts.
We published ~100 ads for 8 different personas, spending $46,791 in LinkedIn Ad spend.
To sum up, after our first ABM campaign ended, we can report on the following results:
Accounts Touched: 1,417
Total Cost: $46,791 + 5400 = ~ $52191 (LinkedIn Ad spend + tools)
Pipeline Generated: $440K ($655 in 3 months – we launched the 2nd campaign after 2 months of launching the first one).
Pipeline per Dollar: $8.43 ($12 on average from both campaigns)
Assets: ~100 ads for 8 personas (images, videos, TLAs, DMs, text, docs)
Single-Image Ads: 1,172 clicks, 0.35% CTR, $19 CPC
Video Ads: 313 clicks, 0.28% CTR, $24 CPC
TLAs: 4.42% CTR but $68 CPC (LinkedIn counts every click, including “see more”)
Team: 4.5 people full-time (1 ABM manager, 0.5 performance manager, 1 MOps manager, 1 head of marketing, 0.5 demand gen + 0.5 PMM, 1 graphic designer.)
Cold outbound alone took us 2x as long and cost 51% more to generate the same pipeline. Starting ABM wasn’t by any means easy (the ops were still brutal) but it was as hard in terms of setup as cold outbound – but faster to drive pipeline and less human-resource intense (we actually shared asset creation between almost all marketing team members except for the content team.)
I believe either way, we were still harvesting demand rather than generating it. And it’s just easier and faster to do it by showing people a smorgasbord of different messaging and seeing what resonates to gauge intent (more on how we do it later) – then asking them on the phone.
Hope this was helpful/inspiring – if you have any questions, don’t hesitate to reach out to me on LinkedIn!