Promotions come and go. They can provide big boosts in sales and interest but short turnarounds and odd hours can make them hectic to manage. Thankfully, there are a few ways you can streamline the process to lessen the burden.


Labels make organization easy. They are easy to create, modify and apply to any part of your account. They can also serve as reminders or reference points for your intentions. Was a set of keywords part of a test, did you recently change the bids by a flat 20%, or is the current ad test for the headline of the description lines?

You can use labels to outline when the promo runs, what products if impacts, what the promotional deal is, etc.

From a functional standpoint, labels simplify the filters in your account. With a few clicks, you can check the performance as well as segment them from your primary advertising efforts. When the promo ends, you can quickly use the labels to shut down the promotional ad copy and re-enable the originals.

Once you have your labels in place, you have two avenues to handle the ads. You can use automated rules or scripts.

Automated Rules

Automated rules are a simple tool to schedule future changes to an account. In this example, we’ll make it easy and start with two rules. One rule will pause the original ads and one rule will enable the promo ads.

First, we need to filter for the non-promo ads. For now, we’ll assume all our enabled ads will be swapped for promo ads. Of course, if your situation only calls for some campaigns or ad groups, adjust accordingly.

Image of promo filter

Once we have the ads we need, we select them by checking the radio box on the upper left corner of the ad pane.

Click “Automate” and select “Enable Ads When.”

Image of rule

On the next screen we’ll establish the logic. Your selection will carry over from the previous step so you do not need to reselect ads. Select the date and hour you’d like to make the change.

Image of promotion rule

Go ahead and change the name of the rule to something more descriptive. You don’t want to have a bunch of “pause ads” and “enable ads” in there without a clue to what they do. Preview the rule before you save to make sure everything goes as planned. Once you’ve checked, save the rule and you are good to go.

Now select the same ads and create a new rule. This ad will pause the ads at the end of the promo. Go to “Automate” but select “Pause ads when.”

Then, repeat the steps from before to set up the ads to pause at the end of the sale. Once in place, repeat both rules for your non-promo ads.

In a few minutes your ad controls are automated. This means no need to sit around on the day of the sale to manually control the ads and no need to sit around at midnight to turn them on.


Using a script is similar to the automated rules. Again, we will utilize the labels but rather than using the built-in rules, we’ll use a custom script to do all the work for us.

When it comes to basic examples like this, there isn’t much of a benefit one way or another in choosing scripts or rules. As you move into more difficult use cases, scripts are more flexible when it comes to making multiple adjustments. Rules require one rule per action while a script can take multiple actions in one run.

I’ve included a sample script for you to try on your own.

// Enable Promo Ads
// For More details check out the corresponding post on PPC Hero,
function main() {
  // Labels - The script will use these to know which ads to pause and which to enable
  var promoLabel = "City Pair page";
  var standardLabel = "CTC 1a";
  //Ad Counts = This will count the number of paused and enabled ads. Before we start, we want to set it to 0
  var pausedAds = 0;
  var enabledAds = 0;

  // These select the ads with promo and standard labels
  var promoAdSelector ="LabelNames CONTAINS_ALL ["+"'" + promoLabel + "'"+ "]").get();
  var standardAdSelector ="LabelNames CONTAINS_ALL ["+"'" + standardLabel + "'"+ "]").get();
  // Pause Standard Ads
  while (standardAdSelector.hasNext()){
    var ad =;
  // Enable Promo Ads
    while (promoAdSelector.hasNext()){
      var ad =;

Logger.log(pausedAds + " current ads were paused");
Logger.log(enabledAds + " promo ads were enabled");  


For those of you interested in learning how to write your own, this is a great educational opportunity. The methods we’ll use are straightforward and don’t require any sort of tricks or in-depth knowledge of the language.

If you’d like to go this route, I’d recommend looking through the sample, then removing the code and piecing it back together based on the comments in the file.

Back to the script. We’ll go to Bulk Operations and move to the scripting interface.

Image of bulk operations option

From there, we’ll create a new script. New scripts come with example code in place. Delete all of this and replace it with the code from the script above.

Inside the script are two variables for the label names. One is for the promo ads and one for the non-promo ads. Change those to whatever labels you want to use and make sure you keep the quotation marks in place. Now preview the script to make sure it grabs the right ads. Save the script and we’ll move on to scheduling.

Jump back to the main scripts page. To the right of the Run button is the option to schedule.

Open it up and insert the date. You may want to keep the “e-mail if my authorization expires” enabled if your promo is way ahead in the calendar or you plan on working on many scripts between now and the launch.

Wrapping Up

With almost no effort at all you’ve automated your promotions. The only downside to the automation is that the schedule executes within the hour. An 8 AM target may run at any time during the hour. If you need a promo to start at exactly 8 AM, you might be stuck doing it by hand. If you don’t mind ads turning on or off a few minutes before or after the promotion, you are good to go.