Sophisticated open source ad serving with phpAdsNew

A full-featured, sophisticated ad management system doesn't have to cost an arm and a leg. In fact, we found one for PHP that's open source software. This well-documented and powerful ad-serving system might just be right for you.

In a nutshell, phpAdsNew is a robust online ad unit management, publishing, and tracking system. It is fully buzzword-compliant: It's open source (licensed under the GNU general public license), PHP-based, and uses a MySQL database. The latest version (2.0) has a comprehensive image delivery system that handles virtually all known types of online ad units and placements, including rich media (Flash) units. It also includes a sophisticated targeting system complemented by a thorough statistics and reporting engine.

Usually the first thing that is suspect with most of the open source software that I use is the documentation. Not so with phpAdsNew—the documentation is extremely detailed and includes a 75-page administrators' guide, a 12-page developers' guide, and a 109-page user guide. It's actually a bit daunting, but then again, have you ever used a commercial ad engine such as DART? That’s the quintessential model of complexity, and the cause of more than a few of my online nightmares. The developers of phpAdsNew have gone to great lengths to provide the best level of free documentation that I have seen in an open source application.

You can download the latest version of the program as either a tarball or zipfile. Installation is mostly done through a browser-driven installer and the whole process only takes a couple of minutes. You’ll also need to create a database in MySQL for the program to use. The printed documentation also strongly suggests that you set up a scheduled task for regular updates and maintenance. I don’t really understand why this isn't set up automatically like everything else in the install script, but maybe that’ll show up in the next release.

Once installed, phpAdsNew is configured and customized via the Settings tab of the Administrator interface. All configurable options are grouped into seven sections: Database settings, invocation and delivery settings, geotargeting, banner settings, statistics settings, administrator settings, user interface configuration, and interface defaults. With the built-in bubble window help and the benefit of extensive documentation, you can pretty easily figure out what each of the options will do and what makes sense for your particular setup.

The first step in phpAdsNew usage is to add an advertiser and then setup a campaign for that advertiser in the system. Advertisers and campaigns are the fundamental units of an ad server. Available campaign settings include activation/deactivation date, impressions (called AdViews) and click-throughs (called AdClicks) remaining, and a priority setting that allows units to be distributed evenly or with a certain number per day.

Of particular note is phpAdsNew’s handling of Flash advertising units. Until recently (with Dart Motif and the establishment of the Macromedia Flash Advertising Alliance), it has always been more difficult to serve and track rich media units than traditional gif units.

Editor's note
CNET Networks, the publisher of, is a member of the MFAA.

PhpAdsNew makes the whole rich media serving process almost transparent. All you do is load in your .swf file just as you would a gif. The program includes a small, built-in Flash editor that lets you add the target URL and properly track click-throughs.

Once you’ve got your campaign and inventory setup it’s time to figure out the publishing side of the equation. At least such is the order suggested by the documentation. Personally, as a site developer it makes sense to me to at least consider the implications of the publishing zones first. That way, you’ll know where your ads will go and what sizes you’ll be supporting. Without that information in place first, how do you know what advertising units to set up?

Publishing is made up of "publishers" (sites that will be powered by the ad server) and then "zones" within those sites that will actually be displaying the media units from the campaign inventory. The delivery engine will handle all the standard IAB media unit sizes, interstitials, popups, text ads and custom unit sizes.

Editor's note
CNET Networks, the publisher of, is a member of the IAB.

Again there are a number of levels of customization and options to go through, all well documented. Finally you’ll generate the invocation code—a snippet that you’ll actually place on your site that will pull the ad units from the ad server (Listing A).

Statistics and reports
The success or failure of an online ad campaign is generally a measure of statistics—how many impressions and click-throughs did the unit and/or campaign generate? The phpAdsNew statistics and reporting engine is as configurable and comprehensive as the rest of the program. The documentation surrounding the statistics/reporting engine is included with the administrators' manual and not the user manual. The reports are generated as spreadsheets (.csv) and can be broken down into publisher, campaign, advertiser, global, and zone reports. Statistics are viewable online and are broken down into similar categories.

Having been victimized by the complexity and cost of commercial ad servers for years, I am just blown away by the power and user-friendliness of phpAdsNew. In terms of the production end of campaign management and ad serving, it does a thorough job. The configuration options allow a tremendous amount of flexibility to meet a wide range of requirements.

Where the program is lacking in comparison to some of the commercial ad servers is with its lack of integration with a billing system. However the program has multiple options throughout for setting up campaign and other limits; you can just manually correlate that to dollars in your own accounting setup.

This project benefits from its tremendous developer community support and is constantly being improved. If you don’t have to be using a commercial ad server (because you’re tied into a certain publisher/network), there is hardly a more useful tool to use than phpAdsNew.

Editor's Picks