Revive is the most widely installed self-hosted ad server, descended from OpenX and phpAdsNew. People leave it for three reasons: they are tired of maintaining a PHP application on the public internet, the interface is showing its age, or they want conversion tracking that survived the death of third-party cookies.

Whatever the reason, the migration is mostly mechanical.

Map the vocabulary first

Revive's model translates almost directly:

ReviveElsewhere, usually
WebsiteSite
ZonePlacement
AdvertiserAdvertiser
CampaignCampaign
BannerCreative
Invocation codeThe tag / snippet

The one real difference is that Revive links banners to zones individually, whereas most newer systems book a campaign onto a placement and let its creatives rotate. Slightly less control, considerably less clicking.

What comes across, and what does not

Comes across: advertiser names and contacts, campaign dates and weights, banner images, zone names and sizes, click-through URLs.

Does not come across: your historical statistics. Impression and click history is tied to the system that recorded it. Export a CSV before you cancel anything — you will want last year's numbers when you renegotiate a sponsorship.

Also worth knowing: Revive's hosted edition does not let you export your account at all. If you are on that, your self-hosted install is the only copy you control.

Migrate without downtime

Do not switch over in one move. Run both.

  1. Rebuild your inventory in the new system while Revive keeps serving. Sites, placements, advertisers, campaigns. For a typical small publisher this is under an hour.
  2. Upload creatives to the new system. Keep the old ones in place.
  3. Add the new tag to your site alongside the old invocation code, but do not place any new slots yet.
  4. Switch one slot. Replace one Revive zone's invocation code with the new placement. Watch it for a day — impressions arriving, clicks recording, the right creative showing.
  5. Switch the rest once you trust it.
  6. Leave Revive running for a fortnight before you decommission, so you have something to compare against.

Tell your sponsors, briefly

One line in the monthly report is enough:

I've moved to a new ad server this month, so the report format looks different. Your delivery is unchanged and the totals reconcile.

Skipping this makes a mid-month change in reporting look like something went wrong.

Expect the numbers to differ slightly

Two systems will never agree exactly on impressions. Different bot filtering, different counting points, different timezone boundaries. A few percent is normal.

If the gap is large — more than about 10% — look for a real cause: a slot present in one system and not the other, lazy loading enabled on one side, or a different definition of what counts as an impression.

What to check before committing