Implementing Company Targeting with APIs | Adzerk

Implementing Company Targeting with APIs

Chris Shuptrine
cardimage

Unique first-party data and innovative targeting options are your path to more ad dollars and better user experiences. One such novel feature is company targeting - where you individualize content based on what company the user works at - such as company name, industry, and employee size.

This article will explore how to add company targeting to your ad server using APIs.

What exactly is company targeting?

Company targeting involves identifying what company a user works at and showing them ads/content tailored to that data.

For instance, if you have Salesforce as an advertiser, they may pay you more to target anybody who works at a company with more than 50 employees.

It’s not a common targeting feature - in fact, only a couple major ad platforms offer it - so it is far from expected by advertisers.

That said, such a targeting feature could:

  1. Increase ad revenue, as you can charge a premium for the extra targeting
  2. Make your ad product stand out to potential advertisers
  3. Provide better (aka more relevant) ad experiences for your users
  4. If you are using an ad server for internal promotions, allow you to put the right content in front of the right person at the right time

What are examples of company targeting?

LinkedIn will be the best example here. As the leading professional social network, they have tons of first-party data around where people work, what their job titles are, and so on.

Their native ads platform makes this data targetable. Targeting options in their self-serve dashboard include filters around company names, size of companies, industries, and growth rates, amongst other metrics.

linkedin company targeting ad
linkedin company targeting ad

Such information is valuable to B2B companies whose biggest signals are not demographics (like age or personal interests) but employer attributes (like "mid-sized law firms").

This unique targeting data allows LinkedIn to charge ad rates that are much higher than the industry average; according to Falcon.io, advertisers pay LinkedIn an average of $5.61 per click, while Facebook is at $0.51.

Facebook too offers a way to target specific employers (if a person adds their company to their bio), but they don't offer a way to target by industry or company size.

facebook employer targeting ad
facebook employer targeting ad

Fortunately, even if you don't collect first-party company data, you can still add company targeting to your ad platform using third-party data APIs.

How do I start with company targeting?

This type of targeting is possible if you’ve built your own ad server and are not reliant on third-party ad tags. This article will assume you’ve built your own ad server from scratch or are using a JSON API solution like Adzerk.

For a starting point, you will need to:

  1. Collect IP addresses of your users upon each app/page load
  2. Integrate with a company information API. We recommend Clearbit's Reveal API. Clearbit is the industry leader in company deanonymization, and we'll be using them in the steps below. Additional options include Crunchbase and Regulus
  3. Incorporate this company data into your ad decision engine for targeting
clearbit reveal api

Can you describe the implementation more thoroughly?

Definitely. Here’s a more thorough process for getting there:

Decide what targeting options you want to offer

Below is an example response from Clearbit's Reveal API, after sending them a user's IP address. On the backend, Clearbit is matching this IP address to their company data set, then returning matching info in JSON.

"company": {
    "name": "Segment",
    "tags": [
      "Software",
      "SAAS",
    ],
    "metrics": {
      "alexaGlobalRank": 34096,
      "employees": 180,
      "employeesRange": "51-250"
    }...

While the full response provides many attributes to target against, let's focus on this one:

"employeesRange": "51-250"

Here, Clearbit is telling us that this user (based on IP address matching) works at a company with 51-250 employees.

An MVP could thus incorporate just the nine pre-set response options for the employeesRange parameter, which include ranges like "1-10", "1K-5K", and "100K+".

Build company targeting options into your front-end ad product

How you approach this is up to you, but you could offer a targeting category called "Company Size Targeting" with a simple dropdown like:

  1. < 50 employees
  2. 50 - 250
  3. 250 - 1K
  4. 1K+

Advertisers (or your internal team) could then create campaigns with relevant ad copy that target just users who work at companies of each size.

company targeting example
company targeting example
Decide when to ping the Reveal API and how to store the data

You have two main options for when to ping the API.

When Pros Cons
At time of ad request Most up-to-date; adds company data to all calls Can slow down ad response times
After the user first logs in, opens an app, or visits the site. Data is then stored locally (or in a backend data management platform) and referenced at time of ad request The ad's load time is not contingent on the response time of the Reveal API This data would likely not be included in the very first ad request
  1. At Time of Ad Request

    This is most up-to-date and adds company data to all ad calls. However, it can slow down ad response times because it requires waiting for the Reveal API's response before sending it to the ad engine.
  2. First Interaction

    You ping the API after the user first logs in, opens an app, or visits the site. Data is then stored locally and referenced at time of ad request. Here the ad's load time is not contingent on the response time of the Reveal API. On the other hand, this data would likely not be included in the very first ad request.

In the ‘at time of ad request’ scenario, you would:

  1. Grab the user's IP address
  2. Ping the Reveal API with that IP
  3. Take data from the response, insert it into the ad request, and send it to your ad decision engine to be used in targeting

The obvious issue here is load time. In order for this to work, you’d need to delay the ad request until the Reveal API data has returned (and you’ve parsed it).

In the second scenario, you would ping the Reveal API when the user first interacts with you, like a page load, app open, or registration. In this case, you’d:

  1. Grab the IP address
  2. Ping the Reveal API with the IP
  3. Store the information somewhere, such as:

    (a) In local storage, such as Window.localStorage. The data doesn’t leave the browser, is persistent across sessions, and acts roughly like a database. This would be advised over using cookies (which you could employ but aren't great for this type of caching). Be careful, though, localStorage has a seven-day limit on the Safari browser.

    (b) In a Data Management Platform (DMP) where you tie company info to the user's row in the database. This would involve a persistent ID, such as a hashed username.
  4. Then, when it’s time to show an ad:

    (a) With the local storage method, check local storage first. If the company info is available, grab it and append it to the ad request; otherwise, make an ad request without it and spawn a thread that will refresh the company for the next time.

    (b) With a Data Management Platform (DMP), attach the persistent ID to the request so the ad engine can look up that user's DMP row. You can either build a DMP yourself or integrate with Adzerk's UserDB API.

While people don't change jobs often, they do, so you may want to implement a TTL value (time to live), so the information expires after a certain amount of time (say, six months).

By pinging the Reveal API asynchronously, you are minimizing any impact this targeting will have on ad load times.

Make this data actionable

Let’s assume you are able to append the company data to the ad request. What do you do with this data?

This is where we recommend your system have a feature we call Keyword Targeting - a way to create rules for targeting keywords attached to each ad request.

Using Adzerk's targeting tools as an example, if you pass Reveal's employeesRange response as a keyword in each ad request, you could set up campaigns that'll target only ad requests that contain that employee count, like:

company targeting example
company targeting example

Or, if the data is stored in a DMP, you could set up rules that cross-reference the user's ID in the ad request with their row in the DMP (and then target only matching instances).

That’s pretty cool!

Yup - and it’s really not that complicated. Your MVP could be as basic as above, but you could also incorporate more sophisticated company rules like below. You can see a full list of company attributes in the Reveal response here.

  1. Company industry tags (like "Medicine" or "Retail")
  2. Company business classifications ("B2B", "SaaS")
  3. Tech usage tags ("Uses Adobe", "Uses Zendesk")
  4. Job titles ("CEO", "Attorney")

What about using company targeting for internal promotions?

Company targeting could still be valuable even if you aren't selling ads to a third-party.

If you're a SaaS platform, for instance, who is using an ad server to promote internal content and drive upsells, then you could use company targeting to show different ads to different industries, which could increase your conversion rates.

Such hyper-targeting helps you put the right piece of content in front of the right person at the right time.

Is company targeting GDPR/CCPA compliant?

Please note: we are not a law firm - we recommend consulting a lawyer for this. Below is for informational purposes only.

Company data is not considered PII (as far as we've seen), so the biggest concern would be whether passing the IP address to Clearbit would be considered PII selling/sharing. This is a grey area, but a conservative route would be to include Clearbit as a vendor in your consent prompt if you have one.

What's the accuracy of company matching?

This will heavily depend on your product. Any company-identifying tool will have higher match rates for work IPs than personal ones, so a personal social networking app may find few API requests with matching responses.

In our experience, we've seen average match rates of around 25-30% - but it'll vary based on when and how your users interact with you.

That said, as more people work from home, these match rates are also improving.

How much does this cost?

Incorporating company targeting won't be cheap. The Reveal API has a minimum committment and scales based on number of requests. Depending on your volume you may be looking at $20K+/year for access to the API.

Of course, if advertisers find value in company targeting - and are willing to pay more for this feature - then it could pay for itself quickly.

Then there would be the cost of designing the feature. This is where integrating your ad product with Adzerk can expedite the process, as Adzerk provides turnkey access to a JSON ad serving API and Keyword Targeting logic.



Chris Shuptrine

Recommended Articles