My favorite topic is back. This time we’ll be solving a super-niche problem – uploading offline conversions to Microsoft Advertising (formerly knows as Bing Ads) in an automated fashion. Wait…what? You can upload conversion to Microsoft? Yes, you can!
Why Should You Care?
Let’s say you run a search lead gen campaign on Bing and you generate leads. Of course, it’s easy to count lead submissions as conversions with web pixels but let’s face it – most of the leads are just garbage. So optimizing your campaigns towards pure lead counts may not be the best idea. Instead, you should optimize the campaigns towards conversion value = towards your lead value (good leads get high value, bad leads get low value) and that’s something which not that many people do because you somehow need to capture the lead value in your CRM and deliver this information to Microsoft, ideally fully automatically. So in this article, I will show how to roughly do that.
And for the record, optimizing towards “lead value” means that your campaigns should be using “Target ROAS” bid strategy. As of now, there is still no strategy to “Maximize conversion value” in Microsoft Advertising (unlike in Google Ads).
Offline Conversions in Microsoft Advertising
Microsoft has recently made a few updates which made conversion uploads possible – similarly to what we’ve been able to do in Google Ads for years. Check this out:
You have two options how to run the uploads:
- Manual file uploads aka “Uploads” on the screen below – good for beginners
- Schedules – for lazy people like me who want to automate. In this article, we’ll be focusing on this option.
This is what you will see when you select Schedules (I already have one running):
So let’s click +Schedule and set up a new one:
Now things start to get interesting and this is where the easy part ends. You need to provide a publicly accessible file with your conversions which Microsoft can regularly download. Okay. So I guess now you have some questions:
- How to build this file?
- Where to actually host it?
- How to keep the file updated automatically = how to add new conversions into the file?
Let’s tackle those questions one by one.
Building File with Offline Conversions
Luckily, Microsoft did not try to reinvent the wheel and they just copied Google’s approach. Thanks for that! So let’s talk about the file and examine one of my previous screens:
We can see that Microsoft gives you file templates so let’s examine the columns which you need to upload new conversions. (We will not be talking about conversion updates in this article.) Here is one of my existing files:
- Microsoft Click ID
- Conversion name (=Conversion goal name)
- Conversion Time
- Conversion Value – optional. The idea here is that as the lead moves through different stages, it should be generating more and more value. So e.g., if a lead makes it all the way to the end your sales process, it will get e.g, value of $1000 as opposed to a lead which killed right after arrival (e. g. a $10 value).
- Conversion Currency – mandatory of conversion value is provided
Okay, so things get a bit more complicated again because a few action items arise for you here. Let’s talk about Microsoft Click ID (aka “MSCLKID”). It’s a similar URL parameter to GCLID from Google. Whenever someone clicks your ad in Bing, the MSCLKID will be appended into landing page’s URL. So once your leads submit a lead form, you need to start capturing the MSCLKID value = you need to start sending the value to your CRM, very likely into a new custom field. For this, you will need to talk to whoever built the integration between your website and CRM and also to someone who is managing your CRM so the person can create the new custom field.
Let’s move on to the Conversion Name column. This is where you say to which conversion goal the new conversion should be uploaded to. This is another action item for you – you will first need to create a new offline conversion goal in Microsoft Advertising’s web interface. Just go to Conversion goals and create a new offline one:
Once your new goal is created, the goal’s exact name needs to be added into your upload sheet (watch for typos!) for each new offline conversion you try to upload.
Where to Host to Offline Conversion File?
I guess you’ve noticed my file is a sheet within a Google Sheet spreadsheet. Yup, you can get away with Google Sheets! So what’s the trick? How to share the specific sheet from the spreadsheet with Microsoft? Watch this:
And then select the one sheet with your conversions data (the dropdown on the left) and publish it as CSV:
Once you get the link, use it when setting up your offline conversion upload Schedule in Microsoft Advertising:
Also make sure that the time zone is set correctly – this is how Microsoft will read conversion timestamps in the uploaded file and you certainly don’t want to have conversions happening BEFORE the time of the actual click :).
How to Add New Conversions into Google Sheet Automatically?
Now we enter the trickiest part. Unfortunately, there is no good single answer to this part because it all depends on what CRM you use and what automation solution you use (e.g. Make) . What you need to do here is to set up an automation between your CRM and the Google Sheet so whenever a new conversion happens in your CRM (e.g. the lead entered a “good status” with a value), the conversion will be automatically added as a new row into the Google Sheet with all the important info:
- MSCLKID
- Conversion name
- Timestamp
- Value
- Currency code
Many CRM support webhooks which means that you can be actively listening for various events within the CRM (e.g. status changes) and once the right event happens, you can push this information to automation platform such as Make which will then create the new row in the spreadsheet. This can be done e.g. for Pipedrive or Salesforce (and tens of other CRMs which Make supports).
I can at least show how such an automation (=scenario) can look in real life:
This is actually a little more advanced scenario which also handles offline conversion uploads to Google Ads after receiving webhook notifications from Zoho CRM.
Do you need help with setting up the automation?
HIRE ME
Recapping Everything Step by Step
I know I’ve talked about a lot of steps as if you tried to set this up from scratch without actually knowing all the prerequisites. So let’s now take a step back and list the steps in an ideal order:
- Figure out whether there is a way to extract your leads from your CRM automatically – talk to your CRM admin. Ask questions. Ask whether you can push leads/deals to a webhook or at least poll regularly new lead updates. If yes, move on. If no, you are out of luck but most of modern CRMs have open APIs so you should be able to extract the data you need in 95% cases.
- Create a new offline conversion goal in Microsoft Advertising.
- Start capturing MSCLKID whenever a new lead is submitted via your web form.
- Create a new Google Sheets file with offline conversions which Microsoft will be regularly downloading.
- Create an automation which will feed the lead conversion data from your CRM into the Google Sheet.
- Publish the Google Sheet file as CSV and get the public link.
- Set up an offline conversion upload schedule in Microsoft Advertising.
- Run the uploads for a while
- Change your campaign optimization to Target ROAS.
Few Thoughts on Uploaded Conversion Values
Let’s now address the elephant in the room – how tell what value your leads have? Do the values need to actually be real numbers?
The answer here might be a little complicated and this is how I would approach this assuming you don’t know the actual revenue of the lead until the very end of the funnel.
I would probably set up a new conversion goal for each lead status in your CRM and assign a flat value to each status and as your leads move through different statuses. This also means that each move of the lead into a different status would be +1 new row in the upload sheet. This means that one lead = one MSCLKID could appear in your upload file multiple times.
Example of values for different statuses:
- New lead – $10
- Qualifying – $20
- Qualified – $30
- Whatever status you have v1 – $40
- Whatever status you have v2 – $70
- Won – $200
The main idea here is that you need to tell the bidding algorithm how you value different stages comparatively – so let’s have 2 sample leads:
- Lead 1 – killed right after arrival when it had New status. So the total value would be $10 and the conversion file would have just 1 row for this lead (=for this MSCLKID).
- Lead 2 – made it to the Qualified status and then it was killed. So the total value would be 10 + 20 + 30 = $60. You’d have 3 rows for this lead in the upload file.
You can see that lead 2 would be 6x more valuable for the bidding algorithm than lead 1 – and that’s what matters. Once you do the uploads for a while, you will see what ROAS your are getting and once you switch the campaign optimization to Target ROAS, you’ll probably start with the current ROAS you’ve been getting till the switch. And then you can start slowly improving the ROAS targets for the bidding algorithms. Of course, no results are guaranteed here, especially if you get very low number of leads – like 5 per month, for example.
Conclusion
I realize the concept of offline conversion uploads is very difficult even for more advanced digital marketers and goes beyond their scope of work as they need to deal with CRMs and unrelated automations to PPC. But I do believe that bidding towards lead values (or proxies of the values) is crucial for minimizing volumes of crappy leads and therefore for delivering more value to clients.
Do you need help with setting up offline conversion upload processes?
HIRE ME