Ad text optimization is a great example of an area of PPC automation where the machines won’t get very far without the help of PPC pros. Machines need ongoing support from humans to deliver results. Automations can easily pick winning and losing ads through statistical analysis and do even more sophisticated things like predicting the best ad to show to individual users— they do this based on patterns discerned by machine learning models. However without compelling pieces of ad creative to experiment with in the first place, the machines won’t get very far.
This is very different from other PPC automations like bid management where you have the option to set it up once and then mostly forget about it. To be clear, I think a set-it-and-forget-it approach to bidding is the wrong strategy but it is nevertheless possible. Ad management on the other hand can’t be automated to the same extent as bid management because the inputs that the machine requires are constantly changing and take a lot more time from the human PPC experts to set up and maintain.
Fortunately, even the manual process of crafting new messages can be helped with tools that give advertisers ready access to insights such as what elements of ad text have worked well previously. I recently shared a Google Ads script that deconstructs ads into their components — like headline and description — and reports aggregate metrics for commonly used phrases. This month I’m sharing a script that uses a different method to deliver additional insights about historical ad performance. The script shared at the end of this post is based on a popular script first shared by Daniel Gilbert and performs an N-Gram Ad Text Analysis.
What are n-grams and why are they useful in PPC
There’s much more to them, but for the purpose of this script, an n-gram is a word sequence where ‘N’ denotes the number of words in the sequence. A unigram is a single word, a bigram is two words, a trigram is three, and so on. In PPC, we can use n-grams to analyze the performance of commonly found word sequences. For example, we can find data for strings of words that appear frequently throughout many keywords or search terms. By aggregating data, we can more easily pick up on performance trends in accounts.
Because we can restrict an n-gram analysis to as many or as few words as we want, we can use it to go one level deeper than we did with my previous script that looked at the performance of entire headlines or description lines. That means we can find the specific calls to action, unique value propositions, or offers that are driving results for campaigns.
In other words, whereas last month’s script can tell us which is a great performing variant of headline 1, this script can look inside headline 1 to help us determine if a sequence of words like “$5 off $49” or “10 percent off” usually delivers a better result.
Scripts can be edited to work with your own strategy
If you’re a frequent reader of scripts-related posts on this site, you’re probably already familiar with n-grams. That’s because contributor Daniel Gilbert wrote an n-gram script that analyzes search queries and shared it a few years ago.
But that script only works with search terms and not ads. Perhaps deconstructing ads was less important before Responsive Search Ads came along, but now it seems particularly interesting to have this sort of analysis available as part of a PPC toolkit. So I decided to use this opportunity to illustrate a point I’ve long been making about the power of scripts: You can leverage the work done by others and with just a few tweaks get it to do exactly what you need. So I started with Daniel’s code and changed the inputs from queries to ad texts to gain an entirely new insight.
Split ad text components like headline 1 into n-grams to get insight into what variations of a call-to-action drive results.
If you’re curious about how difficult it was to make this change, the main modification I had to do was to change the AdWords Query Language (AWQL) statement to pull in data from the ad performance report instead of the search query performance report. Just with this change, the script would have been able to solve the basics of my use case. But to make it work better I added a few new user settings as well as some extra code to concatenate headlines and descriptions so that a piece of text that spans 2 lines would still be counted as an n-gram.
You can copy-and-paste this code into your own Google Ads account (it only takes a few lines of modifications if you want to use the code in an MCC account rather than a child account).
Opinions expressed in this article are those of the guest author and not necessarily Search Engine Land. Staff authors are listed here.