Você está na página 1de 81

24/7 Open AdStream - Ad Tagging

24/7 Media, Inc. A WPP Company 132 West 31st Street - 12th Floor, New York, NY 10001 www.247media.com, +1.215.654.8376

Legal Notice:
This document and the information contained herein are intended only for the confidential professional use of employees of 24/7 Media, Inc., its parent, subsidiaries, affiliates and their respective clients. Neither this document nor any of the information contained herein may be copied, distributed to any other party or used for any other purpose by employees of 24/7 Media, Inc. , its parent, subsidiaries, affiliates or their respective clients without the express permission of 24/7 Media, Inc. If you are not an intended recipient of this document, you are hereby notified that review, distribution and/or reproduction of this document is prohibited. 24/7 Open AdStream is a registered trademark of 24/7 Media, Inc. 24/7 Open AdStream materials 2013 24/7 Media, Inc.

Table of Contents Understanding Ad Tags and Positions Ad Delivery Types Understanding Ad Tags and Positions Ad Delivery Types Types of Taxonomy What is Taxonomy? When to Use Taxonomy Understanding Web Site Structure and Ad Tags Structure Example Worksheet Tag Type Comparison Position Naming Conventions (NX, JX, RX) Simple Position Multi-Position NX Multiple Position Tag Examples Browser Capability Virtual Ad Tags Working with MJX MJX Delivery Coding for MJX Delivery MJX Code Section Descriptions Drawbacks of Using JavaScript to Generate OAS_sitepage: MJX Components Descriptions Position Description and Setup Display Additional Browser Types and MJX Delivery Positions in Ad Calls and Setup Tags Sample of MJX Code Without Comments Working with JX 5 5 7 7 9 10 11 12 12 13 14 16 16 16 17 18 19 20 20 21 23 24 25 26 26 27 27 28 30

-1-

JX Delivery Coding for JX Delivery JX Code Section Descriptions JX Components Descriptions SX Tag Overview Requirements: Benefits: Drawbacks: Content Display Issues with IFrames Expected Behavior: Actual Behavior in Firefox and Safari (after several page refreshes): SX Code for Dynamically Generated Pages Optional Features: User Agent IP Address or Domain Name Unique Visitors User Profile Cookies Keywords SX Output Description Output Example: SX Output Notes Appendix - SX for Static Pages Sample SX Tag Section Descriptions: Tracking Keyword Targeted Banners Sample SX for Keyword Working with NX NX Delivery NX Tags

30 31 32 32 35 35 35 35 35 36 36 38 39 39 39 39 40 40 40 41 41 42 43 43 43 43 43 45 45 46

-2-

NX Components Descriptions Cache-Busting with Random Numbers Working with RX RX Delivery Coding for RX Delivery RX Setup Code RX Setup Code Section Descriptions RX Position Code RX Position Code Components Descriptions Known Problems in RX Coding Using a <NOSCRIPT> Section RX Sample Setup Code Without Comments Tagging for Analytics Limitation Analytics in the NX Tag Analytics in the JX Tag Analytics in the MJX Tag Specialized Analytics Tags Transactions Error Pages Client Codes (UserIDs): No Analytics Tags: Image Maps and HTML Creatives HTML Ad Substitutions Dynamic HTML AD SUBSTITUTIONS More Redirection Options Additional __QUERY__ Option .ADS vs .CGI Ad Exclusion How it Works

46 48 51 51 52 52 52 54 55 56 56 56 58 58 58 58 60 61 61 62 62 63 64 65 66 67 67 68 69 69

-3-

Implementation Tag Examples Position Names Passing Query Strings Cookies Analytics oas_analytics.js

69 70 74 76 77 80

-4-

Understanding Ad Tags and Positions


An Ad Tag is HTML code on a Web page that acts as a placeholder for inserting advertisements (Creatives) into the Web page. For a Single Position Creative, one Ad Tag is used to hold the place for one advertisement. For multiple Position creatives, there may or may not be one Tag, but the multiple Tag still triggers decision making for all Positions. Each ad Tag is coded into the HTML source code of the page. The spot on the Page where an ad will be inserted is called a Position. Positions have names that indicate the approximate location of the ad on the Page (example: Top, Bottom or Middle). 24/7 Open AdStream (24/7 Open AdStream) Ad Tags correspond to specific types of Ad Delivery.
l

About Using Position Names - 24/7 Open AdStream recognizes a finite number of different Position names on a single web Page: The current 24/7 Open AdStream has 128 usable Position names (See Position Names for table of Position names that you can map for your own business practice). If you are delivering multiple Campaigns to a Page, then each Position on that web Page must have a unique name so that 24/7 Open AdStream can differentiate among them. Case Sensitivity - Unless specified otherwise, it is best to assume that the code used in ad Tags is case sensitive. It is therefore safest to use consistent spelling as regards to the case of letters.

Important: Position abbreviations in tags are not allowed. Tags created with position abbreviations will be displayed as "blank", or generate errors. Note: Any deviation from the documented 24/7 Open AdStream tags may result in non-delivery, as unsupported ad tags have not been tested or validated in the system and may cause unforeseen issues.

Ad Delivery Types
24/7 Open AdStream supports several types of ad Tags. These different Tags are used in different modes of 24/7 Open AdStream delivery in order to take advantage of different capabilities. The most common types of delivery are NX, JX, MJX and RX. Each type has its own corresponding Tags or uses a collection of Tags. The following is a brief description of each: Delivery NX Description NX Delivery is the simplest and employs the simplest of Tags. 24/7 Open AdStream does not need to be on the same webserver as the content in order to make use of NX Delivery. This means that NX Tags may be placed on any web Page and 24/7 Open AdStream can deliver ads into it. The users Browser does not need to have JavaScript enabled. NX Tags do not deliver Rich Media. JX Delivery allows flexibility through JavaScript and a collection of different ad Tags: JX, NX and SX Tags. 24/7 Open AdStream does

JX

-5-

Delivery

Description not need to be on the same webserver as the content in order to make use of JX Delivery. This means that any web site may use your JX code on their Pages, and you can deliver advertising for them from your 24/7 Open AdStream server. Furthermore, JX is able to deliver remote Rich Media, but only to Browsers that have JavaScript enabled. The users Browser must have JavaScript enabled (except for the delivery of Rich Media).

MJX

MJX Delivery makes a call to the 24/7 Open AdStream server only once and with all the Positions. This Delivery allows flexibility through JavaScript and a collection of different ad Tags: JX, NX and SX Tags. 24/7 Open AdStream does not need to be on the same web server as the content in order to make use of MJX Delivery. This means that any web site may use your MJX code on their Pages, and you can deliver advertising for them from your 24/7 Open AdStream server. Furthermore, MJX is able to deliver remote Rich Media, but only to Browsers that have JavaScript enabled. The users Browser must have JavaScript enabled. RX Delivery allows flexibility due to its combined use of JavaScript and 24/7 Open AdStream ad Tags. JavaScript in the ad Tag code both tests the Visitor's Browser and enables the remote delivery of Rich Media. 24/7 Open AdStream does not need to be on the same web server as the content in order to make use of RX Delivery. This means that any Web site may use your RX code on one (or more) of their Pages, and you can deliver advertising for them from your 24/7 Open AdStream server. RX has the same limitation as JX when it comes to Browsers that do not have JavaScript enabled, but RX is superior in its cache-defeating application. The users Browser must have JavaScript enabled.

RX

-6-

Understanding Ad Tags and Positions


An Ad Tag is HTML code on a Web page that acts as a placeholder for inserting advertisements (Creatives) into the Web page. For a Single Position Creative, one Ad Tag is used to hold the place for one advertisement. For multiple Position creatives, there may or may not be one Tag, but the multiple Tag still triggers decision making for all Positions. Each ad Tag is coded into the HTML source code of the page. The spot on the Page where an ad will be inserted is called a Position. Positions have names that indicate the approximate location of the ad on the Page (example: Top, Bottom or Middle). 24/7 Open AdStream (24/7 Open AdStream) Ad Tags correspond to specific types of Ad Delivery.
l

About Using Position Names - 24/7 Open AdStream recognizes a finite number of different Position names on a single web Page: The current 24/7 Open AdStream has 128 usable Position names (See Position Names for table of Position names that you can map for your own business practice). If you are delivering multiple Campaigns to a Page, then each Position on that web Page must have a unique name so that 24/7 Open AdStream can differentiate among them. Case Sensitivity - Unless specified otherwise, it is best to assume that the code used in ad Tags is case sensitive. It is therefore safest to use consistent spelling as regards to the case of letters.

Important: Position abbreviations in tags are not allowed. Tags created with position abbreviations will be displayed as "blank", or generate errors. Note: Any deviation from the documented 24/7 Open AdStream tags may result in non-delivery, as unsupported ad tags have not been tested or validated in the system and may cause unforeseen issues.

Ad Delivery Types
24/7 Open AdStream supports several types of ad Tags. These different Tags are used in different modes of 24/7 Open AdStream delivery in order to take advantage of different capabilities. The most common types of delivery are NX, JX, MJX and RX. Each type has its own corresponding Tags or uses a collection of Tags. The following is a brief description of each: Delivery NX Description NX Delivery is the simplest and employs the simplest of Tags. 24/7 Open AdStream does not need to be on the same webserver as the content in order to make use of NX Delivery. This means that NX Tags may be placed on any web Page and 24/7 Open AdStream can deliver ads into it. The users Browser does not need to have JavaScript enabled. NX Tags do not deliver Rich Media. JX Delivery allows flexibility through JavaScript and a collection of different ad Tags: JX, NX and SX Tags. 24/7 Open AdStream does

JX

-7-

Delivery

Description not need to be on the same webserver as the content in order to make use of JX Delivery. This means that any web site may use your JX code on their Pages, and you can deliver advertising for them from your 24/7 Open AdStream server. Furthermore, JX is able to deliver remote Rich Media, but only to Browsers that have JavaScript enabled. The users Browser must have JavaScript enabled (except for the delivery of Rich Media).

MJX

MJX Delivery makes a call to the 24/7 Open AdStream server only once and with all the Positions. This Delivery allows flexibility through JavaScript and a collection of different ad Tags: JX, NX and SX Tags. 24/7 Open AdStream does not need to be on the same web server as the content in order to make use of MJX Delivery. This means that any web site may use your MJX code on their Pages, and you can deliver advertising for them from your 24/7 Open AdStream server. Furthermore, MJX is able to deliver remote Rich Media, but only to Browsers that have JavaScript enabled. The users Browser must have JavaScript enabled. RX Delivery allows flexibility due to its combined use of JavaScript and 24/7 Open AdStream ad Tags. JavaScript in the ad Tag code both tests the Visitor's Browser and enables the remote delivery of Rich Media. 24/7 Open AdStream does not need to be on the same web server as the content in order to make use of RX Delivery. This means that any Web site may use your RX code on one (or more) of their Pages, and you can deliver advertising for them from your 24/7 Open AdStream server. RX has the same limitation as JX when it comes to Browsers that do not have JavaScript enabled, but RX is superior in its cache-defeating application. The users Browser must have JavaScript enabled.

RX

-8-

Types of Taxonomy
There are two types of taxonomy: Ad Taxonomy and Analytics Taxonomy. Ad Taxonomy is also described as Auto Taxonomy, and requires no tagging changes to your site. The data for the name/value pairs is pulled from the Page definition. Example:
www.news.com/sports/football/nfl/Steelers/teamstats.html@Top

The Ad Taxonomy would be:


Ad_Site=www.news.com Ad_Level_One=sports Ad_Level_Two=football Ad_Level_Three=nfl Ad_Level_Four=Steelers Ad_Page=teamstats.html Ad_Position=Top

Analytics Taxonomy is arbitrary, meaning the customer defined name/value pairs. These name/value pairs are not validated. The pairs are assumed to be what the client wants, so long as the attribute (e.g., Author) is pre-configured. Namely, if the client passes:
Author=ErnestHem

The system will assume this is what was intended. Additionally, the attributes and values that get passed to the taxonomy data are case insensitive. Namely, if the Page data is:
www.news.com/sports/football/nfl/Steelers/teamstats.html@Top

-orwww.news.com/sports/football/nfl/steelers/teamstats.html@Top

Ad_Level_Four would be stored and displayed as Steelers, since it was learned first. Similarly for Analytics Taxonomy, if you pass:
Team=Steelers

-orTeam=steelers

It would be displayed and stored as Team=Steelers, since this name/value pair was learned first.

-9-

What is Taxonomy?
Regardless of the type of Taxonomy, the Analytics Module must be purchased as an add-on, in order to enable this feature. Taxonomy is a powerful feature of 24/7 Open AdStream that allows you to describe your Ad Tag and Content with name/value pairs that arent part of the Ad Delivery decision. Simply speaking, if an ad is targeted to a Page such as:
www.news.com/sports/football/nfl/Steelers/teamstats.html@Top

Taxonomy allows you to describe this with any number of arbitrary name/value pairs, such as:
Author=Ernest%20Hemingway Source=Daily%20News

When taxonomy is added to the 24/7 Open AdStream Tag, it is surrounded by XE& and &XE in the 24/7 Open AdStream Query string. The final 24/7 Open AdStream Tag with taxonomy is
www.news.com/sports/football/nfl/Steelers/teamstats.html@Top?XE& Author=Ernest%20Hemingway&Source=Daily%20News&XE

The number of name/value pairs is not limited. The attributes need to be pre-configured, but the values do not. The general limit to taxonomy is only placed on the clients ability to generate meaningful data. Benefits of taxonomy include being able to create segments based on Visitors interactions with the taxonomy, as well as targeting Ads to such segments.

- 10 -

When to Use Taxonomy


Taxonomy can be used for several purposes, but should be used with care. By introducing Analytics Taxonomy (new name/value pairs), or enabling Ad Taxonomy (autodetermination of name/value pairs from Page definition), Additional data points are created to which the log processing efforts must attend. Also, in considering intended goals, keep in mind whether it is intended to include the Analytics Taxonomy with every Impression, with one Ad Tag on your Page, or as a standalone Tag that is unassociated with the chosen Ad Tag Based on the above, here are some specific cases where it makes sense to use taxonomy:
l

Describing Ad Tags - Taxonomy allows you to describe your Ad Tags with more descriptive language. If your site is built using dynamic content via an application server, chances are you have the ability to describe the content very richly. Taxonomy allows you to describe the ad that was served by more than just page@position. It allows you to describe in the language that is used by your company. Segmentation - 24/7 Open AdStream allows you to build segments that profile your Visitors. One way that segments are built is based on taxonomy data, using qualifications such as a Visitor has to have visited a Page with taxonomy including Team=Steelers ten (10) times to become a member of the client-defined NFL Fan segment. This type of segment can be built only by using taxonomy. Describing Content - You can also use taxonomy to describe and report on the content itself, rather than in strictly describing the Ad Content. This is traditionally referred to as web Analytics. The Tag itself can be standalone and be descriptive only of the content. Additional Metrics - In an AdServing context, pageviews are difficult to track, since a given Page may have many Impressions. By using separate taxonomy and Analytics Tags for Pages with multiple Impressions, you can more accurately measure Pageviews and other metrics since it treats the entire content of an HTML document as one (1) Pageview.

- 11 -

Understanding Web Site Structure and Ad Tags


Your Web site URL structure relates to the URL in your Ad Tags. 24/7 Open AdStream typically delivers ads onto your web Pages based upon the URL structure of your Sites and Pages.
Note: Any deviation from the documented 24/7 Open AdStream tags may result in non-delivery, as unsupported ad tags have not been tested or validated in the system and may cause unforeseen issues.

Structure Example
A typical news site, such as http://www.news.com, might contain the following toplevel URL structure, which contains all of the 1000+ web Pages of the entire news.com web site:
www.news.com/sports www.news.com/world www.news.com/nation www.news.com/local www.news.com/business www.news.com/life www.news.com/classifieds

There is a distinction between a directory like the URLs above and a sub-directory (or "child") such as:
www.news.com/sports/football

and a Page (also known as a "child"), such as:


www.news.com/sports/football/nfl/Steelers/teamstats.html

Like the URLs above, the URLs in your NX and JX Ad Tags need to reflect the structure of your Web site. For example, the NX Tag at the top of http://www.news.com/sports will read:
< A HREF="http://www.news.com/RealMedia/ads/click_nx.ads/www.news.com/sports@Top"> < IMG SRC="http://www.news.com/RealMedia/ads/adstream_ nx.ads/www.news.com/sports@Top"></A>

The URL information contained in your Ad Tags should reflect how you package and sell ads on different parts of your Web site. If you sell entire directories of your web site, then your Ad Tags only need to contain the directory structure, such as:
www.news.com/sports

If you package and sell specific Pages on your web site, then the Ad Tags on those Pages should reflect the actual URL of the Page, such as:
www.news.com/sports/football/nfl/Steelers/teamstats.html

- 12 -

Note: The level of specificity in your Ad Tags (whether they include Pages or directories) will impact the way you are able to schedule Campaigns to specific Pages/directories. This also impacts the Page/directory breakdown in your reports.

Worksheet
As an excellent tool for planning your Web site structure, below is an Excel spreadsheet that 24/7 Media Technical Services uses during the initial implementation phase. Clients are requested to complete the spreadsheet before creating "Sites" and "Pages" under the Databases Top Line Menu Task Bar. This spreadsheet is available for download, and it is included in a zipped package with the Ad Tagging Guide. Contact your Account Manager if you have questions about accessing this file.

- 13 -

Tag Type Comparison


Each 24/7 Open AdStream installation simultaneously supports all delivery modes. The manner in which you deploy 24/7 Open AdStream on your WebServer determines which delivery modes and accompanying Ad Tags you can use. The most convenient method can be used to satisfy your delivery requirements. The JX, MJX and RX Tag types have the ability to write to the HTML Page that is being delivered, while the NX Tag type cannot write directly to the HTML Page being delivered. The ability to write directly to the HTML Page allows 24/7 Open AdStream to:
l

l l

Insert any type of HTML onto the Page, such as an HREF, IMG SRC, tables, forms, Java, Java Script, Enliven and content. Insert a random number into the HTML to defeat caches. Insert the actual Click-Through into the HTML Page to guarantee accurate ClickThrough results. Insert extra HTML (for example, text links, line breaks, borders, height and width Tags, and alt text).

Note: When using a Rich Media creative, the Alt Text field in the creative section cannot contain single quotes. Single quotes in this scenario, breaks the creative from displaying.

Feature Companion Ad Delivery

JX Yes w/ Multi Yes Yes Yes Yes

MJX Yes

RX Yes w/ Multi Yes Yes Yes Yes

NX Yes w/NX Multi-Ad Yes Yes No Yes, but hard coded in the Tag. No No Yes Yes with NX Multi-Ad Yes with NX Multi-Ad Yes

Deliver w/ Page Positions Ad Banner Positions (Ad Page) Deliver HTML Banners Extra HTML Code (Ad Page)

Yes Yes Yes Yes

Alt Text (Ad Page) ISMAP (Server-Side Image Map) Static HTML Code On Web Site Campaign Category Conflict

Yes Yes Yes Yes w/ Multi Yes w/ Multi Yes

Yes Yes Yes Yes

Yes Yes Yes Yes w/ Multi Yes w/ Multi Yes

Prevent Campaign Repeat

Yes

Deliver Banners To Remote Pages

Yes

- 14 -

Click-Through Reliability

Perfect

Perfect

Perfect

Very Good with Random Number; but Reliability Decreases Over Time All Images, Click URL and Frequency Yes with JavaScript

Shared Memory Usage

Frequency

Frequency

Frequency

Cache Busting

Built-In

Yes with JavaScript

Built-In (more effective than JX) Yes

Redirect For Creative

Yes

Yes

Yes (but incompatible with cache-busting) Yes

Banner Delivery To Browsers Without Javascript Analytics Reports

No

No

No

Yes w/Single Call

Very good

Yes w/Single Call

Yes w/Single Call

NX should be used with a random URL (a random number inserted into the HREF and IMG SRC) to ensure accurate Click-Through processing. This is particularly for users coming from proxy servers which do not accept cookies.

- 15 -

Position Naming Conventions (NX, JX, RX)


Important: Position abbreviations in tags are not allowed. Tags created with position abbreviations will be displayed as "blank", or generate errors.

Simple Position
The simplest Tags are those that indicate one Position per Tag. Example: A simple NX Tag for the URL http://www.siteaddress.com/news/local/index.html would look like:
<A HREF="http://www.oasaddress.com/RealMedia/ads/click_nx.ads/www.siteaddress.com/news/index.html@Top"> <IMG SRC="http://www.oasaddress.com/RealMedia/ads/adstream_nx.ads/www.siteaddress.com/news/index.html@Top"></A>

This Tag conforms to the PageURL@Position format. The second occurrence of www.address.com in each line is part of the PageURL@Position information that is passed to the Delivery Engine to request a banner. In this case, the Page is the index.html in the news/ directory of this particular domain.

Multi-Position
You can also use a PositionList format (also known as the "multi-Position format) for Ad Tags. The @Position for each Ad Call is replaced by the following syntax:
PositionList!Position

Using this syntax, each call to the Delivery Engine lists all the Positions on the Page, an exclamation mark, and then finally the current Position. This syntax does not only support multi-Positions. This syntax allows for coordinated Ad Delivery since it helps the Delivery Engine have a better picture of the Page so that it can pick the most appropriate ads (particularly if competitive Positions or companion delivery is desired). Below is how the Position information would appear for three Positions on the same Page:
Position1,Position2,Position3!Position1 Position1,Position2,Position3!Position2 Position1,Position2,Position3!Position3

24/7 Open AdStream makes Ad Delivery decisions according to the order of Positions in the PositionList. Therefore, the PositionList must be identical for each Tag on that specific Page. Let's look at an actual example where this syntax is used. The first box shows the NX Tag for delivering a banner to the Top Left of a Page. The second box shows the NX Tag for delivering to the Top Right of the same Page (This Tag would appear later in the Page HTML.).

- 16 -

NX Multiple Position Tag Examples NX Tag for Top Left Delivery:

NX Tag for Top Right Delivery:

The components in the code for the TopLeft Position are as follows: Component PositionList Description This is a comma-delimited list of all the Positions found on the Page. In the NX Tag examples, the list of Positions on the Target Page is: @TopLeft,TopRight! The actual Position for a particular ad. In the first example, that Position is: TopLeft.

Position

Query

This component only applies to the use of NX Tags. Adding ?x after the Position provides a cache busting query. This query will not work if the User clicks on the Browser Back arrow or Forward arrow.

- 17 -

Browser Capability
For more detailed information regarding Browser capability, refer to the following URLs:
Note: The following URLs are functional as of the last date accessed. Furthermore, 24/7 Media makes no claim as to the accuracy of these sites. Their addresses are provided as an additional reference for information purpose only.

AnyBrowser.com Your Source for Browser Compatibility Verification. (April 2007). http://www.anyBrowser.com/ AOL webmaster Info: Browser Compatibility. (April 2007). http://webmaster.info.aol.com/compatibility.html Wikipedia: web Browser Comparison (April 2007). http://en.wikipedia.org/wiki/Comparison_of_web_Browsers BestLinks: Comparison of web Browsers (April 2007). http://www.thebestlinks.com/Comparison_of_web_Browsers.html WESTCIV: web Standards Software and Learning (April 2007). http://www.westciv.com/style_master/academy/Browser_support/ UWYN: Browser Compatibility Chart (April 2007). http://www.uwyn.com/projects/relativelayers/documentation/a4821.html

- 18 -

Virtual Ad Tags
To structure Ad Delivery onto a Web Site differently, a virtual URL can be inserted into the Ad Tag to force 24/7 Open AdStream to infer different information about the Web Page than it would infer from the actual URL and the default settings. This may be necessary when the actual URL does not fit within the simple Site and Page structure used to package the Web Site for Ad Delivery. For instance, the URL may lack structure because it is output from a database or generated by a CGI. By inserting a virtual URL into the Ad Tag you can force any web Page to fit into a simple Ad Delivery structure for your Web site. A virtual URL may be inserted according to the following syntax:
<!--OAS SETUP=www.address.com/address@Top,Bottom-->

Virtual Ad Tags may also be inserted into the HREF and IMG SRC of NX Tags.

- 19 -

Working with MJX


Note: Any deviation from the documented 24/7 Open AdStream tags may result in non-delivery, as unsupported ad tags have not been tested or validated in the system and may cause unforeseen issues.

MJX Delivery
MJX is a hybrid Tag in that it supports remote delivery (like NX), as well as the delivery of HTML Creatives. MJX delivery relies on JavaScript to test the Visitor's Browser and determine what type and version is in use. This means that the Visitor must have JavaScript enabled in the Browser. Otherwise, the Browser will not display an ad. MJX delivery works as follows: 1. The Visitor's Browser requests a web Page from the Content Server. 2. The Content Server delivers the web Page and the Visitor's Browser renders the requested Page. 3. While rendering the delivered Page, the Visitor's Browser encounters MJX code. The MJX code includes a JavaScript that tests the Visitor's Browser. 4. According to the JavaScript decision, the Browser then requests the appropriate ad(s) to be delivered from the 24/7 Open AdStream server: a. If the Visitor's Browser does not have JavaScript enabled, then the Browser will not be able to display the ad. b. If the Visitor's Browser does have JavaScript enabled, and the JavaScript test reveals that it is an older Browser, then the Browser will make multiple calls for the multiple Positions requested, delivering a GIF or JPEG banner. c. If the Visitor's Browser does have JavaScript enabled, and the JavaScript test reveals that it is a newer Browser capable of HTML delivery, then the Browser will make one call for all multiple Positions request, delivering the HTML Creatives in multiple Positions from the remote server. This HTML can be in the form of complete HTML Creatives, or a set of ad Tags (HTML replacement) that will make the final remote call for the Creatives. 5. The appropriate Ads are delivered and the Browser renders them with the Page. If an HTML Creative is requested, the Browser will download it without opening a new Browser window. When the Visitor clicks on the delivered image, the HREF requests a Click-Through URL from 24/7 Open AdStream for the clicking Visitor. 24/7 Open AdStream remembers what ad was delivered and then redirects the Visitor to the appropriate Click-Through URL. Schematic Representation of MJX Delivery

- 20 -

Note: The MJX tag is loaded within the header of the page. Therefore, Open AdStream will count impressions for all positions indicated within the tag - at the time the tag is called. If the user abandons the page prior to all of the content loading, impressions that have not been displayed will still be counted when using the MJX tag.

Coding for MJX Delivery


MJX Delivery relies on a combination of NX, JX and SX Tags to perform remote delivery. Specific Browser types recognize and use only specific lines of the code. Below is a sample of MJX code with comments. Refer to MJX Code Section Descriptions and MJX Code Component Descriptions for explanations of the inserted comments (also refer to the Sample of MJX Code Without Comments).
<!------ OAS SETUP begin ------> <SCRIPT LANGUAGE=JavaScript> <!-//configuration <!------ (1) Initialize the URL for the web server ------> OAS_url = 'http://server/RealMedia/ads/'; <!------ (2) Initialize the site/page (uncomment your choice, and ------> <!------ (3) comment out the one you are not using ------>

- 21 -

OAS_sitepage = 'www.247media.com/index.html'; //OAS_sitepage = window.location.hostname + window.location.pathname; <!------ (4) Initialize the list of positions ------> OAS_listpos = 'Top,Bottom'; <!------ (5) Initialize the query ------> OAS_query = ''; <!------ (6) Initialize the query ------> OAS_target = '_top'; //end of configuration <!------ (7) Initialize the version of JavaScript to 10 ------> OAS_version = 10; <!------ (8) Initialize and calculate the random number (next two lines) -----> OAS_rn = new String (Math.random()); OAS_rns = OAS_rn.substring (2, 11); <!------ (9) Set the function: OAS_NORMAL ------> function OAS_NORMAL(pos) { document.write('<A HREF="' + OAS_url + 'click_nx.ads/' + OAS_sitepage + '/1' + OAS_rns + '@' + OAS_listpos + '!' + pos + '?' + OAS_query + '" TARGET=' + OAS_target + '>'); document.write('<IMG SRC="' + OAS_url + 'adstream_nx.ads/' + OAS_sitepage + '/1' + OAS_rns + '@' + OAS_listpos + '!' + pos + '?' + OAS_query + '" BORDER=0></A>'); } //--> </SCRIPT> <SCRIPT LANGUAGE=JavaScript1.1> <!-<!------ (10) Initialize the version of JavaScript to 11 ------> OAS_version = 11; <!------ (11) Set the version of JavaScript to 10 ------> <!------ for a Browser 'Mozilla/3' on webTV ------> if ((navigator.userAgent.indexOf('Mozilla/3') != -1) || (navigator.userAgent.indexOf('Mozilla/4.0 webTV') != -1)) OAS_version = 10; <!------ (12) Call the delivery with the MJX code with all positions -----> if (OAS_version >= 11) document.write('<SCR' + 'IPT LANGUAGE=JavaScript1.1 SRC="' + OAS_url + 'adstream_mjx.ads/' + OAS_sitepage + '/1' + OAS_rns + '@' + <!------ (13) This line is for the Browser Opera 4.01 ------> OAS_listpos + '?' + OAS_query + '"><\/SCRIPT>');//--> </SCRIPT> <SCRIPT LANGUAGE=JavaScript> <!-document.write(''); <!------ (14) Function OAS_AD to display the banner ------> function OAS_AD(pos) { if (OAS_version >= 11)

- 22 -

OAS_RICH(pos); else OAS_NORMAL(pos); } //--> </SCRIPT> <!------ OAS SETUP end ------> <!------ (15) This section: Display the banner for a position ------> <!------ OAS AD 'Top' ad placeholder begin ------> <SCRIPT LANGUAGE=JavaScript> <!-OAS_AD('Top'); //--> </SCRIPT> <!------ OAS AD 'Top' end ------> <!------ (15) This section: Display the banner for a position ------> <!------ OAS AD 'Bottom' ad placeholder begin ------> <SCRIPT LANGUAGE=JavaScript> <!-OAS_AD('Bottom'); //--> </SCRIPT> <!------ OAS AD 'Bottom' end ------>

MJX Code Section Descriptions Action (1) Initialize the URL for the web server (2) Initialize the site/page (3) Comment or uncomment your choice Default: Initialize with a fixed site/Page. Optional: Initialize with the name of the current Page (JavaScript function). Refer to the Drawbacks of Using JavaScript to Generate OAS_sitepage section. Additional Comments

(4) Initialize the list of positions (5) Initialize the query This field is used to pass query information to the delivery (keyword, ) OAS_query = 'keyword=music'; OAS_query = 'keyword=music&otherparam=value'; If wishes not passing any query to 24/7 Open AdStream: OAS_query= & if wishes to target keyword from query

- 23 -

Action

Additional Comments string in the referral URL. OAS_query= ;

(6) Initialize the target (7) Initialize the version of JavaScript to 10 (8) Initialize the random number

This is only for the NX Tags

-- This line is for the Netscape Browser Version 2 and lower, where the function 'random' is not supported. -- The Browser displays a warning for the function 'random' and after the banner is correctly displayed.

Calculate the random number (9) Function OAS_NORMAL This function is the "Coordinated NX" code. It does not support rich media banners. This line is used if the Browser supports the JavaScript 1.1 version This Browser does not support the Tag <SCRIPT SRC=>

(1- Initialize the version of Java0) Script to 11 (1- Set the version of JavaScript to 1) 10 for a Browser 'Mozilla/3' on webTV (1- Call the delivery with the MJX 2) code with all positions

This call is done via the Tag <SCRIPT SRC=> and the result is that this line is replaced by a function JavaScript OAS_RICH (position) with the code for each Position. For the asp Page, separate the "document.write('<SCRIPT" by "document.write ('<SCR'+'IPT". Without this line, the Browser Opera 4.01 displays the first banner at the end of the HTML Page. This function will test the version of JavaScript and call the function OAS_RICH or OAS_NORMAL.

(1- This line is for the Browser 3) Opera 4.01

(1- Function OAS_AD to display the 4) banner

(1- Display the banner for a position 5) Drawbacks of Using JavaScript to Generate OAS_sitepage: The JavaScript method, which is commented out by default, can be used to dynamically generate the OAS_sitepage variable. However, if the URL in the Browser's

- 24 -

location bar (as typed by the Viewer) does not match the Site, as it is defined in the 24/7 Open AdStream Database, then this method will fail as the wrong Site Name may show up in the URL. (e.g., consider a Site that can be referenced by both http://www.site.com and http://site.com.) One could get around this problem by defining an entry for every possible URL that could access the Site in the 24/7 Open AdStream Database. That would be time-consuming to setup and difficult to maintain, particularly when you consider that the 24/7 Open AdStream Database is case-sensitive. If you must use the JavaScript method, please consider this workaround: 1. Enter the Canonical Domain Name of the Site as the 24/7 Open AdStream Database entry. 2. Have your Site Administrator configure the Web Server so that when a viewer tries to access the Site via any valid URL, the Web Server will redirect him to the Canonical Domain Name. This redirection will occur before the JavaScript tries to generate the OAS_sitepage, which means that the JavaScript will be working with a correctly defined URL. MJX Components Descriptions Below is a description of the components used in MJX Coding. These components can be seen in the Sample MJX Code. Each component should be replaced in the code with the requested information, as it is specific to your implementation (also refer to the MJX Code Section Descriptions). MJX Component OAS_url Description Found in Section 1 of the code. It specifies the location of the 24/7 Open AdStream Delivery Engine. Replace the value server with the name of your webserver. If you are using the 24/7 Open AdStream Central product, refer to the CNAME Instructions document. Found in Section 2 of the code. It specifies the Page to which the Ad(s) will be delivered. Replace the URL (in this case, www.247media.com/index.html) with the specific name of the Site and the Page. Found in section 3 of the code. It specifies the list of all Positions on the Page. Replace this list (Top, Bottom) with all of the specific Positions in the Page. It should be noted that Impressions are counted for all the Positions listed in this variable, regardless of any Campaigns which are scheduled to those Positions. Also, having additional Posi-

OAS_sitepage

OAS_listpos

- 25 -

MJX Component

Description tions, which are not called on the Page, can result in discrepancy issues. Hence, it is recommended to only include the Positions which exist on the Page.

click_nx.ads

For non-JavaScript Browsers, the NX ClickThrough call (click_nx.ads) executes the 24/7 Open AdStream function that redirects the Visitor's click to the Click-Through URL. For non-JavaScript Browsers, this Image call (adstream_nx.ads) executes the 24/7 Open AdStream function that delivers a Banner Ad. For JavaScript Browsers, this call (adstream_ mjx.ads) to the Ad Server executes a 24/7 Open AdStream function that returns the appropriate HTML for Ad Delivery. Found in Section 15 of the code, and is repeated for each individual instance of an Ad location on the Page. In each case, replace the location value (example: Top) with the specific Position for the Ad.

adstream_nx.ads

adstream_mjx.ads

OAS_AD

Position Description and Setup


Important: Position abbreviations in tags are not allowed. Tags created with position abbreviations will be displayed as "blank", or generate errors.

The MJX Tag calls the 24/7 Open AdStream Delivery only one time with all Positions (include the adstream_mjx.ads string in the code with all Positions). Example:
http://server/RealMedia/ads/adstream_ mjx.ads/www.247media.com/index.html/1234@Top,Bottom

This call returns each Position in this example, Top and Bottom in a JavaScript function:
OAS_RICH(Position){ if(Position =='Top'){ code javascript to display the banner at the Position Top } if(Position == 'Bottom'){ code javascript to display the banner at the Position Bottom } }

Display For each Position, there is a call to the function OAS_AD.

- 26 -

Example:
OAS_AD('Top') OAS_AD('Bottom')

This function tests the version of JavaScript:


Version JavaScript >= 11 -- OAS_RICH(Position); Version JavaScript < 11 -- OAS_NORMAL(Position);

This function is a "Coordinated NX" (it does not support Rich Media). Browser Delivered By Image Ads HTML Rich Media Ads yes no no no yes yes no no no

Netscape 4.x and later Netscape 3.x Netscape 2.x Netscape 1.x and earlier MSIE 4.x and later MSIE 3.x MSIE 2.x MSIE 1.x and earlier Text-only Browsers

JX Tags via <SCRIPT SRC> NX Tags NX Tags NX Tags JX Tags via <SCRIPT SRC> JX Tags via <SCRIPT SRC> NX Tags NX Tags NX Tags

yes yes yes yes yes yes yes yes yes

Additional Browser Types and MJX Delivery Browser Delivered By Image Ads HTML Rich Media Ads yes no yes

Opera 4.01 web TV 2.0 or 2.2 Hot Java 3.0

JX Tags via <SCRIPT SRC> NX Tags JX Tags via <SCRIPT SRC>

yes yes yes

Positions in Ad Calls and Setup Tags The number of Positions in the actual MJX Ad Call should match the number of Positions in the Setup Tag. This is due to the fact that an MJX Tag logs the Ad Delivery for all Positions as soon as the Setup Call is completed. Failure to follow this guideline can lead to billing issues.

- 27 -

Sample of MJX Code Without Comments This is the same code as seen in the Sample MJX Code, but comments and extra line breaks have been removed.
<!------ OAS SETUP begin ------> <SCRIPT LANGUAGE=JavaScript> <!-//configuration OAS_url = 'http://server/RealMedia/ads/'; OAS_sitepage = 'www.247media.com/index.html'; //OAS_sitepage = window.location.hostname + window.location.pathname; OAS_listpos = 'Top,Bottom'; OAS_query = ''; OAS_target = '_top'; //end of configuration OAS_version = 10; OAS_rn = new String (Math.random()); OAS_rns = OAS_rn.substring (2, 11); function OAS_NORMAL(pos) { document.write('<A HREF="' + OAS_url + 'click_nx.ads/' + OAS_sitepage + '/1' + OAS_rns + '@' + OAS_listpos + '!' + pos + '?' + OAS_query + '" TARGET=' + OAS_target + '>'); document.write('<IMG SRC="' + OAS_url + 'adstream_nx.ads/' + OAS_sitepage + '/1' + OAS_rns + '@' + OAS_listpos + '!' + pos + '?' + OAS_query + '" BORDER=0></A>'); } //--> </SCRIPT> <SCRIPT LANGUAGE=JavaScript1.1> <!-OAS_version = 11; if ((navigator.userAgent.indexOf('Mozilla/3') != -1) || (navigator.userAgent.indexOf('Mozilla/4.0 webTV') != -1)) OAS_version = 10; if (OAS_version >= 11) document.write('<SCR' + 'IPT LANGUAGE=JavaScript1.1 SRC="' + OAS_url + 'adstream_mjx.ads/' + OAS_sitepage + '/1' + OAS_rns + '@' + OAS_listpos + '?' + OAS_query + '"><\/SCRIPT>');//--> </SCRIPT> <SCRIPT LANGUAGE=JavaScript> <!-document.write(''); function OAS_AD(pos) { if (OAS_version >= 11) OAS_RICH(pos); else OAS_NORMAL(pos); } //--> </SCRIPT> <!------ OAS SETUP end ------> <!------ OAS AD 'Top' begin ------> <SCRIPT LANGUAGE=JavaScript> <!--

- 28 -

OAS_AD('Top'); //--> </SCRIPT> <!------ OAS AD 'Top' end ------> <!------ OAS AD 'Bottom' begin ------> <SCRIPT LANGUAGE=JavaScript> <!-OAS_AD('Bottom'); //--> </SCRIPT> <!------ OAS AD 'Bottom' end ------>

- 29 -

Working with JX
Note: Any deviation from the documented 24/7 Open AdStream tags may result in non-delivery, as unsupported ad tags have not been tested or validated in the system and may cause unforeseen issues.

JX Delivery
JX is a hybrid Tag in that it supports remote delivery (like NX), as well as delivery of HTML Creatives. JX delivery relies on JavaScript to test the Visitor's Browser and determine what type and version is in use. This means that the Visitor must have JavaScript enabled in the Browser. Otherwise, the Browser will not display an Ad. JX delivery works as follows: 1. Visitor's Browser requests a Web Page from the Content Server. 2. The Content Server delivers the Web Page and the Visitor's Browser renders the requested Page. 3. While rendering the delivered Page, the Visitor's Browser encounters JX code. 4. The appropriate Ads are delivered and the Browser renders them with the Page. If an HTML Creative is requested, the Browser will download it without opening a new Browser window. When the Visitor clicks on the delivered image, the HREF requests a Click-Through URL from 24/7 Open AdStream for the clicking Visitor. 24/7 Open AdStream remembers what ad was delivered and then redirects the Visitor to the appropriate Click-Through URL. Schematic Representation of JX Delivery

- 30 -

Coding for JX Delivery


JX Delivery relies on a combination of NX and JX Tags in order to perform remote delivery. Specific Browser types recognize and use only specific lines of the code. Below is a sample of JX code. Refer to JX Code Section Descriptions and JX Component Descriptions for further explanations.
<!-- 1st Section Begins : Delivery via OAS JX Tag --> <script type="text/javascript"> <!-OAS_url = 'http://oascentral.site.com'; // Your OAS cname OAS_sitepage = 'www.site.com'; // Target site/page OAS_pos = 'Top'; // Target Position OAS_query = 'Keyword'; // Search Terms/Keywords var OAS_RN = new String (Math.random()); var OAS_RNS = OAS_RN.substring (2,11); document.write('<scr' + 'ipt type="text/javascript" src="' + OAS_url + '/RealMedia/ads/adstream_jx.ads/' + OAS_sitepage + '/1' + OAS_RNS + '@' + OAS_pos + '?' + OAS_query + '"></scr' + 'ipt>');

- 31 -

// --> </script> <!-- 1st Section Ends : Delivery via OAS JX Tag --> <!-- 2nd Section Begins : Delivery via OAS NX Tag for older and non-Javascript Browser --> <noscript> <a href="http://oascentral.site.com/RealMedia/ads/click_ nx.ads/www.site.com/@Top?Keyword"> <img src="http://oascentral.site.com/RealMedia/ads/adstream_ nx.ads/www.site.com/@Top?Keyword" border="0" /> </a> </noscript> <!-- 2nd Section Ends : Delivery via OAS NX Tag -->

JX Code Section Descriptions JX Code Section Section 1 Description In the first section, A portion of Javascript writes a <script> tag using document.writes (an adstream_ jx.ads call is used as the src value of the generated <script> tag). This segment can be executed by all Grade-A browsers. In the Second Section, an image tag wrapped in an anchor tag is used. (an adstream_nx.ads call is used as the src value in the <img> tag; a click_ nx.ads call is used as the href value in the <a> tag. This tag will only deliver simple image creatives uploaded as creative files. This segment will only execute if Javascript is disabled or not supported.

Section 2

JX Components Descriptions Here are descriptions of the various HTML components used in the Coding of JX Delivery section. JX Component 24/7 Open AdStream Delivery Engine Location Description This is the path (domain and directory) to where 24/7 Open AdStream is running. In our example above, it is http://www.oasaddress.com/RealMedia/ads. You must replace www.oasaddress.com with the actual domain where your copy of 24/7 Open AdStream is running. The JX call (adstream_jx.ads) instructs 24/7 Open

adstream_jx.ads

- 32 -

JX Component

Description AdStream to send the appropriate HTML in the form of JavaScript to be inserted into the Page.

pageURL Location

This is the automatic insertion of the actual PageURL for Ad Delivery. In the JX Coding example, This URL is represented as PAGE, and you must replace it with the Actual Page that should receive the Ad (example: www.siteaddress.com/Directory/page.html). Defines the Position of an ad on the Web page. Refer to Position Naming Conventions for more information. This JavaScript command inserts HTML code directly into the targeted web page. In this case, an IFRAME is inserted into the page, allowing the MSIE 3.x (or compatible) Browser to download the HTML creative. For non-JavaScript Browsers, the NX Click-Through call (click_nx.ads) executes the 24/7 Open AdStream function that redirects the Visitor's click to the Click-Through URL. For non-JavaScript Browsers, the NX image call (adstream_nx.ads) executes the 24/7 Open AdStream function that returns the appropriate ad image.

@Position

document.write

click_nx.ads

adstream_nx.ads

Important: Position abbreviations in tags are not allowed. Tags created with position abbreviations will be displayed as "blank", or generate errors.

JX Sample Setup Code Without Comments This is the same code as seen in the Sample JX Setup Code, but comments and extra line breaks have been removed.
<script type="text/javascript"> <!-OAS_url = 'http://oascentral.site.com'; OAS_sitepage = 'www.site.com'; OAS_pos = 'Top'; OAS_query = 'Keyword'; var OAS_RN = new String (Math.random()); var OAS_RNS = OAS_RN.substring (2,11); document.write('<scr' + 'ipt type="text/javascript" src="' + OAS_url + '/RealMedia/ads/adstream_jx.ads/' + OAS_sitepage + '/1' + OAS_RNS + '@' + OAS_pos + '?' + OAS_query + '"></scr' + 'ipt>'); // --> </script> <noscript>

- 33 -

<a href="http://oascentral.site.com/RealMedia/ads/click_ nx.ads/www.site.com/@Top?Keyword"> <img src="http://oascentral.site.com/RealMedia/ads/adstream_ nx.ads/www.site.com/@Top?Keyword" border="0" /> </a> </noscript>

- 34 -

SX Tag Overview
Note: Any deviation from the documented 24/7 Open AdStream tags may result in non-delivery, as unsupported ad tags have not been tested or validated in the system and may cause unforeseen issues.

SX delivery works as follows (refer to the figure): 1. Visitor's Web browser requests a Web page. Following are passed from Visitor to Content Web Server: User Agent, Cookies, and all RM Cookies (RMID, etc.). 2. The Web server makes a call to the OpenAdStream server to get the list of ads. Following are passed from Content Web Server to 24/7 Open AdStream: User Agent, Cookies, RM Cookies, Keyword Profile (optional), and _RM_IP (optional). 3. OpenAdStream returns the HTML code of the list of ads. Following are passed from 24/7 Open AdStream to the Content Webserver: All RM Cookies; of particular note are the RMID Cookie and Frequency Cookies (new in 24/7 Open AdStream 5.6 and up). 4. The Web Server returns the requested page with the ad code for each position. The visitor's Web browser renders the requested page,which now includes the appropriate ads. Following are passed from the Content Web Server to the Visitor's machine: All RM Cookies. 5. Visitor's browser is routed to the destination page directly through the 24/7 Open AdStream Ad Server.

Requirements:
l l

The web pages must be dynamically generated. The cache/proxy defeating for the ads depends on the page cache/proxy defeating for the page. In order for click-through to work properly, the 24/7 Open AdStream Ad Server must be outside of the Content Web Server's firewall.

Benefits:
l l

Fast for the user (the ads come with the page) Easy to implement

Drawbacks:
Content Display Issues with IFrames Affected Browsers: Firefox (all versions), Safari (all versions) When delivering creative content on a page into an iframe, duplicate creatives or incorrectly sized creatives may appear. The issue stems from the browser getting confused about where content should be pulled from; either the browser's cache - or from the server.

- 35 -

This is most often seen by a user who is constantly refreshing the page to get a screenshot, or by a publisher who is constantly refreshing the page to update content. This is not normally encountered by users on the site, unless the site encourages a lot of refreshing. (AJAX style reloads of the iframe can also cause this issue). This is a browser issue - not an Ad Server (24/7 Open AdStream) issue. Refer to the expected behavior and actual behavior descriptions below: Expected Behavior: 1. As the browser parses the page, it encounters a content request from a remote server. 2. The browser checks its cache to see if it has pulled this content before, and if the content has expired. a. If the content has been pulled before, and has not expired, the browser loads the content from its cache. b. If the content has not been pulled before, or the content has expired, the browser will pull the content from the remote server. 3. Each time the page is refreshed, this process should repeat. Actual Behavior in Firefox and Safari (after several page refreshes): 1. The browser encounters a content request from a remote server. 2. The browser checks its cache to see if it has pulled this content before, and if the content has expired. a. The browser will pull the content from its cache, assuming it has already served it before. This may result in duplicate content being served. b. The browser will pull content from its cache for the incorrect frame This may result in an incorrectly sized creative serving in a frame. 3. In either of the above cases, if you view the frame source - the source code will be correct. However, you will see an incorrect creative.

- 36 -

- 37 -

SX Code for Dynamically Generated Pages


Note: Any deviation from the documented 24/7 Open AdStream tags may result in non-delivery, as unsupported ad tags have not been tested or validated in the system and may cause unforeseen issues.

In the SX code for dynamically generated pages, there is a single call:


"http://OAS_SERVER/RealMedia/ads/adstream_sx.ads/www.site.com/PAGE?_RM_IP_= 1.2.3.4"

Reference the component description table below for details. Component 24/7 Open AdStream Delivery Engine Description This is the path (domain and directory) to your instance of 24/7 Open AdStream. In the example, the path is posted as: http://OAS_ SERVER/RealMedia/ads, where "OAS_SERVER" would be replaced with the domain of the actual machine that is running 24/7 Open AdStream. This code instructs 24/7 Open AdStream to send the appropriate HTML in the form of an IFRAME/ILAYER to be inserted into the page creating a new browser layer within the page requiring no JavaScript. This is the Site domain to which the Creative is to be delivered. This is the Page or directory to which the Creative is to be delivered. It is in the form of a Page@Position. Multiple positions are separated by commas: page@Top, Bottom,Left Optional feature. Used to capture the visitor's originating IP address. Content Web Server must capture the Visitor's IP address, and pass it to the Ad Server in the form of: ?_ RM_IP_=1.2.3.4

adstream_sx.ads

www.site.com

PAGE

?_RM_IP_=<IP Address>

- 38 -

Optional Features:
Open AdStream has the ability to target user and to generate report on:
l l l l

HTTP User Agent (User operating system and browser) IP address or Domain Name Unique visitors Mobile Devices

Open AdStream automatically recognizes the technical parameters when an ad request is made. But when the request is made via SX Delivery (the SX tag), Open AdStream is not called directly by the user's browser. The Content Web Server contacts Open AdStream. User Agent All user information must be obtained via an application that resides on the Content Webserver. This application is responsible for passing the User Agent information between the User's browser and the Ad Server. IP Address or Domain Name As shown on the example above, this information can be passed to Open AdStream through query value ?_RM_IP_= <IP Address>. For Example:
http://OAS_server/RealMedia/ads/adstream_sx.ads/SITE/page@Top?_RM_IP_ =1.2.3.4

Unique Visitors Unique visitor information is based on Unique Cookie management. Open AdStream uses a cookie called RMID to identify visitors. When a visitor arrives at the site and they do not have an RMID cookie, they will be given a new Cookie set in the HTTP reply. If a visitor already has the RMID cookie, the existing cookie is reused. In the case of SX delivery, the RMID cookie must be passed from the visitor to Open AdStream via the Content Web Server. It must also be passed from the Open AdStream reply back to the visitor. It is possible in Open AdStream to use any other cookie for identifying unique visitors.

- 39 -

User Profile
SX Delivery can be used to target user profiles. The profiles are given to Open Adstream via either cookies or keywords.

Cookies
In the case of cookies, the profile already exists on the visitor's browser. The application that structures the SX call must reproduce the cookie HTTP header.

Keywords
For keywords, the SX call must have the keyword at the end of the line (separated by a question mark). For example:
OAS_server/RealMedia/ads/adstream_sx.ads/site/page@Top,Bottom?age=33&sex=F

will allow Open AdStream to target users on the age or sex Keywords.

- 40 -

SX Output Description
Note: Any deviation from the documented 24/7 Open AdStream tags may result in non-delivery, as unsupported ad tags have not been tested or validated in the system and may cause unforeseen issues.

The SX call returns the HTML call of each "Ad Object". Each object is separated by an HTML comment that indicates the position of the next banner. (<!--OAS AD="Top" --> for example). The output returned by Open AdStream must be split into single "ad" HTML codes, and these codes can be placed in the dynamically generated page.

Output Example:
The SX call:
http://OAS_SERVER/RealMedia/ads/adstream_sx.ads/www.site.com/PAGE@Top,Bottom,Left

Returns: <!--OAS AD="Top"--> <A HREF="http://OAS_SERVER/RealMedia/ads/click_ lx.ads/wsite/page/569218995/Top/Campaign_BN2/oas 50productV11.gif/63333234653538653338343065366330" target="_ top"><IMG SRC="http://OAS_SERVER/RealMedia/ads/Creatives/Campaign_BN2/oas50productV11.gif/633332346535 38653338343065366330" ALT="" ></A> <!--OAS AD="Bottom"--> <A HREF="http://OAS_SERVER/RealMedia/ads/click_lx.ads/wsite/page/565881976/Bottom/Campaign_BN1/ gratuit.jpg/63333234653538653338343065366330" target="_top"><IMG SRC="http://OAS_SERVER/RealMedia/ads/Creatives/Campaign_BN1/gratuit.jpg/63333234653538653338 343065366330" ALT="" ></A> <!--OAS AD="Left"-->

- 41 -

<A HREF="http://OAS_SERVER/RealMedia/ads/click_ lx.ads/wsite/page/480731069/Left/Campaign_BN3/Lo gotrans.gif/63333234653538653338343065366330" target="_top"><IMG SRC="http://OAS_SERVER/RealMedia/ads/Creatives/Campaign_BN3/Logotrans.gif/633332346535386533 38343065366330" ALT="" ></A>

SX Output Notes
Note: In the case of images ad, the banner usually comes from the Open AdStream server. However, the banner can be placed to any other http server, including a Network caching system such as AKAMAI. Note: A direct connection between the user and the Open AdStream will be established when the user clicks on the banner.

- 42 -

Appendix - SX for Static Pages Sample SX Tag


The SX tag type for static pages is simply a non-JavaScript version of the JX tag type. It can deliver all types of Rich Media, and it will test for the visitors browser type. <IFRAME WIDTH=468 HEIGHT=60 MARGINWIDTH=0 MARGINHEIGHT=0 HSPACE=0 VSPACE=0 FRAMEBORDER=0 SCROLLING=no BORDERCOLOR="#000000" SRC="http://OAS_SERVER/RealMedia/ads/adstream_ sx.ads/www.site.com/PAGE/@Positio n"></iframe> Section Descriptions: Section 1 Description IFRAME is used with Microsoft Explorer browsers to call an image from Open AdStream Central and return the creative with the corresponding click through URL string.

Tracking Keyword Targeted Banners


With 24/7 Open AdStream, it is necessary to make some additional modifications to Page Tags in order to track Keyword targeted banners. Use the following sample and instructions for modifying the page tags for SX in order to properly schedule and track Keyword targeted banners. Sample SX for Keyword The following shows some sample SX code for Tracking Keyword Targeted Banners in Static Pages: <IFRAME WIDTH=468 HEIGHT=60 MARGINWIDTH=0 MARGINHEIGHT=0 HSPACE=0 VSPACE=0 FRAMEBORDER=0 SCROLLING=no BORDERCOLOR="#000000" SRC="http://24/7 Open AdStream_SERVER/RealMedia/ads/adstream_ sx.ads/www.site.com/PAGE/1--RandomNumber-@Position?--KEYWORD--"></iframe>
Important: Special Instructions: Publishers that want to replace the --KEYWORD-- variables in their page tags must insert a unique keyword string, using the appropriate cgi or content management system.

- 43 -

For instructions on setting up the Search Term elements in the Database, please refer to the Search Term Targeting topic.

- 44 -

Working with NX
Note: Any deviation from the documented 24/7 Open AdStream tags may result in non-delivery, as unsupported ad tags have not been tested or validated in the system and may cause unforeseen issues. Note: Avoid using NX Tags with the Count on Download feature.

NX Delivery
NX is typically used for remote delivery of graphic images, such as GIF and JPEG banners, with 24/7 Open AdStream. NX delivery works as follows: 1. The Visitor's Browser requests a Web Page. 2. The Content Server delivers the Web Page. 3. The Visitor's Browser renders the requested Page and determines that there are Ad Tags. The Browser then requests the Ads to be delivered from the 24/7 Open AdStream Server. 4. The appropriate Ads are delivered and the Browser renders them with the Page. When the Visitor clicks on the delivered image, the HREF requests a Click-Through URL from 24/7 Open AdStream for the clicking Visitor. 24/7 Open AdStream remembers what ad was delivered because it holds the ad's Click-Through information in shared memory, which allows 24/7 Open AdStream to redirect the Visitor to the appropriate Click-Through URL.

Schematic Representation of NX Insertion

- 45 -

NX Tags
NX Ad Tags are coded directly into the HTML source code of a web Page. These Ad Tags are a combination of two HTML Tags: an IMG SRC surrounded by an HREF. A sample NX Tag for the following URL:
<A HREF="http://www.oasaddress.com/RealMedia/ads/click_nx.ads/www.siteaddress.com/news/index.html/@Position"> <IMG SRC="http://www.oasaddress.com/RealMedia/ads/adstream_nx.ads/www.siteaddress.com/news/index.html/@Position"></A>

Please refer to the component description table below.


Note: The www.siteaddress.com in each of these lines is a URL used to locate the 24/7 Open AdStream Delivery Engine. The www.siteaddress.com is part of the PageURL@Position information that is passed to the Delivery Engine to request a banner. Important: Position abbreviations in tags are not allowed. Tags created with position abbreviations will be displayed as "blank", or generate errors.

NX Components Descriptions Component 24/7 Open AdStream Delivery Engine Location Description This is the path (Domain And Directory) to where 24/7 Open AdStream is running. In our example above, it is http://www-

- 46 -

Component

Description .oasaddress.com/RealMedia/ads. When Tagging your Site Pages, you must replace www.oasaddress.com with the Actual Domain where your copy of 24/7 Open AdStream is running.

click_nx.ads

The Click-Through call (click_nx.ads) executes the 24/7 Open AdStream function that redirects the Visitor's click to the Click-Through URL. The Image call (adstream_nx.ads) executes the 24/7 Open AdStream function that returns the appropriate Ad Image. This is the Page for delivery. It can be the actual Web Page URL (where it exists), or a virtual URL. In our example above, the pageURL is www.siteaddress.com/news/index.html. This Directory is passed to 24/7 Open AdStream so that the software knows the Directory (Sub-Directory, Page, etc.) from where the ad call originated. 24/7 Open AdStream sends back one of the Ads scheduled to that Page. The URL Directory in the Ad Tag can be as broad as a Domain Name or Directory, or it can be as specific as you need to make it. Basically, the URL Directory in the Ad Tag can be carried right down to the Page-specific level (/local/index.html), depending on the granularity with which you package, sell and track your site.
Note: You only need to make the Ad Tag Page specific if you plan to sell this Page by itself (and not part of the directory). When Publishers find that they don't need to sell specific Pages, they don't Tag them uniquely down to the Page-specific level.

adstream_nx.ads

pageURL Location

@Position

Defines the Position of an Ad on the Web Page. Refer to Position Naming Conventions for more information.

- 47 -

Cache-Busting with Random Numbers Inserting a random number into the NX Ad Tag allows for cache-busting and improved Click-Through reliability. The random number must be inserted after the PageURL but before the @Position. When an NX call includes a random number inserted in this manner, the 24/7 Open AdStream Delivery Engine ignores the random number, except to identify the image and the corresponding Click-Through.
l l l

The same random number must be inserted in both the HREF and IMG SRC lines. The random number must not start with 0 (zero). The random number must be a positive numeric value and must be less than 2, 147,483,648. The Visitor's Browser must generate the random number in order for it to be efficient. The random number can be replaced by a redirect call:
l

_RM_REDIR_=URL where URL is a variable that must be replaced with an actual address.

l l

You must use the same random number for each Ad that is on the same Page. Refer to [OAS Path]/Samples/nx_js.html for examples.
l

Where [OAS Path] is a variable that must be replaced with the domain and path to where your 24/7 Open AdStream installation is running.

Example:
<HTML> <TITLE> Open AdStream NX Sample Page with JavaScript </TITLE> <!-The variables "window.location.host + window.location.pathname" in the scripts below, is the full url of the current page. It can be replaced by any hard-coded url of your choice. --> <BODY BGCOLOR="#FFFFFF" LINK="#B2343D" VLINK="#B2343D"> <CENTER> <A HREF="http://www.247media.com"> <IMG SRC="oaslogo.gif" ALT="Open AdStream" BORDER=0></A> <BR> <H1>NX Sample Page with JavaScript<BR> <FONT SIZE=-1>(NSAPI: hard-coded HREF & IMG SRC)</FONT></H1> <H3>Campaigns scheduled to: www.247media.com/Samples/nx_js.html</H3> </CENTER> <SCRIPT LANGUAGE="JavaScript"> <!-var page = "www.247media.com/Samples/nx_js.html"; // var page = window.location.hostname + window.location.pathname;

- 48 -

var oasurl = "/RealMedia/ads/"; var imageurl = oasurl + "adstream_nx.cgi/" + page + "/1"; var clickurl = oasurl + "click_nx.cgi/" + page + "/1"; function oas_ad(pos) { var rand = (new String(Math.random())).substring(2,11); document.write ('<A HREF="' + clickurl + rand + '@' + pos + '">'); document.write ('<IMG SRC="' + imageurl + rand + '@' + pos + '" border=0></A >'); } // --> </SCRIPT> <CENTER> <TABLE WIDTH=100% BORDER=1> <TR><TD> TopLeft<BR> <!-- Here is the Open AdStream code for the TopLeft position --> <SCRIPT LANGUAGE="JavaScript"> <!-oas_ad('TopLeft'); //--> </SCRIPT> <NOSCRIPT> <A HREF="/RealMedia/ads/click_nx.ads/www.247media.com/Samples/nx_js.html@TopLeft">

<IMG SRC="/RealMedia/ads/adstream_nx.ads/www.247media.com/Samples/nx_ js.html@TopLeft" border=0></A> </NOSCRIPT> <!-- End of code for TopLeft position --> </TD><TD> TopRight<BR> <!-- Here is the Open AdStream code for the TopRight position --> <SCRIPT LANGUAGE="JavaScript"> <!-oas_ad('TopRight'); //-->

- 49 -

</SCRIPT> <NOSCRIPT> <A HREF="/RealMedia/ads/click_nx.cgi/www.247media.com/Samples/nx_js.html@TopRight"> <IMG SRC="/RealMedia/ads/adstream_nx.cgi/www.247media.com/Samples/nx_ js.html@TopRight" border=0></A> </NOSCRIPT> <!-- End of code for BottomRight position --> </TD></TR> </TABLE> </CENTER> </BODY> </HTML>

- 50 -

Working with RX
Note: Any deviation from the documented 24/7 Open AdStream tags may result in non-delivery, as unsupported ad tags have not been tested or validated in the system and may cause unforeseen issues.

RX Delivery
RX Delivery is a modification of JX Delivery, which was previously described in this Guide. Like JX, RX Delivery is capable of remote delivery, as well as delivery of HTML Creatives. RX Delivery is also similar to JX in its dependence upon JavaScript to test the Visitor's Browser and cannot deliver to Browsers that do not have JavaScript enabled. RX does differ from JX in two key aspects. First, the cache-defeating by a random number is much more effective. Second, the actual application of RX code is simpler by setting up the function in the <head> of the Page and then calling this function each time you want to insert an Ad. RX Delivery works as follows: 1. Visitor's Browser requests a Web Page from the Content Server. 2. The Content Server delivers the Web Page and the Visitor's Browser renders the requested Page. 3. While rendering the delivered Page, the Visitor's Browser encounters RX code. The RX code in the <head> of the Page includes JavaScript that tests the Browser. 4. Each time the Browser encounters an Ad Call in the <body> of the Page, the Browser will request the appropriate Ad to be delivered from the 24/7 Open AdStream Server (according to the JavaScript decision): a. If the Visitor's Browser does not have JavaScript enabled, then the Browser will not display an Ad. b. If the Visitor's Browser does have JavaScript enabled, and the JavaScript test reveals that it is an older Browser, then the Browser will request a GIF or JPEG banner to be delivered. c. If the Visitor's Browser does have JavaScript enabled, and the JavaScript test reveals that it is a newer Browser (capable of HTML delivery), then the Browser will request an HTML Creative from the remote server. This HTML can be in the form of a complete HTML Creative, or a set of Ad Tags (HTML replacement) that will make the final remote call for a Creative. 5. The appropriate Ads are delivered and the Browser renders them with the Page. If an HTML Creative is requested, the Browser will download it without opening a new Browser window. When the Visitor clicks on the delivered Image, the HREF requests a Click-Through URL from 24/7 Open AdStream for the clicking Visitor. 24/7 Open AdStream remembers what Ad was delivered and then redirects the Visitor to the appropriate Click-Through URL.

- 51 -

Schematic Representation of RXDelivery

Coding for RX Delivery


RX Delivery relies on a function called DisplayAds, which uses an NX Tag or a JX Tag for the Ad insertion as determined by the 24/7 Open AdStream Browser test. Specific Browser types recognize and use only specific lines of the code. The code for RX Delivery consists of some setup information (sample below) in the <head> section of the Page HTML, and RX Position Code (or individual Ad Calls) within the <body> section of the HTML. RX Setup Code RX Setup Code appears in the <head> section of the Page. It sets the Browser test and runs the DisplayAd function. Below is a sample of RX Setup Code. Refer to RX Setup Code Descriptions below for an explanation of each section. You can also refer to the Sample of RX Setup Code without comments section. RX Position Code appears further down in the HMTL source of the Web Page. RX Setup Code Section Descriptions The following descriptions reference the comments in the RX Setup Code.

- 52 -

RXCode Section Browser Test (1)

Delivery The Browser Test consists of the code between the begin/end 24/7 Open AdStream Browser test lines. This code determines what version of JavaScript the client is running (if JavaScript is enabled) and sets a variable called version equal to a specific value. JavaScript 1.0 will set version equal to 10, and JavaScript 1.1 will set version equal to 11. An additional test is made to see if the Browser uses the 'Mozilla/3' signature; if so, then version equal will be set to 10. JavaScript 1.0 is compliant with Netscape 2.x and MSIE 3.x . JavaScript 1.1 is compliant with Netscape 3.0 (and later), as well as MSIE 3.01 (and later). The Ad Insertion function consists of the code between the begin/end 24/7 Open AdStream function definition lines, and it is another JavaScript application. The first few lines define variables. The rest of this code defines the function called DisplayAds, which uses the defined variables to handle Ad Insertion when called by Position Code in the <body> of the Page HTML.
l

Ad Insertion Function (2) (3)

The first few lines in this section define variables: Example: For http://www.oasaddress.com/RealMedia/ads, you must replace www.oasaddress.com with the actual domain where your copy of 24/7 Open AdStream is running. var sitepage defines the actual PageURL for Ad Delivery. Example: We have represented this URL as www.siteaddress.com/index.htm, and you must replace it with the actual or virtual Page that should receive the Ad. You must replace www.siteaddress.com with the correct domain name. var RN and var RNS set variables for generating a random number to be used for defeating cache. var OAS_query defines keyword to be passed to 24/7 Open AdStream Server. Refer to MJX Code Section Descriptions for detail.

The rest of the code in this section defines the insertion function and what it does:
l

function DisplayAds (position, width, height) defines the function called DisplayAds and establishes the variables that will be passed to it. The variables are passed when the function is called by Position Code in the <body> of the Page HTML. var oaspage defines the Page and Position as well as

- 53 -

RXCode Section

Delivery a random number for cache-defeating for the Ad Delivery. Note that it depends on the Position, passed by the Position Code in the <body> of the Page HTML, and the random number generating the ifelse script, defines what to do with all the variables when the Ad Call is made:variables defined above. l For Browsers that test as JavaScript 1.0 (or earlier), this part of the code takes the defined and passed variables and makes an appropriate HTML insertion. To do this, the document.write command inserts HTML code (including information assigned by the variables) directly into the targeted Web Page. The click_nx.ads command executes the 24/7 Open AdStream function that redirects the Visitor's Browser to the Click-Through URL. l For Browsers that test as JavaScript 1.1, this part of the code takes the defined and passed variables and makes an appropriate HTML insertion. To do this, the document.write command inserts HTML code (including information assigned by the variables) directly into the targeted web Page. The click_jx.ads command executes the 24/7 Open AdStream function that redirects the Visitor's Browser to the Click-Through URL.

RX Position Code
Important: Position abbreviations in tags are not allowed. Tags created with position abbreviations will be displayed as "blank", or generate errors.

The RX Setup Code appears in the <head> of the Page. Further down in the HMTL source of the Web Page, you will have one or more instances of RX Position Code. Each occurrence marks the actual insertion point where an Ad will appear on the Page. Below is sample code for two ad Positions on one Page.
<body> <!-- ##### ad call for first position ##### -<SCRIPT LANGUAGE="JavaScript"> <!-DisplayAds ("Position1,Position2!Position1", "468", "60"); //--> </SCRIPT> <!-- ##### ad call for second position ##### --> <SCRIPT LANGUAGE="JavaScript"> <!-DisplayAds ("Position1,Position2!Position2", "468", "60"); //--> </SCRIPT>

- 54 -

.... </body> </html>

RX Position Code Components Descriptions Here are descriptions of the various HTML components used in the RX Position Code. RXComponent DisplayAds Description This is a call to the function defined in the <head> of the Page HTML. Its presence in the <body> passes the values PositionList!Position, Width, and Height to the JavaScript function. The function then performs the appropriate HTML insertion for this Position on the Page. This is a comma-separated list of all the Positions on the current Web Page followed by the specific Position for this insertion. In the ad call for first Position in the example above, the Ad Position is:

Ad Position

Position1,Position2!Position1
Refer to Position Naming Conventions for NX, JX and RX for more information. Ad Width The actual width of the Position in pixels. This is defined by the first value following the Ad Position in the DisplayAds call. In the ad call for first Position in the example above, the Ad WIdth is:

468
Ad Height The actual height of the Position in pixels. This is defined by the second value following the Ad Position in the DisplayAds call. In the ad call for first Position in the example above, the Ad Height is:

60

- 55 -

Known Problems in RX Coding


l l

RX cannot deliver Ads to Browsers that do not have JavaScript enabled. If you want your RX code to deliver ads to Browsers that do not have JavaScript enabled, then append the RX Position Code with a <NOSCRIPT> section that contains an NX Tag. If you do this, however, you should be aware that Ad Delivery to MSIE4 may be counted as two Impressions (due to glitches in the way that MSIE4 handles JavaScript).

Using a <NOSCRIPT> Section As mentioned previously, JX and RX delivery cannot deliver to Browsers that do not have JavaScript enabled. Use of a <NOSCRIPT> section will perform delivery of an image banner to non-JavaScript Browsers. But there is a problem: Ad deliveries to MSIE4 may be counted as two Impressions (due to glitches in the way that MSIE4 handles JavaScript).
l

When using the <NOSCRIPT> section for JX Delivery, append it to the very end and use it as the 4th section:
<!-- 4th Section: Delivery via NX code for older and non-Javascript Browser --> <noscript> <A HREF="www.oasaddress.com/RealMedia/ads/click_nx.ads/PAGE@Position?x"><IMG SRC="www.oasaddress.com/RealMedia/ads/adstream_ nx.ads/PAGE@Position?x"></a> </noscript>

When using the <NOSCRIPT> section for RX Delivery, append it to the end of the RX Setup Code (after the end OAS function definition but before the </HTML>):
<!-- # end OAS function definition # --> <noscript> <A HREF="www.oasaddress.com/RealMedia/ads/click_nx.ads/PAGE@Position?x"><IMG SRC="www.oasaddress.com/RealMedia/ads/adstream_ nx.ads/PAGE@Position?x"></a> </noscript> </head>

RX Sample Setup Code Without Comments This is the same code as seen in the Sample RX Setup Code, but comments and extra line breaks have been removed.
<html> <head> <!-- ##### begin OAS Browser test ##### --> <SCRIPT LANGUAGE="JavaScript"> <!-_version=10; //--> </SCRIPT> <SCRIPT LANGUAGE="JavaScript1.1"> <!-_version=11; if (navigator.userAgent.indexOf('Mozilla/3') != -1){ _version=10;} // -->

- 56 -

</SCRIPT> <!-- # end OAS Browser test # --> <!-- ##### begin OAS function definition ##### --> <SCRIPT LANGUAGE="JavaScript"> <!-<!-- here are oas site, page, and random number variables --> var oas='http://www.oasaddress/RealMedia/ads/'; var sitepage = "www.siteaddress.com/index.htm"; var RN = new String (Math.random()); var RNS = RN.substring (2, 11); var OAS_query = ''; <!-- here is the ad insertion function --> function DisplayAds (Position, width, height) { var oaspage= sitepage + '/1' + RNS + '@' + Position + '?' + OAS_query; if (_version < 11) { document.write ('<A HREF="' + oas + 'click_nx.ads/'+ oaspage + '" TARGET="_ top" ><IMG SRC="' + oas + 'adstream_nx.ads/' + oaspage + '" BORDER="0" WIDTH="' + width + '" HEIGHT="' + height + '"></a>'); } else { document.write ('<SCRIPT LANGUAGE="JavaScript1.1" SRC="' + oas + 'adstream_ jx.ads/' + oaspage + '">'); document.write ('\<\!-- --\>'); document.write ('\<\/SCRIPT\>'); document.write ('\<\!-- --\>'); } } // --> </SCRIPT> <!-- # end OAS function definition # --> </head>

- 57 -

Tagging for Analytics


If you are using Analytics with your 24/7 Open AdStream installation, you will need to append your Ad Tags with a 24/7 Open AdStream Query string (Refer to Appendix G for the 24/7 Open AdStream Analytics Tagging Guide). See below for examples of various Ad Tag types. In each case, the 24/7 Open AdStream Query string is highlighted and shown in bold, red text.
Note: Any deviation from the documented 24/7 Open AdStream tags may result in non-delivery, as unsupported ad tags have not been tested or validated in the system and may cause unforeseen issues.

Limitation
Please note that there is a 2K limit on the length of a query string. This means that the entire string -- XEs and keywords included -- has to be less than 2048 characters. Analytics in the NX Tag The 24/7 Open AdStream Analytics string needs to be in ONE of the NX Tags on the page in question. NX Tag Example:
<A HREF="http:// server.realads.com/RealMedia/ads/click_nx.cgi/www.realmedia.com/Samples/nx_multi.html@Top1,TopRight,Bottom1,BottomRight!Top1"> <IMG SRC="http://server.realads.com/RealMedia/ads/adstream_nx.cgi/www.realmedia.com/Samples/nx_multi.html@Top1,TopRight,Bottom1, BottomRight!Top1?XE&abc=1&cde=2&XE" border=0></A>

Analytics in the JX Tag The 24/7 Open AdStream Analytics string needs to be in ONE of the JX Tags on the Page in question. JX Tag Example 1:
<!-Include OAS Analytics Setup Script --> <SCRIPT LANGUAGE="JavaScript" src="http://servername:port/Scripts/oas_analytics.js"></SCRIPT> <SCRIPT LANGUAGE="JavaScript1.1"> <!- Define Custom Reporting Taxonomy, format is: &Attribute1=Value1&Attribute2=Value2 --> <!-var OAS_taxonomy='abc=1&cde=2'; var OAS_query=''; OAS_query += 'XE' + '&' + OAS_taxonomy + OAS_rdl + "&if_nt_CookieAccept=" + OAS_CA + '&XE'; var positions='TopLeft,TopRight!TopLeft'; if (typeof RNS == "undefined") RNS = new String (Math.random()).substring(2, 11); document.write('<scr'+'ipt LANGUAGE="JavaScript1.1" SRC="http://server.realads.com/RealMedia/ads/adstream_jx.cgi/www.realmedia.com/Samples/jx_multi.html' + RNS + '@' + positions + '?' + OAS_query + '"></scr' + 'ipt>'); // -->

- 58 -

</script> <script LANGUAGE="JavaScript"> <!-_version=10; //--> </script> <script LANGUAGE="JavaScript1.1"> <!-_version=11; // --> </script> <script LANGUAGE="JavaScript"> <!-if (navigator.appVersion.indexOf('MSIE 3') != -1){ document.write('<IFRAME WIDTH=460 HEIGHT=120 MARGINWIDTH=0 MARGINHEIGHT=0 HSPAC =0 VSPACE=0 FRAMEBORDER=0 SCROLLING=no BORDERCOLOR="#000000" SRC="http://server.realads.com/RealMedia/ads/adstream_sx.ads/www.realmedia.com/Samples/jx_multi.html' + RNS + positions + '?' + OAS_query + '"></iframe>'); } else if (_version < 11) { document.write ('<A HREF="http://server.realads.com/RealMedia/ads/click_nx.cgiwww.realmedia.com/Samples/jx_multi.html' + OAS_rns + '@' + positions + '?' + OAS_qeury + '"><IMG SRC="http://server.realads.com/RealMedia/ads/adstream_nx.cgi/www.realmedia.com/Samples/jx_multi.html' + OAS_rns + '@' + positions + '?' + OAS_query + '"></a>'); } // --> </SCRIPT>

JX Tag Example 2:
<head> <!-- Begin OAS function definition --> <!-Include OAS Analytics Setup Script --> <SCRIPT LANGUAGE="JavaScript" src="http://servername:port/Scripts/oas_analytics.js"></SCRIPT> <SCRIPT LANGUAGE="JavaScript"> <!-Define Custom Reporting Taxonomy, format is: &Attribute1=Value1&Attribute2=Value2 --> var OAS_taxonomy='abc=1&cde=2'; var OAS_query=''; OAS_query += 'XE' + '&' + OAS_taxonomy + OAS_rdl + "&if_nt_CookieAccept=" + OAS_CA + '&XE'; <!-- define oas site, page and random number --> var oas='http://server.realads.com/RealMedia/ads/'; var sitepage = "www.realmedia.com/Samples/rx_multi.html"; var RNS = new String(Math.random()).subString(2,11); <!-- Insertion function --> function DisplayAds(positionList, position, width, height) { var oaspage= sitepage + '/1' + RNS + '@' + positionList + '!' + position + '?' + OAS_query; if (_version < 11) { document.write ('<A HREF="' + oas + 'click_nx.cgi/' + oaspage + '" TARGET="_top" ><IMG SRC="' + oas + 'adstream_nx.cgi/' + oaspage + '" BORDER="0" WIDTH="' + wid th + '" HEIGHT="' + height + '"></a>'); } else { document.write ('<SCRIPT LANGUAGE="JavaScript1.1" SRC="' + oas + 'adstream_jx.cg i/' + oaspage + '">');

- 59 -

document.write('<\/SCRIPT>'); } document.close(); } </head> <body> <SCRIPT LANGUAGE="JavaScript"> DisplayAds('TopLeft,TopRight', 'TopLeft', 0, 0 ); </SCRIPT> <SCRIPT LANGUAGE="JavaScript"> DisplayAds('TopLeft,TopRight', 'TopLeft', 0, 0 ); </SCRIPT> </body> </html>

Analytics in the MJX Tag The 24/7 Open AdStream Analytics string is defined as the variable, OAS_query. MJX Tag Example:
<body> <!Include OAS Analytics Setup Script --> <SCRIPT LANGUAGE="JavaScript" src="http://servername:port/Scripts/oas_analytics.js"></SCRIPT> <SCRIPT LANGUAGE=JavaScript> <!-//configuration OAS_url = 'http://server.realads.com/RealMedia/ads/'; //OAS_sitepage = window.location.hostname + window.location.pathname; OAS_sitepage = 'www.realmedia.com/Samples/mjx.html'; OAS_listpos = 'TopLeft,TopRight'; <!Define Custom Reporting Taxonomy, format is: &Attribute1=Value1&Attribute2=Value2 --> var OAS_taxonomy='abc=1&cde=2'; var OAS_query=''; OAS_query += 'XE' + '&' + OAS_taxonomy + OAS_rdl + "&if_nt_CookieAccept=" + OAS_CA + '&XE'; OAS_target = '_top'; //end of configuration OAS_rn = new String (Math.random()); OAS_rns = OAS_rn.substring (2, 11); function OAS_NORMAL(pos) { document.write('<A HREF="' + OAS_url + 'click_nx.cgi/' + OAS_sitepage + '/1' + OAS_rns + '@' + OAS_listpos + '!' + pos + '?' + OAS_query + '" TARGET=' + OAS_target + '>'); } //--> </SCRIPT> <SCRIPT LANGUAGE=JavaScript1.1> <!-OAS_version = 11; if (navigator.userAgent.indexOf('Mozilla/3') != -1 || navigator.userAgent.indexO if('Mozilla/4.0 webTV') != -1)

- 60 -

OAS_version = 10; if (OAS_version >= 11) document.write('<SCRIPT LANGUAGE=JavaScript1.1 SRC="' + OAS_url + 'adstream_ mjx.cgi/' + OAS_sitepage + '/1' + OAS_rns + '@' + OAS_listpos + '?' + OAS_query +'"><\/SCRIPT>'); //--> </SCRIPT> <SCRIPT LANGUAGE=JavaScript> <!-document.write(''); function OAS_AD(pos) { if (OAS_version >= 11) OAS_RICH(pos); else OAS_NORMAL(pos); } //--> </SCRIPT> <SCRIPT LANGUAGE=JavaScript> <!-OAS_AD('TopLeft'); //--> </SCRIPT> <SCRIPT LANGUAGE=JavaScript> <!-OAS_AD('TopRight'); //--> </SCRIPT> </body>

Specialized Analytics Tags The following elements of the Analytics Tags show the use of appending the data to a JavaScript variable. This variable must then be appended to the query string of the request in ONE of the applicable Tags above. Transactions Be it an e-commerce site, content site, service-oriented site, or otherwise, there are many ways to break down an action into transactional components. For example, when you understand these components and see that a Visitor is never going passed the first Page of an article, or that only 50% of your Visitors complete all three steps of a checkout, you will be able to tailor your site better to serve their needs. To this end, 24/7 Open AdStream Analytics has designated reserved Tags to denote the steps associated with transactions: Attribute oas_xtransStatus Value start | end | step##
Note: These steps should be coded "step1", "step2", etc. They ARE NOT case sensitive.

Required Yes

oas_xtransName

Natural Language Description of Trans-

Yes

- 61 -

Attribute

Value action

Required

oas_xtransId oas_xtransItem oas_xtransCategory oas_xtransQuantity oas_xtransValue

Customer Transaction Id Item Description Category Description Quantity of Item Purchased Value of Item Purchased

No No No No No

Sample JavaScript: Define a 24/7 Open AdStream Analytics Transaction


var OAS_taxonomy = '&oas_xtransStatus=' + escape('end'); OAS_taxonomy += '&oas_xtransName=' + escape('Checkout'); OAS_taxonomy += '&oas_xtransId=' + escape('2677210304387'); OAS_taxonomy += '&oas_xtransCategory=' + escape('Baby'); OAS_taxonomy += '&oas_xtransItem=' + escape('Infant Boy T-Shirt'); OAS_taxonomy += '&oas_xtransQuantity=' + escape('1'); OAS_taxonomy += '&oas_xtransValue=' + escape('14.87');

Error Pages Most sites will use special Pages to display common HTTP errors, such as "Page Not Found" (404); or "Internal Error" (500). 24/7 Open AdStream Analytics has reserved Tags that you can embed on these custom Pages so that a Webmaster or Manager can get a sense of the end users experience on your site. The reserved Tags are: Attribute Value Required Yes Yes No

oas_httpErrorType oas_httpErrorURL oas_httpErrorReferrer

400 | 403 | 404 | 500 | 501 | 503 Missing File Page containing link to missing file

Sample JavaScript: Insert OAS Analytics HTTP Error tracking into the Taxonomy var OAS_taxonomy = "&if_httpErrorType=404&if_httpErrorURL=" + document.location + &oas_httpErrorRefrerrer= + document.referrer; Client Codes (UserIDs): If your site has a members or registration section, 24/7 Open AdStream Analytics allows you to couple this User ID with an online visitors' Clickstream behavior. To do this, simply add the following to your Taxonomy string:

- 62 -

Attribute oas_clientCode

Value Alphanumeric String

Required No

Sample JavaScript: Insert Client Codes into the Taxonomy String var OAS_taxonomy = "&Section=" + section + "&oas_clientCode='+ escape (vz7.0b52c55ba3155c966461047cf079363fa); No Analytics Tags: In certain cases, you may not want to have the 24/7 Open AdStream Log Processing Tool do full analytics processing. The reason for this is so that certain metrics are not overcounted. For example, a Page may have many 24/7 Open AdStream Tags on it. If each Tag were processed, it would result in multiple Pageviews for the same piece of HTML. To avoid this, you can include a directive which tells the Log Processing Tool to NOT do Analytics processing: Attribute oas_pv Value no_analytics Required No

Sample JavaScript: Skip OAS Analytics Processing var OAS_taxonomy = "&oas_pv=no_analytics";

- 63 -

Image Maps and HTML Creatives


You can deliver various types of Rich Media banners with 24/7 Open AdStream. Rich Media banners are also referred to as HTML banners because they consist of HTML that is inserted in the web Page. Some examples of Rich Media banners include:
l l l l l

Third-party served banners Image Maps Forms Pop-Ups Enliven

HTML banners, whether received from advertisers or created in-house, need to be modified before being uploaded into 24/7 Open AdStream for three reasons:
l l l

Track the Click-Through Locally deliver an image Defeat caching

Refer to the 24/7 Open AdStream Rich Media Guide Version 2.0 Beta for instructions on delivering image maps and HTML Creatives.
Note: When using a Rich Media creative, the Alt Text field in the creative section cannot contain single quotes. Single quotes in this scenario, breaks the creative from displaying.

- 64 -

HTML Ad Substitutions
These substitutions are listed in processing order. 1. Substitute HTML by DEFAULT_HTML as shown in Method 1: Using openad.cfg below. 2. Substitute HTML by query as shown in Method 2: Substitutions in the Query String below. The rest of these substitutions are also documented in the openad.cfg file. 3. 4. 5. 6. 7. %%PROTOCOL%% http:// or https:// %%HOST%% - server name %%PORT%% - :port (empty for default port) %%SERVER%% - %%PROTOCOL%%%%HOST%%%%PORT%% %%CAMP%% - Account id/Campaign id
Note: This substitution represents the Account ID, followed by a slash, and then the Campaign ID.

8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.

%%IMAGE%% - image name %%PATH%% - image subdir or redirected URL %%USER%% - user id (cookie) %%ADID%% - image id %%PAGE%% - page url %%POS%% - position %%TARGET%% - target window %%ALT%% - alt text %%HTML%% - extra HTML %%TEXT%% - extra text %%DIM%% - image dimensions (WIDTH=x HEIGHT=y) %%RAND%% - random number to append to URL %%REALRAND%% - random number to append to URL that overrides the RandomUrl setting %%FILEDATE%% - file modification time (seconds since 1970); 0 for redirect %%COOKIE%% - cookie value targeted %%QUERY%% - query string %%GMTTIME%% - timestamp in YYYY.MM.DD.hh.mm.ss format %%ADV%% - Advertiser ID from Campaign Overview screen. %%COMP_CAT%% - Competitive Category from Campaign Overview screen. If multiple, comma separated. %%SEG%% - Comma separated list of the Active BT Segments that the User is attributed to at the time of delivery. %%HEIGHT%% - Height of Creative from Creative screen. %%WIDTH%% - Width of Creative from Creative screen. %%REF%% - The referrer URL that is sent in the header of the ad request. %%F%% - %%CDN%%/RealMedia/ads/Creatives/%%CAMP%%/ %%C%% - %%SERVER%%/RealMedia/ads/click_

- 65 -

lx.ads/%%PAGE%%/%%RAND%%/%%POS%%/%%CAMP%%/%%IMAGE%%/%%USER%% The following may be enabled in your account. If they are not enabled, contact your Account Manager to enable them. 1. 2. 3. 4. %%CPM%% - Campaign or Creative Target CPM from Schedule/Billing screen. %%CPC%% - Campaign or Creative Target CPC from Schedule/Billing screen. %%CPA%% - Campaign or Creative Target CPA from Schedule/Billing screen. %%eCPM%% - Campaign or Creative Target eCPM from Schedule/Billing screen. 5. %%COOKIE_[COOKIENAME]%% - Comma separated list of the values in the cookie. [COOKIENAME] will be populated with the name of the cookie. If the cookie does not exist, the value will return null.
Important: Do not use the %%L%% macro - (deprecated) - in Creative code, as it will not render. Use %%F%% macro instead.

Dynamic HTML AD SUBSTITUTIONS


Note: 24/7 Open AdStream Enterprise Edition The openad.cfg file specified in sections below can only be modified by clients using 24/7 Open AdStream Enterprise Edition. Dynamic HTML ad substitution can be done using DEFAULT_HTML_* (set it in the openad.cfg file) or with _ RM_HTML_* (directly in the query string).

Method 1: Using openad.cfg Assume that the openad.cfg file is configured with the following code:
DEFAULT_HTML_MONKEY HoppityHop DEFAULT_HTML_CLICK %%SERVER%%/RealMedia/ads/click_ lx.ads/%%PAGE%%/%%RAND%%/%%POS%%/%%CAMP%%/%%IMAGE%%/%%USER%% When an ad banner contains: %%MONKEY%% all occurrences of %%MONKEY%% will be substituted with HoppityHop When an HTML banner contains: %%CLICK%% all occurrences of %%CLICK%% will be substituted with: SERVER.realads.com/RealMedia/ads/click_lx.ads/www.247media.com/Samples/lx.html/1481154846/TopRight/OasDefault/demo/bulb3.gif/63306138303134343366303037633830

Method 2: Substitutions in the Query String Assume that a query string is configured as follows:
?...&_RM_HTML_MONKEY_=HoppityHop&... When an HTML banner contains: %%MONKEY%%

- 66 -

all occurrences of %%MONKEY%% will be substituted with HoppityHop


Note: In the event that the Query String and configuration file both contain the same variable, for example, openad.cfg specifies DEFAULT_HTML_RABBIT HippityHop and the QueryString specifies _RM_HTML_RABBIT=HoppityHip, then the Query String data takes precedence and HoppityHip is used.

More Redirection Options


In addition to the existing _RM_REDIR_, we now have _RM_ACTION_, which work as follows: Given a redirect URL such as www.247media.com/index.html?one=1&more=2&end=5
_RM_REDIR_ The following appended query string: ...?_RM_REDIR_=www.247media.com/index.html?one=1&more=2&end=5 redirects to (the truncated query string): www.247media.com/index.html?one=1 _RM_ACTION_ The following appended query string: ...?_RM_ACTION_=www.247media.com/index.html?one=1&more=2&end=5 would redirect to: www.247media.com/index.html?one=1&more=2&end=5
Note: _RM_ACTION_ In the last example (_RM_ACTION_), the Browser will be redirected as coded in the full query string, but the following part would be URL decoded: www.247media.com/index.html?one=1 which is everything up to the first ampersand (&) in the query string.

Additional __QUERY__ Option


Using __DQUERY__ will URL Decode the query string before redirecting. This means that you no longer have to decode a query string from a third-party manually.

- 67 -

.ADS vs .CGI
All sample Tags are now standardized to use the .ads extension for the click and adstream calls. If you have upgraded to 24/7 Open AdStream 5.6 or higher versions, and your site had previously been tagged using the .cgi extension for those calls, there is no need to modify them. Both .ads and .cgi will work, regardless of your server's operating system.

- 68 -

Ad Exclusion
The Ad Exclusion feature has been created to make the exclusion functionality found in 24/7 Open AdStream more granular. This feature works with the existing functionality of the User Interface, and is controlled from the query string, to force a Campaign to always be excluded from delivery.

How it Works
Ad Exclusion works with the Competitive Categories feature in the 24/7 Open AdStream User Interface and is controlled from the query string. By definition, the Competitive Categories feature prevents two Campaigns with the same Competitive Category from appearing on the same Page at the same time. For example, if Campaign 'Ford' and Campaign 'Chevy' share the Competitive Category 'Automobile,' then when an 'Automobile' ad is requested, only the 'Ford' or 'Chevy' ad will be displayed. In this scenario, you will never see both a 'Ford' and 'Chevy' ad with the Competitive Category of 'Automobile' on the same Page at the same time. Ad Exclusion works with the selected Competitive Category(s) and the query string to force the Campaign(s) to always be excluded from delivery. With Ad Exclusion, all Campaigns that share the same Competitive Category(s) will be excluded from delivery. For example, if Campaign 'Ford' and Campaign 'Chevy' share the Competitive Category 'Automobile,' then when an 'Automobile' ad is requested, neither ad will be displayed. The following is a list of additional comments on how the Ad Exclusion feature works with Competitive Categories:
l

One or more Competitive Categories must be selected for the Campaign via the User Interface in order for this feature to work. An Ad Exclusion Query String cannot be built 'from scratch' into a Page. You must first have the appropriate Competitive Categories defined in the User interface. Entering a different Competitive Category into the query string does not overwrite the category(s) selected in the User Interface. Rather, the query string will not work unless the category(s) in the query string match the category(s) in the User Interface.

Implementation
Refer to the table below for the proper syntax of applying the Ad Exclusion functionality to the query string: Action Query String Name Query String Value One or more

Exclusion

RM_Exclude

- 69 -

Action

Query String Name

Query String Value comma-separated Competitive Categories defined for certain Campaigns

Samples: ?RM_Exclude=Airlines,Automobiles ?RM_Exclude=Sponsor1,Entertainment


Note: Competitive Categories and Exclusion: In order to build the Exclusion values into the query string, the same values, or Competitive Categories, must first be selected for each Campaign in the User Interface.

Tag Examples
In all cases shown here, the query string containing the Exclusion values should be appended to the IMG SRC URL. Use the following Page Tagging examples to guide you when setting up the Ad Exclusion feature in each of the different 24/7 Open AdStream Tags. NX For NX delivery of Excluded ads, append the query string to the IMG SRC URL.
<A HREF="http://www.oasaddress.com/RealMedia/ads/click_nx.ads/www.siteaddress.com/news/index.html@TopLeft"> <IMG SRC="http://www.oasaddress.com/RealMedia/ads/adstream_nx.ads/www.siteaddress.com/news/index.html@TopLeft?RM_Exclude=Alcohol"></A>

In this example, the TopLeft Position will never display banners for Campaigns that belong to the Alcohol Category. This is the simplest use of Ad Exclusion in Page tagging. JX With JX Delivery, the query string is appended to the IMG SRC URL lines.
<CENTER> TopLeft<br> <!--- Here is the OAS JX Code for the TopLeft Position ---> <SCRIPT LANGUAGE="JavaScript1.1" SRC="/RealMedia/ads/adstream_jx.ads/www.247media.com/Samples/jx.html@TopLeft?RM_Exclude=Alcohol"> </script> <script LANGUAGE="JavaScript"> <!-_version=10; //--> </script> <script LANGUAGE="JavaScript1.1"> <!-_version=11; // --> </script> <script LANGUAGE="JavaScript">

- 70 -

<!-if (navigator.appVersion.indexOf('MSIE 3') != -1){ document.write('<IFRAME WIDTH=460 HEIGHT=120 MARGINWIDTH=0 MARGINHEIGHT=0 HSPACE=0 VSPACE=0 FRAMEBORDER=0 SCROLLING=no BORDERCOLOR="#000000" SRC="/RealMedia/ads/adstream_sx.ads/www.247media.com/Samples/jx.html@TopLeft?RM_Exclude=Alcohol"></iframe>'); } else if (_version < 11) { document.write ('<A HREF="/RealMedia/ads/click_nx.ads/www.247media.com/Samples/jx.html@TopLeft?x"><IMG SRC="/RealMedia/ads/adstream_ nx.ads/www.247media.com/Samples/jx.html@TopLeft?x&RM_Exclude=Alcohol"></a>'); } // --> </SCRIPT> <p> <CENTER>

This example illustrates a Campaign in which delivery to the TopLeft Position will be excluded for all Campaigns that have Alcohol selected as a Competitive Category. Please note that with the JX Tag you will need to use the query string in more than one place for each banner, since each represents a possible Browser. MJX With MJX Delivery, the query string is set up as a JavaScript variable and appended to the IMG SRC URL lines (numbered comments described after the code):
<!------ OAS SETUP begin ------> <SCRIPT LANGUAGE=JavaScript> <!-//configuration OAS_url = '/RealMedia/ads/'; OAS_sitepage = 'www.247media.com/Samples/mjx2.html'; //OAS_sitepage = window.location.hostname + window.location.pathname; OAS_listpos = 'TopLeft'; <!---- (1) Define variable for exclusion ----> OAS_query = '?RM_Exclude=Airlines'; OAS_target = '_top'; //end of configuration OAS_version = 10; OAS_rn = '001234567890'; OAS_RNS = '1234567890'; OAS_rn = new String (Math.random()); OAS_RNS = OAS_rn.substring (2, 11); function OAS_NORMAL(pos) { document.write('<A HREF="' + OAS_url + 'click_nx.ads/' + OAS_sitepage + '/1' + OAS_RNS + '@' + OAS_listpos + '!' + pos + '" TARGET=' + OAS_target + '>'); <!---- (1) Append the variable to IMG SRC ----> document.write('<IMG SRC="' + OAS_url + 'adstream_nx.ads/' + OAS_sitepage + '/1' + OAS_RNS + '@' + OAS_listpos + '!' + pos + OAS_query + '" BORDER=0></A>'); } //--> </SCRIPT> <SCRIPT LANGUAGE=JavaScript1.1>

- 71 -

<!-OAS_version = 11; if (navigator.userAgent.indexOf('Mozilla/3') != -1 || navigator.userAgent.indexOf('Mozilla/4.0 webTV') != -1) OAS_version = 10; if (OAS_version >= 11) <!---- (1) Append the variable for other Browser lines ----> document.write('<SCRIPT LANGUAGE=JavaScript1.1 SRC="' + OAS_url + 'adstream_mjx.ads/' + OAS_sitepage + '/1' + OAS_RNS + '@' + OAS_listpos + OAS_query + '"><\/SCRIPT>'); //--> </SCRIPT> <SCRIPT LANGUAGE=JavaScript> <!

The example above illustrates three (3) places in which Ad Exclusion reference is needed: 1. Define a variable with the needed query string. In our example, we called the variable OAS_query. 2. In the IMG SRC line, append the variable (in this case, OAS_query) after the Position flag. 3. As with JX Delivery, the MJX Delivery requires the use of the Exclusion query string for each Browser possibility. Our example marks the second Browser type that requires the Ad Exclusion flag. RX RX Delivery works in much the same way as MJX Delivery. For RX Delivery, the query string is defined early in the Tag and then appended to the IMG SRC URL lines(numbered comments described after the code):
<!--- Begin 24/7 Open AdStream Browser test --> <SCRIPT LANGUAGE="JavaScript"> <!-_version=10; // --> </script> <SCRIPT LANGUAGE="JavaScript1.1"> _version=11; if (navigator.userAgent.indexOf('Mozilla/3') != -1){ _version=10;} </SCRIPT> <!-- End Of OAS Browser test --> <!-- Begin OAS function definition --> <SCRIPT LANGUAGE="JavaScript"> <!-- define oas site, page and random number --> var oas='http://www.247media.com/RealMedia/ads/'; var sitepage = "www.247media.com/Samples/rx2.html"; var RN = new String(Math.random()); var RNS= RN.substring(2,11); <!---- (1) Define variable for exclusion ----> var OAS_query = '?RM_Exclude=Alcohol';

- 72 -

<!-- Insertion function --> function DisplayAds(Position, width, height) { var oaspage= sitepage + '/1' + RNS + '@' + Position; if (_version < 11) { <!---- (1) Append the variable to IMG SRC ----> document.write ('<A HREF="' + oas + 'click_nx.ads/' + oaspage + '" TARGET="_top"><IMG SRC="' + o as + 'adstream_nx.ads/' + oaspage + OAS_query + '" BORDER="0" WIDTH="' + width + '" HEIGHT="' + heig ht + '"></a>'); } else { <!---- (1) Append the variable for other Browser lines ----> document.write ('<SCRIPT LANGUAGE="JavaScript1.1" SRC="' + oas + 'adstream_ jx.ads/' + oaspage + OAS_query + '">'); document.write('<\/SCRIPT>'); } document.close(); }

The example above illustrates three (3) places in which Ad Exclusion reference is needed: 1. Define a variable with the needed query string. In our example, we called the variable OAS_query. 2. In the IMG SRC line, append the OAS_query variable after the Position flag. 3. As with JX Delivery, the RX Delivery requires the use of the Exclusion query string for each Browser possibility. Our example marks the second Browser type that requires the Ad Exclusion flag.

- 73 -

Position Names
There are 128 named Ad Positions. Two Positions, ANY and ALL, are reserved. The remaining 126 Positions are available for individual selection by name, and can be mapped to your own business names. The following table lists all126 Position names and includes a blank space to record your specific use. (Example: x01 - Popup; x02 Skyscrapers).
Important: Creative Position Tagging: The Delivery Engine accepts only a valid position name, refusing requests with abbreviations, or with invalid positions.

Position Name

Mapping

Position Name x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28 x29 x30 x31

Mapping

Position Name x55 x56 x57 x58 x59 x60 x61 x62 x63 x64 x65 x66 x67 x68 x69 x70 x71 x72 x73

Mapping

Bottom Bottom1 Bottom2 Bottom3 BottomLeft BottomRight Frame1 Frame2 Left Left1 Left2 Left3 Middle Middle1 Middle2 Middle3 Position1 Position2 Position3

- 74 -

Position Name

Mapping

Position Name x32 x33 x34 x35 x36 x37 x38 x39 x40 x41 x42 x43 x44 x45 x46 x47 x48 x49 x50 x51 x52 x53 x54

Mapping

Position Name x74 x75 x76 x77 x78 x79 x80 x81 x82 x83 x84 x85 x86 x87 x88 x89 x90 x91 x92 x93 x94 x95 x96

Mapping

Position4 Right Right1 Right2 Right3 Top Top1 Top2 Top3 TopLeft TopRight x01 x02 x03 x04 x05 x06 x07 x08 x09 x10 x11 x12

- 75 -

Passing Query Strings


Ad Tagging does not require Search Term Targeting (Search Module). The passing of query strings is explained in the Search Term Targeting Reference Supplement which is available from the help link in the upper right-hand corner of the 24/7 Open AdStream User Interface. You can also request a copy from your Account Manager. The Search Term Targeting Reference Supplement covers such topics as: a. b. c. d. e. How to pass query strings within an Ad Tag. How to pass multiple keyname/keyvalues within an Ad Tag. What are the limits on the length and the number of keyname/keyvalue pairs. What characters are not allowed in the query string. 24/7 Media's recommendations for alternate characters.

- 76 -

Cookies
24/7 Open AdStream Delivery Server version 5.8/6.x writes one or more of the following cookies:
l l l l

User Unique Identifier: RMID (version 5.8), OAX (version 6.x) Frequency Capping: RMFS, RMFH, RMFD, RMFW, RMFM, RMFL Click-Tracking Cookie for NX Tag: NXCLICK2 Audience Attribute Targeting: RDB

Cookies managed by 24/7 Open AdStream:


l l

User Unique Identifier Cookie CookieName=RMID or OAX

This Cookie value contains an encrypted IP address and time stamp of the time the Cookie was first delivered. This Cookie is dropped to the Users Browsers anytime the User does not have. All Visitors who accept Cookies would have this Cookie. Frequency Capping Cookies: The DE writes six Frequency Cookies to the User in addition to the 24/7 Open AdStream Unique Identifier Cookie if the User has viewed Frequency-Capped Campaigns. These Cookies are dropped only when Frequency-Capped Campaigns are live in 24/7 Open AdStream. For example, if a hourly Frequency-Capped Campaign is live, RMFH Cookie would be dropped. Cookie Name RMFS RMFH RMFD RMFW RMFM RMFL Purpose Session Frequency Cap Hourly Frequency Cap Daily Frequency Cap Weekly Frequency Cap Monthly Frequency Cap Lifetime of the Campaign Frequency Cap

Format of the Cookie: 1. CookieName=CVUpdatetmOffsetImpClickId| 2. CV: Cookie Version (01) - 2 bytes 3. Cleanuptm: Time for last update - 6 bytes Each Campaign record: 1. Offset: Time offset to update time - 1 byte 2. Imps: Impression count - 1 byte

- 77 -

3. Clicks: Click-thru count - 1 byte 4. Id : Campaign Id - X bytes 5. | - field delimiter Cookie format: 1. CookieName= CVUpdatetmOffsetImpClickId|OffsetImpsClickId; expires=Fri, 31-Dec2. 2010 23:59:59 GMT; path=/ ; domain=.domain Click_Tracking Cookie for NX Tag NXCLICK2 cookie format: 1. Cookie Name = NXCLICK2 2. NXCLICK=VSNUpdateNX_Page1!Offset!Pos1!CampKey!CreativeKey!Pos2!CampKey! 3. CreativeKeyNX_Page2!Offset!Pos1!CampKey!CreativeKey! 4. VSN: Cookie Version (XX) - 2 bytes 5. Update Cookie last update time - 4 bytes Each Page record has: NX_Page where Page is the Page field in the NX Tag - XX ! field delimiter - 1 byte Offset time offset to update time - 1 bytes Multiple Position records: 1. 2. 3. 4. 5. 6. Pos Position - 1 n bytes ! - field delimiter - 1 byte CampKey: Campaign Key - 1 4 bytes ! - field delimiter - 1 byte CreativeKey: Creative Key - 1 4 bytes ! - field delimiter - 1 byte

Example: NXCLICK2=011DqxtrNX_www.realmedia.com/Samples/nx.html!U!T1!1!1; expires=Thu, 31-Dec-2020 23:59:59 path=/; domain=.realads.com All the numeric data in the cookies are 62 base. '0'-'9','a' -'z', 'A'-'Z' Cookies read (not managed) by 24/7 Open AdStream:
l

Custom Frequency Capping These Cookies are usually dropped via Creatives to use a feature like surround sessions. The names of these Cookies are usually chosen by Campaign managers. Campaign managers would typically include the code in the Creatives to check for the Cookies, drop a Cookie, increment the value of the Cookie, and so on.

- 78 -

Audience Attribute Targeting CookieName=RDB This cookie value may contain users Age, Gender etc. as populated by the registration database. See Cookie Targeting users guide for more details. This cookie is NOT dropped by 24/7 Open AdStream but is read by it to target to users profile.

Please refer to the Cookie Targeting portion of the online Help for information on cookie files and how to use them with 24/7 Open AdStream ad tagging. The Cookie Targeting online Help covers such topics as:
l l l l

Using the correct CNAME CNAME and Frequency Capping P3P issues Cookie limitations

- 79 -

Analytics oas_analytics.js
This file will be installed in Apache ServerRoot/Scripts/ directory.
//begin OAS Analytics var d=document; var OAS_rdl = ''; var OAS_CA = 'N'; if((d.referrer)&&(d.referrer!="[unknown origin]")) { if(d.referrer.indexOf("?") == -1) { OAS_rdl += '&tax23_RefDocLoc='+d.referrer.toString(); } else { var rdl=d.referrer; var rdl1=rdl.indexOf("?"); var rdl2=rdl.substring(0,rdl1); OAS_rdl += '&tax23_RefDocLoc='+rdl2; } } function cookie_check(ifd,ife) { var s=ife.indexOf(ifd); if(s==-1) return ""; s+=ifd.length; var e=ife.indexOf(";",s); if(e==-1) e=ife.length; return ife.substring(s,e); } function write_cookie() { var d=new Date(); var m=d.getTime(); document.cookie="OAS_SC1="+m.toString()+";path=/;"; var v=cookie_check("OAS_SC1=",document.cookie); if(v!=m.toString())return false; d.setTime(m+3600000); return true; } if(write_cookie())OAS_CA="Y"; //end OAS Analytics

- 80 -

Você também pode gostar