Your One-Stop Source for the Latest PPC News
Your One-Stop Source for the Latest PPC News

Google Partners Promotional Offer Alert Script for MCC

An illustration of a shield with Google colors labeled "FREE" beside a calendar showing 20, set on a blue background with gear and calendar icons—perfect for highlighting a Google Partners promotional offer.
An illustration of a shield with Google colors labeled "FREE" beside a calendar showing 20, set on a blue background with gear and calendar icons—perfect for highlighting a Google Partners promotional offer.

Are you managing multiple Google Ads accounts under an MCC and worried about missing the deadline for Google Partners promotional offers?

Google recently changed how promotional credits are applied. Instead of being added automatically, partners now need to assign them manually to eligible accounts. That gives you more flexibility to choose the offer that fits best the specific client’s budget, but it also creates a new operational risk: missing the short eligibility window of 20 days.

To help stay on top of this, I created a Google Ads MCC script that checks which accounts recorded their first impressions yesterday and sends you an email reminder so you can assign the offer to them.

Let’s go through how it works and how to set it up.

Why This Script Matters

For many agencies and PPC teams, promotional offers were something you could largely rely on Google to handle in the background.

That has now changed.

Partners now need to manually select and redeem the promotional offer for each eligible account.

This change gives you more control over which offer to apply, but it also means one more thing to monitor manually inside your workflow.

This script helps you catch those newly active accounts early, so you can take action before the opportunity is gone.

How This Google Ads Script Helps

This MCC-level script scans the accounts in your manager account and looks for accounts whose first day with impressions was yesterday.

If it finds any, it sends you an email with:

  • Customer ID
  • Account name
  • First impression date

It also includes a short reminder of how to assign the promotional offer in the Google Partners interface.

How the Script Works

The logic is simple:

  1. The script runs at MCC level
  2. It loops through all linked Google Ads accounts
  3. For each account, it queries the earliest date with impressions
  4. It compares that date with yesterday’s date
  5. If they match, the account is added to an alert list
  6. An email is sent with all matching accounts

The best setup is to schedule it daily in the morning, so you get notified soon after a newly launched account starts serving impressions.

Important Warning Before You Use It

This script is helpful, but it has one important limitation.

It detects accounts based on the first day they receive impressions, not based on the account creation date.

That means this approach works best only when campaigns go live quickly after the account is created.

Google does not expose account creation date anywhere, neither in Google Ads Scripts nor in the API, so there is no better solution currently. That means this approach works best only when campaigns go live quickly after the account is created.

If you wait more than 19 days to launch your campaigns, it will already be too late.

Why 19 days?

Because the script checks whether the first impressions happened yesterday. If an account gets its first impressions too late, by the time the email arrives, the 20-day promotional offer window may already be over.

Here is the script:

/**
 * MCC script: Google Partners - Promotional Offer Alert
 *
 * Detects Google Ads accounts whose FIRST day with impressions was yesterday
 * and emails a reminder to apply Google Partners promotional credits.
 *
 * SETUP:
 *   1. Set EMAIL_TO below to your email address.
 *   2. (Optional) Set TEST_DATE to a specific date (e.g. '2026-03-24') for testing.
 *      Leave empty '' for production use.
 *   3. Paste into your MCC: Tools > Bulk actions > Scripts.
 *   4. Authorize, preview once, then schedule daily (e.g. 7:00 AM MCC timezone).
 *
 * Note: Google Ads does not expose the true account creation date.
 * This script uses "first day with impressions" as the best available proxy.
 */

var EMAIL_TO = 'you@example.com'; // <-- SET YOUR EMAIL
var EMAIL_SUBJECT = '[ALERT] Google Ads - New accounts eligible for Google Partners promotional credits';
var TEST_DATE = ''; // e.g. '2026-03-24' for testing, '' for production

function main() {
  var tz = AdsApp.currentAccount().getTimeZone();
  var targetDate = TEST_DATE || Utilities.formatDate(
    new Date(Date.now() - 24 * 60 * 60 * 1000), tz, 'yyyy-MM-dd');
  var today = Utilities.formatDate(new Date(), tz, 'yyyy-MM-dd');

  var matches = [];
  var accountIterator = MccApp.accounts().get();

  while (accountIterator.hasNext()) {
    var account = accountIterator.next();
    MccApp.select(account);

    var cid = account.getCustomerId();
    var name = account.getName() || '(no name)';

    try {
      var query =
        "SELECT segments.date FROM customer " +
        "WHERE segments.date BETWEEN '2010-01-01' AND '" + today + "' " +
        "AND metrics.impressions > 0 " +
        "ORDER BY segments.date ASC LIMIT 1";

      var rows = AdsApp.report(query).rows();
      if (!rows.hasNext()) {
        Logger.log(cid + ' | ' + name + ' | no impressions found');
        continue;
      }

      var firstDate = rows.next()['segments.date'];
      Logger.log(cid + ' | ' + name + ' | first impression: ' + firstDate +
                 (firstDate === targetDate ? ' <-- MATCH' : ''));

      if (firstDate === targetDate) {
        matches.push({ id: cid, name: name, firstDate: firstDate });
      }
    } catch (e) {
      Logger.log(cid + ' | ERROR: ' + e);
    }
  }

  Logger.log('---');
  Logger.log('Target date: ' + targetDate);
  Logger.log('Matches: ' + matches.length);

  if (matches.length === 0) {
    Logger.log('No new accounts with first impressions on ' + targetDate + '.');
    return;
  }
  sendEmail(matches, targetDate);
}

function sendEmail(accounts, targetDate) {
  var rows = accounts.map(function(a) {
    return '<tr><td style="padding:6px 12px;border:1px solid #ddd;">' + a.id +
           '</td><td style="padding:6px 12px;border:1px solid #ddd;">' + a.name +
           '</td><td style="padding:6px 12px;border:1px solid #ddd;">' + a.firstDate +
           '</td></tr>';
  }).join('');

  var html =
    '<p>The following Google Ads accounts had their <b>first impressions on ' + targetDate + '</b>. ' +
    'Consider applying a Google Partners promotional credit while they are still eligible.</p>' +

    '<table style="border-collapse:collapse;border:1px solid #ddd;font-family:Arial,sans-serif;font-size:13px;">' +
    '<thead><tr style="background:#f4f4f4;">' +
    '<th style="padding:6px 12px;border:1px solid #ddd;text-align:left;">Customer ID</th>' +
    '<th style="padding:6px 12px;border:1px solid #ddd;text-align:left;">Account name</th>' +
    '<th style="padding:6px 12px;border:1px solid #ddd;text-align:left;">First impression date</th>' +
    '</tr></thead><tbody>' + rows + '</tbody></table>' +

    '<h3>How to apply a promotional offer</h3>' +
    '<ol>' +
    '<li>Go to the <b>Partners programme</b> tab.</li>' +
    '<li>Find the <b>Promotional offers</b> card and then click <b>View details</b>.</li>' +
    '<li>On the <b>Assign promotions to eligible accounts</b> page, find the <b>Account</b> column to ensure that you\u2019re applying your promotional credits to the correct account.</li>' +
    '<li>Under the <b>Promotion</b> column, click the <b>Select</b> drop-down menu and choose which promotional credit you want to apply to that account.</li>' +
    '<li>A confirmation dialogue box will appear with the promotion terms and conditions. Review the promotion terms and conditions, then click <b>Redeem</b>.</li>' +
    '</ol>' +

    '<p><b>WARNING:</b> Promotional credits are available to Premier Partners and Partners for eligible accounts within 20 days of the advertiser\u2019s account creation. ' +
    '<b>If it took longer than 20 days from account creation to prepare and activate the campaign, the account is no longer eligible.</b> ' +
    'See <a href="https://support.google.com/google-ads/answer/15329625">Google Ads Help</a> for full details.</p>';

  MailApp.sendEmail({
    to: EMAIL_TO,
    subject: EMAIL_SUBJECT + ' (' + accounts.length + ')',
    htmlBody: html
  });
  Logger.log('Sent alert for ' + accounts.length + ' account(s).');
}

How To Set Up the Script

Ready to begin? Here’s how to get it running:

1. Open your MCC account

Log into the Google Ads manager account where you want to monitor linked accounts.

2. Go to Scripts

Navigate to Tools > Bulk actions > Scripts.

3. Create a new script

Paste the code into a new script.

4. Update the email address

Replace this line:

var EMAIL_TO = 'you@example.com';

with your own email address.

5. Authorize the script

Because the script reads account data and sends emails, Google Ads will ask you to authorize it.

6. Run a preview

Run the script once to make sure there are no errors.

7. Schedule it daily

Set it to run every morning, for example at 7:00 AM in your MCC timezone.

That’s it. Once scheduled, it will automatically check for accounts whose first impressions happened the day before.

Conclusion

Manual promotional offers mean more control, but also more responsibility.

This script helps you stay one step ahead by flagging newly active accounts before it’s too late.

Set it up, let it run daily, and turn a manual task into an automated reminder.

Share this article
0
Share
Shareable URL
Read next