More on OpenX Features

This post is also available in: Russian


In this post, we continue our overview of the OpenX ad server. This time, let us consider the basic features of this product in depth. When preparing and launching our campaign, we should focus at advertising formats, targeting options, and statistics. For all these aspects of online advertising, OpenX has implemented the most demanded features and more specific options. Moreover, it offers a flexible developer framework to extend the server functionality and meet the customer specific requirements.

Advertising Formats

The concept of advertising format in OpenX includes ad display to site visitors, and other features such as advertising graphics location and the data needed to communicate with external systems (if this format is specific to an external banner network), etc.

The latest OpenX standard package supports the following advertising formats:

  • Image banner may be a static image, an animated GIF or an SWF clip with complex animation. The graphics can be stored on the OpenX server or an external OpenX server or database. Exact dimensions in pixels are set for a banner, so it could be unambiguously associated with the related text.
  • Text banner is a common text without markup to which OpenX automatically adds a link to the advertiser’s site. A well-known analog of this format is Google text ads. More specific text banner design can be tuned by the host website designer for the whole site or each ad space.
  • HTML banner allows you to specify arbitrary HTML code to be added to the advertising space of a specific format. Similarly to the image banner, it has a clearly defined size. You can use this format to embed advertising code of external networks, such as Google AdSense. In this case, the benefit of OpenX is more flexible impression management. In addition to the banner network banner features, it provides targeting and statistics. Based on this advertising model you can, for instance, share one banner space between several banner networks and assign priorities to them.
  • Linear video ad is embedded into your video player to interrupt the main video. To use this format, your video player must support video ads and the IAB’s VAST standard. This format is supported by such widely used Flash Video players as Flowplayer and JW Player. Also, you can use the set of Open Video Ads libraries to support VAST ads in your own video player. You can also assign to the video a banner of another type displayed on the same page during video playback.
  • Overlay is another ad format that can be used by a video player. It poses the same requirements as the video ad. This is an ad block overlaid on the video area and displayed on top of the video without interruption. An overlay can contain graphics in the following formats: text, HTML, image, or Flash object.

By using only the standard OpenX formats you can achieve impressive results. Still, sometimes you may need to add a completely new type of banner or improve an existing one. This would in no way pose a difficulty for a competent PHP developer, as OpenX has a modular architecture. For instance, the standard OpenX banner formats have already been implemented as plugins, so you can take them as a basis for your own format.


With targeting, you can maximize the benefit from your advertising space by limiting the audience of each particular advertising message to a clearly defined group of visitors potentially interested in your ad. In OpenX, the targeting concept is more broadly defined. Targeting means any rules affecting the decision to show the ad or not by a specific request.

The standard OpenX package supports the following types of targeting:

  • By the visitor technical details, i.e. the type of browser used by the visitor, the domain name and IP-address of the request source, the preferred language selected in the browser settings, the Operating System and user agent string. Such data is obtained from the request headers and user agent strings converted to a usable format by the phpSniff library.
  • By geographical location: city, state, country, continent. OpenX uses a geolocation database to identify geo details based on the customer IP address in the MaxMind GeoIP format.
  • By the site pages viewed by a visitor: the current page originating the ad request, the page that has referred to the current page, source site section and a variable. The latter two parameters are dynamically substituted by the site scripts into the ad code. These parameters enable targeting by any types of data located on the site script site, and can be used to set the targeting rules that do not exist in the basic OpenX distribution.
  • By the ad request time: dates, days of the week, hours.

Similarly to the advertising formats, targeting in OpenX is implemented using an extensible plugin architecture. This way the developers can set their own types of restrictions based on the external sources or databases which are more relevant to the website features and context. For example, video portal context is its content, genres, and the rights holder.


Statistics are collected by a special logging script. It is called by a user browser at ad impression and click-through. This script has a modular design and can invoke various logging plugins. Each plugin saves to a database its part of impression data in the format needed for reporting.

Now, how is the statistics stored in the OpenX database? At the first glance, the logging solution should save each advertising impression/click to a separate database row. This would be very convenient in terms of statistics querying. But it is obvious that even a site of average popularity has to processa very large number of impressions, so the stats database may proliferate immensely. So how can we efficiently store the impression data and save them to the database quickly without occupying much space but making it easily available for reporting? For this purpose, the data in OpenX is stored not as a single row per impression, but as sets of fields containing “time to one hour”,” banner”, “ad space”and “impressions/clicks” attributes. This way, you can centrally store the statistics for an unlimited number of ad servers and ad impressions, without immense database growth as the traffic becomes more intensive.

A disadvantage of this approach is that in order to make some sophisticated partitioning not provided initially in the data scheme, you will need to modify the statistics table design, and the old data may become unusable. If you need to make custom partitioning for reporting (for instance, for geo zones, site sections, etc.), you can use the principle outlined above to write a simple logging plugin and create a new database table containing the data sets meeting your reporting needs.

Integration with external systems

There are various options and aspects of OpenX integration with the external systems, depending on the customer specific needs. Here are some of them:

  • Integration with the billing system (for example, 1C) for billing and settlements with advertisers and ad space owners. Essentially, this involves data transfer from the OpenX statistics database to an external system. This can be done in different ways: an external system can connect to the database directly and or it can use a scripting layer, generating the necessary data in the format required by an external system.
  • To integrate with an external ads management system , you can use OpenX entity management API. You can create ads both with the administration interface and external APIs.
  • Integration with an external authentication system may be needed to authenticate the management interface users. To do this, you should write an authentication plugin.
  • Integration with the website content management system. You may need it to obtain the data necessary for ad targeting and reports generation. For this purpose, you can create custom plugins. The required data is obtained via any interfaces offered by a content management system or directly from its database.


The basic free and open version of OpenX supports all the main features to manage ads display on the Internet. By its open and modular architecture, OpenX provides virtually unlimited scalability and flexibility to meet a variety of requirements. Compared to the alternative of banner networks and hosted solutions, OpenX offers a huge advantage.

Leave a Reply