AdWords Tips

AdWords Dynamic Parameters: A Sneaky Way to Double Your CTR

By Jaclyn Jordan April 08, 2014 Posted In: AdWords Tips Comments: 8

Ad text relevancy is important to keeping your audience engaged, and in some cases can dramatically improve key metrics like click-through rate (CTR). Whether it’s advertising your latest promotion, lowest sale price, or resonating with an audience interested in up-to-date stock prices, there are many scenarios when switching up your ad text is not only valuable but imperative.

Constantly updating ad text has its challenges. Keeping up with these updates can be time-consuming, especially for large accounts. Additionally, ad text updates are not always timely as they need to go through the Google review process which can take up to 24 hours. When a last-minute promotion only lasts a day, the update to your ad text can become moot as it may never reach the SERP. A great workaround to update ad copy in a timely manner is through utilizing dynamic parameters.

Not only can dynamic parameters expedite ad copy updates, but they can also improve key metrics in your account. On average, we have seen CTR double in ad groups where we’ve tested dynamic parameter implementation. One of our success stories lies with a gold buyer. The price of gold changes daily, and can greatly impact a consumer’s decision as to whether or not to sell their gold. As a test, we started pulling the daily gold price into our ad copy with a dynamic parameter.

The results were fantastic. Over one month, we saw CTR increase from 0.84% to 1.75%; a 107% improvement. What’s even better is that we saw conversions increase by 300%, indicating that the quality of the traffic sent to the site was high, and that visitors were farther down the decision-making funnel.

How to Set Up Dynamic Parameters in AdWords

Dynamic Parameters can be set up using an AdWords script. For the non-developers out there, we broke down the process:

  1. Select the ad group(s) where you would like to implement dynamic parameters. I would recommend starting with one to ensure everything’s pulling through correctly.
  2. Create a text ad within the selected ad group around the dynamic text that you’ll be pulling into the ad. Something like this:

google dynamic parameters

The parameter is set up similar to dynamic keyword insertion. Put a default number into the param in the event that there is not a value to pull through the script (in the example above, the default value is 10).

  1. Create a live Google doc where you will store your data. The doc should have 3 columns (or 4 if you’d like to test 2 parameters). It should look something like this:

how to use dynamic parameters

The param1 info is where you will update your data. In this case, we are changing the dog collar price to $5.50.

  1. Next, set up the AdWords script. Within AdWords, go to Bulk operations > Scripts

adwords dynamic parameters

And click the +Script button.

  1. Copy and paste the following script (update the highlighted section with the full link to your Google doc created in Step 3):
/************************************************
* Update Ad Params by Ad Groups
************************************************/
var SPREADSHEET_URL = "https://docs.google.com/ ";
var SET_PARAM1 = true;
var SET_PARAM2 = false;
var DATA_RANGE = 'A:D'; // A - CampaignName, B - AdGroupName, 
                        // C - Param1, D - Param2
 
function main() {
  var spreadsheet = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
  var allSheets = spreadsheet.getSheets();
  var allData = [];
  for(var i in allSheets) {
    var sheet = allSheets[i];
    var data = sheet.getRange(DATA_RANGE).getValues();
    data.shift(); //get rid of headers
    allData = allData.concat(data);
  }
   
  var allDataHash = {};
  for(var i in allData) {
    var row = allData[i];
    if(row[0] === '') { continue; }
    var rowKey = [row[0],row[1]].join('~~!~~');
    allDataHash[rowKey] = { param1 : row[2], param2: row[3] };
  }
   
  var kwIter = AdWordsApp.keywords()
    .withCondition('CampaignStatus = ENABLED')
    .withCondition('AdGroupStatus = ENABLED')
    .withCondition('Status = ENABLED')
    .get();
   
  while(kwIter.hasNext()) { 
    var kw = kwIter.next();
    var campName = kw.getCampaign().getName();
    var adGroupName = kw.getAdGroup().getName();
    var rowKey = [campName,adGroupName].join('~~!~~');
    if(allDataHash[rowKey]) {
      if(SET_PARAM1) { kw.setAdParam(1, allDataHash[rowKey].param1); }
      if(SET_PARAM2) { kw.setAdParam(2, allDataHash[rowKey].param2); }
    }
  }
}
  1. Authorize your script, and then run it! You can set up a schedule for your script to run daily, weekly, etc. to fit your needs.

And, voila! The result will load with your ad modified for how it is queried on the SERP:

dynamic parameters example

Key Takeaways

In our tests, AdWords dynamic parameters have proven to be an extremely effective and easy to way to improve your ad performance. Dynamic parameters:

  • Keep your ad text timely without the need for approval
  • Ensure that your ads are as relevant as possible to users
  • Increase click-through rate, conversion rate and Quality Score

AdWords Performance Grader




If you enjoyed this post, please consider leaving a comment.

Comments

Tuesday April 08, 2014

Mike Peters (not verified) Said:

This sort of thing is exactly what I want to do with my eComm account. We change prices on items virtually daily so if I can set this up to run automatically it will save me tons of time.

I followed the guide here but it seems when I preview my script it runs indefinitely picking up hundreds of changes whereas it should just be changing one ad for the purposes of my test. Any idea why it would hang up like this?

Thursday April 10, 2014

Jaclyn Jordan (not verified) Said:

Hi Mike,

Thanks for testing out the script. The script attempts to change every ad in the adgroup listed if that ad contains param1. I've been trying to troubleshoot what you're seeing and cannot reproduce your error. The drop-off may be in the setup. Please feel free to reach out directly at jjordan@wordstream.com to help further diagnose the issue.

Thanks!

Wednesday April 09, 2014

Loren (not verified) Said:

This is great. I never knew how this was done before. Many thanks for posting.

Wednesday April 09, 2014

Sarmista Aun (not verified) Said:

Hi Jaclyn,

                Thanks for sharing the steps of setting dynamic parameters in AdWords. It is truely effective.

Wednesday April 16, 2014

Stephen Kapusta (not verified) Said:

Hey Jaclyn, 

This script is great, but it would be recommended to point out that only numerical values are supported.

Cheers

Tuesday June 17, 2014

Antoine (not verified) Said:

Hi there Jordan,

Very interesting post, concise and well writen thanks for posting! Do you know if it is possible to do this on Sitelinks level? Imagine having your 4 post links with dynamic prices for similar products... Nice :)

Cheers

Friday June 20, 2014

neil (not verified) Said:

Thanks indeed for this excellent script.

As Google docs aren't always 100% reliable is there a way to get an email if the script encounters errors when run?

Thanks!

 

Thursday July 03, 2014

Laura (not verified) Said:

Hi, 

Thanks for sharing it. I have just set up it and it works fine! ;-)

I think if you want to use also the param2 for some adverts, the script should change the line: var SET_PARAM2 = false 

Replacing false by true, but then, there are some "error" on the adverts withouth param2. 

Would be it ok? Do you know if there is any other way to do it?

Thanks!!!

Laura

 

Leave a Comment

Type the characters you see in this picture. (verify using audio)
Type the characters you see in the picture above; if you can't read them, submit the form and a new image will be generated. Not case sensitive.
 
Free Keyword Tool

Get thousands of relevent keyword suggestions - more,
faster, free!

Free Keyword Niche Finder

Discover profitable pockets of keywords for your
business.

Free Negative Keyword Suggestion Tool

Identify wasted spend before it happens and increase
your paid search ROI.

Contact Us | Company | Support | Site Map | Trademarks | Privacy Policy © 2007-2014 WordStream, Inc. All rights reserved.