Email Ads Overview


This guide explains how to set up an email campaign in Kevel, and how to generate tags for use in your email ad server.


Keep in mind that email serving only works for creatives that are images, so you can't serve Javascript, iFrames etc. These formats do not work well with email clients' rendering engines, and can be blocked by some email marketing providers.


  1. Create an advertiser, campaign, and flight for email campaign ads as you would for any other flight. Apply any flight targeting options (such as geo-targeting or keyword-targeting) as needed.

To serve ads hosted elsewhere in your email campaign, choose to "Load Image from URL" as your image source in your creative.

  1. Save the flight. This completes the settings on the campaign side.
  2. Next, generate Email ad code for your placements by navigating to the Inventory tab, clicking on the name of your site, and clicking the Ad Code link. Choose the Email tab.
  3. Choose the size for the placement, and any zones (optional). You'll see tags like this:

<a href="https://e-<networkId>"> <img border="0" src="https://e-<networkId>" /></a>

  • These tags are available to use in your email template. Run a test to make sure the ads are displaying correctly.


Refer to the "Prevent Caching" and "Prevent Proxying" sections below to make modifications to your ad code. These are required.

Preventing Caching

Browsers and mail clients will cache images for email ads if the same URL is viewed multiple times. To avoid caching, you must make the URL of the tags unique.


What is Caching?

Caching is when the mail client, such as Google, sees that the same image (based on URL) is going out to, say, 20K people. To speed up delivery, Google would host the image on their server instead of Kevel's.

Why is this an issue? Because cached images prevent accurate impression reporting. This effectively make it impossible to track and charge on impressions.

Because the last part of the URL generated by our ad code page consists of a randomly generated string, just change that part, and the ads will serve properly without being cached.

For example, if the code you generate looks like this:

<a href="https://e-<networkId>">
<img border="0" src="http://e-<networkId>" /></a>

A great way to ensure the URL is unique is to use a time or date:

<a href="https://e-<networkId>">
<img border="0" src="https://e-<networkId>" /></a>


This string has to be the same in both URLs. Otherwise, the link will not work.

Additionally, the code at the end of the URL should be unique per ad in a given newsletter. So if you have three ads in a newsletter, set the codes to be:

  • newsletter05212012ad1
  • newsletter05212012ad2
  • newsletter05212012ad3

Prevent Proxying

If you serve email ads to recipients who use Gmail, be advised that Google proxies calls to images. This means that Google uses their own IP address in place of the unique IP address of the recipient. Since Kevel can’t record an email ad impression without registering a user’s IP address, this breaks email ads in Gmail.

An alternate way to identify unique users is to pass in a custom value unique to each recipient. Use the key querystring:

<a href="https://e-<networkId>">
<img border="0" src="https://e-<networkId>" /></a>

The value of key must be unique for each user. key must also match in both the anchor and image tags.


If your Kevel account uses UserDB, you are required to use a user's userKey as the key value. This is the only way to sync UserDB data and email ad requests.

If you are not using UserDB, your email client should have a way of automating a unique code that you can append to the URLs as Key. For example, in MailChimp you can use the *|UNIQID|* merge tag to generate a unique string per user.


Each newsletter sent must have a unique campaign ID for this method to work!

Pass Keywords

Keywords can be used to target ads to specific placements, target ads to specific types of users in a list, or for similar custom targeting needs. You can also run reports for keyword performance in the Reports tab.

After you add keywords to your flight, pass the keywords into the email tags as a query on the end of the <img> tag src URL. Use commas to separate the keywords:

<a href="https://e-<networkId>">
<img border="0" src="http://e-<networkId>,truck" /></a>

Pass Analytics Data

If you need to track third-party analytics data in an email campaign, you can use querystrings to pass the data via the Kevel tags. This lets your page access the analytics data.

Generate email ad code for your issue, and then append the querystring after the URLs:

<a href="https://e-<networkId>">
<img border="0" src="https://e-<networkId>" /></a>


Tip: You can use your email provider's macros or merge tags to populate the querystring.

When a user clicks the ad, Kevel passes the querystring to the URL of the creative: