Chains & Priority

There are two ways that you can prioritize the campaigns in your zones: chains and priority.

If you want to adjust either chain or priority settings, edit the zone that needs to be changed. Then click the Edit Campaign Assignments link on the top right. Scroll down to where you see Adjust Assignments and it lists each campaign in the zone along with the option to change their chain and priority settings.


To give a real example of how priority works, let’s say you have four campaigns in your zone and two of them (B & C) will receive more impressions than the others:

  • Campaign A – Chain = 1, Priority = 1
  • Campaign B – Chain = 1, Priority = 3
  • Campaign C – Chain = 1, Priority = 5
  • Campaign D – Chain = 1, Priority = 1

First, you must recognize that these campaigns are all in the same chain, so their priorities are ranked against each other. Try to think of each chain as a separate rotation within the zone. With that in mind, it’s easy to see B will get 3 times as many impressions as A & D or C will get 5 times as many impressions as A & D. To figure out the percentages of total impressions they will receive, simply divide each priority by the sum of them all.

Sum = 1 + 3 + 5 + 1 = 10

  • Campaign A = 1/10 = 10%
  • Campaign B = 3/10 = 30%
  • Campaign C = 5/10 = 50%
  • Campaign D = 1/10 = 10%

Another thing you should be aware of is the ad server will reduce priority values if they share a common denominator, so if you had set the priority values like this instead:

  • Campaign A – Chain = 1, Priority = 10
  • Campaign B – Chain = 1, Priority = 30
  • Campaign C – Chain = 1, Priority = 50
  • Campaign D – Chain = 1, Priority = 10

It evaluates exactly the same but you can immediately see those priorities sum up to 100, so they are effectively already in percentage format. A neat trick which avoids you having to do any math!


Chains are generally used if you want some (usually higher paying) campaigns to be shown to visitors in a specific order. Let’s say that C pays the highest, B pays the next highest, and A and D both pay the same lower rate or they could even be non-paying in-house campaigns. You’d probably want to show C & B first in that case, so you would set the chains like this:

  • Campaign A – Chain = 1, Priority = 1
  • Campaign B – Chain = 2, Priority = 1
  • Campaign C – Chain = 3, Priority = 1
  • Campaign D – Chain = 1, Priority = 1

The ad server starts at the highest chain (greatest number) and works its way down to the lowest, so visitors will see C, B, and then A & D will rotate equally. Notice that the priority for each of the campaigns is set to 1. With only one campaign in a chain, there is no point to setting priority because they can’t be prioritized against anything else and would ultimately take 100% of that chains impressions.

You might of course be wondering how the ad server ever decides to loop back to the highest chain once it reaches the lowest chain?

What you have to watch out for is the ad server will not move down to the next lowest chain so long as any campaigns in higher chains can still be shown to a visitor. This generally means campaigns in higher chains need to have even distribution, frequency caps, or fairly specific targeting set on them to limit how many visitors can see them and how many times they can see them repeatedly. If you don’t have any limiters on your campaigns in higher chains, the ad server will essentially get stuck on them (until they expire or are disabled) and never display any campaigns in lower chains. However, you may in some cases want that behaviour, such as with in-house campaigns that you only want to display when you have no paid campaigns running.

CSS Usage

Separate Content From Design

It is generally best that you don’t embed CSS rules within the content of your ads unless those CSS rules are specific to a single ad. Doing so would make it very time consuming for you to make design changes later because you’d surely have dozens or hundreds of copies of your CSS rules by then. To avoid that extra work, you should instead favor placing common CSS rules for your ads into the master stylesheet for your web site. An alternative is to create a dedicated stylesheet only for CSS rules used by your ads, but that can be more work to link into every one of your web pages if you do not use a good content management or templating system.

Use Descendant Selectors

If you’re not already familiar with descendant selectors, you can read up on them here:

An Example With Text Ads

For this example, let’s assume that we’re going to be displaying 5 text ads in a 120×600 space (using the Display Multiple Ads option from the Code Wizard), so each of the text ads occupies a 120×120 box.

First, you will need to include the following CSS rules in your stylesheet (remember: you don’t want to embed these CSS rules within the ad content itself!):

div#textad {
  background-color: #FEFFE7;
  border: 1px solid #000000;
  font-family: Arial, Helvetica, sans-serif;
  font-size: 10px;
  height: 106px;
  line-height: 12px;
  margin: 0px;
  padding: 6px;
  width: 106px;

div#textad a {
  font-size: 12px;
  font-weight: bold;
  line-height: 14px;
  margin: 0px;
  padding: 0px;
  text-decoration: underline;

div#textad a.top_link {
  color: #00386B;

div#textad p {
  color: #000000;
  margin: 0px;
  padding: 0px;

div#textad a.bottom_link {
  color: #356C00;

/* Begin IE box model hack \*/
 * html div#textad {
   height: 120px;
   width: 120px;
/* End IE box model hack */

Next, you will need to load each of your text ads into the ad server using the following code as a template:

<DIV id="textad">
  <A href="" class="top_link">Google Mock #1</A>
    Search for anything
    you can imagine in
    over 8 billion web
    pages from that
    marvelous Internet
    thing we all love.
  <A href="" class="bottom_link"></A>

Finally, if you put everything together, you should see that your CSS rules are only applied to <P> and <A> tags that are descendants of an outer <DIV id=”textad”> tag. This allows the actual HTML markup for the text ad itself to be very compact. More importantly, it’s very easy for you to go back and change the style of your text ads with this approach since your CSS rules are all in one place. You’re not limited to a single set of CSS rules though. If you’re running the same text ads on multiple sites, you can by all means have a separate stylesheet for each site that use different color schemes to match the design of each site.

Make It Easy To Customize

When you provide text ads to publishers, they will more than likely want to customize colors and fonts to match the look and feel of their own content. One option is to allow the publisher to create their own stylesheet or incorporate the CSS rules for the text ads into their existing stylesheet. Another way is to provide them with your stylesheet and allow them to override the CSS rules that they want as is done in the following example:

<LINK rel="stylesheet" type="text/css" href="">

<STYLE type="text/css">
div#textad { background-color: #E7FFF7; }
div#textad a.top_link { color: #00376B; }
div#textad p { color: #000000; }
div#textad a.bottom_link { color: #00686C; }

... generated code from code wizard goes here ...

You can see that the code above loads your stylesheet and then overrides the color choices. The rest of your CSS rules will be applied as-is because they were not redefined.

HTML E-mail

E-mail Client Limitations

While the ad server can insert ads into HTML formatted e-mail messages, you need to be aware of several limitations shared by the vast majority of e-mail client software:

  • Cookies are often not supported or disabled by default for security.
  • JavaScript is often not supported or disabled by default for security.
  • Proxy servers may be used to load images on behalf of clients for security reasons.
  • <IFRAME> capability is often not supported or disabled by default for security.
  • Content fallback constructs such as <NOSCRIPT> or placing content inside of <IFRAME> tags are usually not recognized and ignored!

Given those limitations, it is not possible for the ad server to dynamically insert Flash or other types of HTML content into HTML formatted e-mail messages. This means that you are limited to displaying graphic banners in the common GIF, JPG or PNG formats. Fortunately, if you use the E-mail Banner Code Wizard to generate code for placement into HTML formatted e-mail messages, the ad server will intelligently skip over non-graphic banners that might be assigned to a zone. This prevents problems with broken images due to unsupported media types and also eliminates the need to set up and maintain special graphic banner only zones for HTML formatted e-mail messages.

E-mail Codes

Due to cross-application limitations, the ad server is not able to maintain user sessions between e-mail clients and web browsers. This makes it difficult for ad serving codes to function correctly in HTML e-mails. In order to circumvent this problem, our e-mail zone code includes two (date) and (email) placeholders that should be replaced with the current date (yyyy-MM-dd format is suggested) and each recipients e-mail address respectively. This helps to prevent caching and allows the ad server to maintain a user session between applications by matching the e-mail address in the image with the e-mail address in the link. Consult the documentation from your mailing list software to find the exact (date) and (email) macros that need to be used with their system.

IFRAME Breaker

The Problem

One of the problems with IFRAME tags is that they have a fixed width and height. This is a problem for expandable creatives since they need to be able to change their size. For direct publishers this is not much of a problem as you can simply avoid using IFRAME tags. However, agencies or ad networks may be forced to deal with publishers that use IFRAME tags to serve their ads.

IFRAME Breaker

Fortunately the IFRAME breaker offers a solution to this problem. It is simply a .html file that contains a JavaScript function that gets installed on the publishers site. This file is then loaded by the expandable creative and grants the creative same-domain access to resize the publisher-side IFRAME tag as needed.


Simply copying the file to is all that is required to install the IFRAME breaker.

Mixing Sizes

What do you do when you need to run multiple sizes of campaigns in the same banner zone? For example, you may want to run both 160×600 and 120×600 campaigns in the same zone. This is absolutely possible to accommodate by doing the following:

  1. Go to Settings > Sizes and edit the largest size out of the group of sizes you wish to make compatible.
  2. Scroll down to and expand the Compatible Sizes panel.
  3. Use the arrows to select all of the smaller sizes you want to make compatible and then save your changes.

Once you’ve done this, you will be able to assign campaigns of the smaller sizes to any zones which use the largest of the sizes.


If you are working with a pre-existing zone, it may be necessary to use the Code Wizard to regenerate code for the zone. This can be determined by checking to see if the current zone code contains any <IFRAME> tags. If that tag is present, you must regenerate the code for the zone in order for it to be able to support multiple sizes. Be careful not to check the IFRAME option though as that would not give you the desired results!

Naming Schemes

Defining a standard naming scheme for your campaigns, groups, media, and zones can really help to make them easier to identify and manage. Things such as alphabetical sorting, media size/type, deployment locations, and more need to be taken into consideration for inclusion into names. With those requirements in mind, we give some examples in the text that follows to serve as guidelines for designing your own naming schemes.


Example NameTypeDescription
Advertiser / ProductBannerThis name makes it easy to see the name of the advertiser who owns this campaign and what product or service it is advertising.
Advertiser / Product – May 2005BannerThis name makes it easy to see that this campaign will run in May of 2005.
Advertiser / Product – U.S. OnlyBannerThis name additionally indicates that this campaign will only be delivered to U.S. visitors.
Advertiser / Product (Views: 1/Day)BannerThis name additionally indicates that this campaign is frequency capped at a rate of one view per day per visitor.
Advertiser / Product / Full Page OverlayDynamicThis name clearly indicates that this campaign will display one or more full page overlay advertisements.
Advertiser / Product / Page PeelPage PeelThis name clearly indicates that this campaign will display a page peel advertisement.
Advertiser / Product / Text LinkTextThis name clearly indicates that this campaign will display one or more text links.
Advertiser / Product / VASTVASTThis name clearly indicates that this campaign will display a video advertisement.
Advertiser / Product / WallpaperWallpaperThis name clearly indicates that this campaign will display a wallpaper advertisement.
Advertiser / Product / PopupsWindowThis name clearly indicates that this campaign will display one or more popup windows.


Defining a naming scheme for groups is actually very simple. The best thing to do is name them after the domain name of the web site they represent, such as or for example.


Example NameTypeDescription
Advertiser / Product – Offer / 468×60BannerThis name makes it easy to see the name of the advertiser who owns this media, what product or service it is advertising, a description of the offer (i.e. “20% Off Sale”), and the size of the banner that it contains.
Advertiser / Product – Offer / 468×60 (GIF)BannerThis name additionally indicates the format of the actual media file. In this case it is a GIF file, but it could just as easily have been a JPG or SWF file.
Advertiser / Product – Visual Attribute / 468×60BannerIf you can’t come up with a good description of the offer, the next best thing to do is identify a distinguishing visual attribute of the ad. For example, if the ad contains a beach ball the visual cue could be “Beach Ball”. In some cases you may have multiple color variations of the same media, which if that were the case here the visual cue might have been “Blue Beach Ball”.
Advertiser / Product – Offer / Text LinkTextThis name clearly indicates that this media is a text link.
Advertiser / Product – Offer / PopupWindowThis name clearly indicates that this media is a popup window.


Example NameTypeDescription
Section / 468×60 – TopBannerThis name makes it easy to see the section of your web site where this zone will be run, the size of the banners that it contains, and the location where it physically placed on the page.
Site / Section / 468×60 – TopBannerThis name additionally indicates the name of the web site where this zone will be run.
Site / Section / Text Link – Right ColumnTextThis name clearly indicates that this zone contains text links.
Site / Section / PopupWindowThis name clearly indicates that this zone contains popup windows.

Renewing Campaigns

What do you do when a campaign expires and the advertiser wants to renew it? There are actually many ways to accomplish renewing a campaign. What we consider to be best practices follow, but you should choose to do whatever meets your needs the best:

  • Change the stop date of the campaign to a date in the future in accordance with the number of days the advertiser has renewed the campaign for.
  • Add the number of additional actions, clicks, or views that the advertiser has purchased to the existing limits of the campaign.
  • Reset the campaign and set new start/stop dates and view/click/action limits on it. Be careful to only reset the statistics totals for the campaign. If you choose to also reset the statistics data for the campaign, you will not be able to go back and generate reports on past data for the campaign!
  • Create a copy of the old campaign and start over from scratch with a new campaign. If you do this, it’s suggested that you recycle the old campaign to avoid confusing it with the new campaign. You will still be able to generate reports for the old campaign after recycling it. Remember that the new campaign must have a different name, so including the month/year in campaign names is a good idea when using this method.

When choosing to modify or reset the old campaign, do not forget that you need to manually enable it before it will go live again. This is due to the fact that the ad server sets campaigns to a disabled status when they expire. If you are extending a campaign before it actually expires, it will still be enabled and you won’t need to do this.

Targeting Combinations

Conflicting Targets

When targeting campaigns, you have to be very careful that you don’t cancel out your campaign by combining multiple types of targets that will never occur together. For example, let’s assume that you’ve created a campaign that is targeted at the Internet Explorer web browser and the Linux operating system. That campaign could never be displayed because the Internet Explorer web browser is not compatible with the Linux operating system and as a result the targeting criteria could never be satisfied by any visitor.

Geography Targets

In most cases you do not need to select targets for both continents and countries together in the same campaign. Always target the lowest level of geography that you can. If you want to target countries, don’t waste your time selecting any continents. Instead select only the countries that you want to target. The reverse is also true. If you want to target continents, don’t waste your time selecting any countries because the ad sever already knows which countries are within the continents you’ve selected!

There are times, however, when selecting the lowest level of geography to target is not a good idea. For example, assume that you want to target a city in the United Kingdom. By only entering the name of the city as a target, you run the risk of displaying that campaign to visitors from other countries if the city name is not unique to the United Kingdom. Unless you know that a state/province, city, or zip code is unique to a single country, it’s always a good idea to select the country and enter the state/province that you expect them to be located in.