Update on 19th July, 2018: This script now supports Responsive Search Ads as well.
Update on 29th Nov, 2018: This script now enables assigning a label to poor performing ads.
Update on 29th January, 2019: This script now supports 3rd Headline and 2nd Description for Expanded Text Ads.
All ads are not created equal. When you create multiple ads in an ad group, there are certain hypotheses you go with. You may wish to emphasize on call to action in one ad. You may highlight different USPs in different ads. You may want to talk about the offers on certain products and services. You want to put those ads out there see which ones resonate with your audience the most. You may not know which ads will perform the best or how much better the best ad(s) can perform compared to other.
In an AdWords account, running poor performing ads can drag your performance in variety of ways.
- Your budget is being wasted on ads that are not bringing enough customers.
- Winning ads are starved of impressions. Better ad is right there, but is not being enough chance.
- If your competitors are running their best ad, they can raise their bids and in turn raise your CPCs as well.
Having multiple ad copies for A/B testing and rotating the ads delivery is a common practice to get better ads being shown frequently. But, making sure that a methodology is in place to pause the bad ads is another practice that you should follow. While there is no benchmark set for the number of ad copies that must run in an ad group, knowing which ones are eating away major chunk of your ad budget without delivering is worth knowing.
We have come up with an AdWords script to help you analyze your account for the winning and poor performing ads.
This script pulls ads performance data from your AdWords account and recommends one of the following – (a) You should pause the ads that are performing poorly. (b) You can pause all ads except the ones that are proven to be the winners. (c) You can reactivate some of your better performing ads. The ads will be highlighted as per following color code
When the script is complete, it will create a folder named “Ads Performance Reports” in your Google Drive. The drive will contain the result sheet which has same name as your AdWords account’s name along with the Customer ID for that account.
Right at the top, you will get the summary of the recommendations. The summary shows an extrapolation of improvement you can achieve if you run only your best ads. (Click on the image to view bigger, easily readable image.)
After the summary, you will see recommendations for each ad group. The ad that delivers highest number of conversion for given impressions is chosen as the winner. Statistical significance is also shown for the winning ad.
Taking Action on the Results
The script will not make any changes to your account. Once you run the script, you will get a result sheet as shown above. Now, you can use the AdWords web interface or the AdWords Editor to pause the ads that are not performing well.
The aforementioned is no longer applicable. Make a note of the following update
Update on 29th Nov, 2018.
This script now has the option to assign a label to poor performing ads. Advertisers can filter the ads using this label, compare performance of the labeled ads with other ads and if the labeled ad is indeed performing poorly, pause it or take any other necessary action.
Steps to review the recommendations.
- Go to the “Ads” tab in your account.
- Filter the Ads with the label created for poor performing ads.
- Sort the ads in descending order of conversions (or any other metric important for you, such as Ad Spend, Clicks, Impressions)
- For each ad, visit the ad group in which that ad exists.
- Check all the ads in that ad group.
- If the labeled ad is performing poorly to other ads in the ad group, you may pause the ads.
- You need to repeat this task.
- We strongly recommend you to verify that each ad identified as poor performing is indeed performing poorly and you want to pause it. Pausing ads in bulk, without verification, may result in delivery or performance issues.
How to use the Ad Performance AdWords Script?
Now that you know what the AdWords script can do, let’s talk about the script. You can get this script here. If you are in a hurry, run this script and see the results in your Google Drive in the folder named “Ads Performance Reports.” You can schedule this script to run every week or every month so that it becomes part of your routine. If you are scheduling the script, you should change the SEND_EMAIL_ALERT variable.
For those who want to understand more about this script, here we go. Here are the variables that you can change to customize it to your requirement.
- REPORTS_FOLDER_PATH: This is the name of the folder that gets created in your Google drive. By default the name is ‘Ad Performance Report’. If you wish to change the name you can do so here.
- MAX_ADGROUPS :This variable specifies number of top ad groups to be included in the report. By default, this report is generated for top 100 ad groups in the account, by spend.That is, the report is generated for top 100 ad groups, by spend. You can increase this limit, if you are running a large account. From our experiments, we have see that it takes approximately one second to process one ad group. Increasing this limit will make the script run longer. A script can run for a maximum of 30 minutes, which means, about 2000 ad groups will be processed at a maximum.
- DATE_RANGE: You can use some pre-defined ranges like LAST_30_DAYS or LAST_14_DAYS. By default, the script will get the data for last 30 days.
- USE_CUSTOM_DATE_RANGE: If you want a particular date range to be used then, set this flag to “true” and modify the START_DATE and END_DATE to indicate the date range. The date format is “yyyy-mm-dd” aka “Year-Month-Date.” For example, if you want a report for 3 months from 1st January, 2017, the START_DATE would be “2017-01-01” and END_DATE would be “2017-01-31.” This is useful if you want to use historical data for better accuracy.
- SEND_EMAIL_ALERT: If you wish to receive an e-mail alert for any new recommendation then set the flag to true which is by default set as false. This is useful if you have running script at regular interval via a schedule.
- EMAIL_RECIPIENT: If the above variable is set to true, then you need to add the e-mail id on which you wish to receive the alerts about new recommendations.
- IGNORE_PAUSED_CAMPAIGNS, IGNORE_PAUSED_ADGROUPS, IGNORE_PAUSED_ADS: These flags indicate to ignore paused campaigns, ad groups and ads. By default, campaigns and ad groups are set to true i.e. all the paused campaigns and ad groups are ignored, however, ads are set as false i.e., all the paused ads with impressions are looked into too.
- MIN_CONFIDENCE_LEVEL_TO_DECLARE_WINNER_AD: The default value is set as 0.9 or 90% to define a winning ad, if you wish to alter this value you can do so here. If you want a higher confidence of, say 95%, set the value to 0.95.
- IS_MCC_ACCOUNT : This flag is to indicate whether you will be running this script at MCC-level. By default, it is set to false. Change it to “true” if you want to use for all the linked accounts in your MCC account. The results for each account will be stored in a separate sheet. Be careful, if you have many many accounts.
- FILTER_ACCOUNTS_BY_LABEL : If your MCC account has tons of linked accounts, you may not want to run this script for all the accounts. In that case, turn this flag to “true” and then specify the label with ACCOUNT_LABEL_TO_SELECT variable. Only the accounts with the specified label will be analyzed to generate this report.
Update on 19th July, 2018: This script now supports Responsive Search Ads. Since Responsive Search Ads are still in Beta, we strongly advise you run them along with Expanded Text Ads in each ad group. BTW, check out our Responsive Search Ads Preview Tool.
Once again, here is the link to Ads Performance AdWords script.
Feel free to send us an email (support AT karooya.com) if you have any queries for this AdWords script.
If you are looking for more, here are the AdWords scripts published by Karooya.