Jump to content
David Z

Proposal: Change "Override" -> "Accelerated" Campaigns

Recommended Posts

I wanted to bring this up as possible change to the way RA handles Override (previously "Exclusive") campaigns. First, I don't really know why that name was changed, as it is not a very good description for this type of campaign. Basically, the difference between contract and override is that the former will try to evenly distribute delivery over a period of time, while the latter will maximize delivery at a higher priority -- either until an end date or until the number of impressions has expired (but not both). And that leads to my main point.

Today, it has become more popular, especially with social media site like FB and Twitter to have what are called Accelerated Campaigns. That is, you supply an end date and maximum budget, and they will attempt to fill inventory until the end date OR the budget has been reached. It does not guarantee all the impressions are delivered, but that's okay. You're only charged for what was delivered during the campaign flight dates. 

As we know RA Override campaigns are limited to choosing only one or the other -- an end date or maximum impressions -- but not both. I'm not sure why this restriction was ever imposed, since these exclusive campaigns are always executed prior to the contract or remnant campaigns. But yhis limitation has been a pain point for us and others I have spoken with.  The reason why a standard contract campaign is not suitable for replacing override campaigns is that often times you want to fill ALL inventory as soon as possible, and contract campaigns simply don't do that.

Digging into the code and RA's delivery algorithms, I found that both end date and capping are treated as mutually exclusive limitations. Meaning, the delivery and maintenance algorithms don't impose any restrictions whatsoever between the end date and impression limits. In fact, it turns out that this limitation is imposed only by the UI campaign form, not the backend algorithms. So once I was able to disable those form restrictions, I was able to create what I am now calling Accelerated campaigns which allow me to impose end dates along with maximum impressions, clicks. or conversions.

I think this feature would be very valuable to the rest of the community, and so I wanted to bring forth a conversation to see if this is something we should consider employing. What I am recommending is:

1. Change the campaign name from "Override" to "Accelerated". 

2. Remove the limitation in the front-end UI for the campaign form so that both end-date / delivery limits may be specified for Accelerated campaigns.

In the meantime, for those of you who are anxious to create Accelerate campaigns and want to hack the code and test it, it only requires two simple changes:

1. /www/admin/campaign-edit.php, around line 730, comment out the OX_CAMPAIGN_TYPE_CONTRACT_EXCLUSIVE or OX_CAMPAIGN_TYPE_OVERRIDE campaign types (depending on which version you are on. This code enforces unlimited delivery when an end date is specified.

        // If this is a remnant, ecpm or exclusive campaign with an expiry date, set the target's to unlimited

        if (!empty($expire) &&

            ($aFields['campaign_type'] == OX_CAMPAIGN_TYPE_REMNANT

                || $aFields['campaign_type'] == OX_CAMPAIGN_TYPE_ECPM

                /*|| $aFields['campaign_type'] == OX_CAMPAIGN_TYPE_CONTRACT_EXCLUSIVE*/) // REMOVE EXCLUSIVE

        ) {

            $aFields['impressions'] = $aFields['clicks'] = $aFields['conversions'] = -1;

        } else {

 

2. /www/admin/assets/js/ox.ui.js, around line 485, comment out the OX_CAMPAIGN_TYPE_CONTRACT_EXCLUSIVE or OX_CAMPAIGN_TYPE_OVERRIDE campaign types (depending on which version you are on. This JS code in function updateCampaignDateAndLimitsAndType() disables the end date when impression limits are specified. 

        if (campaignType == CAMPAIGN_TYPE_REMNANT || campaignType == CAMPAIGN_TYPE_ECPM

        /*|| campaignType == CAMPAIGN_TYPE_CONTRACT_EXCLUSIVE*/) // REMOVE EXCLUSIVE

    {

             $("#excl-limit-date-both-set, #low-limit-date-both-set, #ecpm-limit-date-both-set").hide();

 

Share this post


Link to post
Share on other sites

Hi @David Z,

1. We changed the "Exclusive" campaign type to "Override" because we felt it was a better name. "Exclusive" (to us) made it sound like the campaign would be totally exclusive, and that it would be the ONLY campaign that would display. However, that's not the case - delivery limitations and whatnot can mean that Revive Adserver may end up picking a banner from a different campaign to display. So, we felt that "Override" better described the campaign, in that these campaigns will override all other campaigns, when possible for them to do so.

2. Override campaigns only have the "end date" or "# impressions" (but not both, on a "whichever goal is met first basis") because that was how they were sold, back in the OpenX days, and no one has raised a need to change this - until now!

3. I think you are correct, but I would want to double check the code that starts Override campaigns, and stops them on the target being reached, just to make sure there's no conflict between ending the campaign based on the impression target, and then starting it again on the basis of the date target not being met.

Otherwise, this seems like a sensible idea to me - perhaps even the campaign name change makes sense, although I do feel it missed out a little on the idea that this campaign will override other campaigns, rather than just be faster delivering. 

Would you like to create a feature request in GitHub? You could even create a pull request for the code changes...

 

PS. This may be of interest: https://documentation.revive-adserver.com/display/DOCS/Banner+Selection+Mechanism

Share this post


Link to post
Share on other sites

Thanks for the follow up. We have been running these accelerated campaigns so far without any hitches. We have started, ended and extended the campaigns in many instances and saw no weird anomalies.

As I mentioned earlier, from what I was able to identify in the code (which seems to be corroborated in your blog) is that during maintenance, campaigns are first filtered by end dates, then impression limits, at which case the status flag is updated. The status flag is then checked during delivery.

So extending the end date or impressions will be updated during the next maintenance period.

I will look into a pull request.

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×