• Home

  • Business growth

  • Marketing tips

Marketing tips

12 min read

How to target thousands of locations with one ad campaign and one landing page

Learn how one business connected Google Ads and Unbounce to target a global audience.

By Datis Mohsenipour · December 3, 2021
Hero image with Google Ads and Unbounce logos connected by dots

Like many others before us, Outback Team Building & Training has found great success in creating geo-targeted Google Ads campaigns to generate leads for our services. But effectively running these campaigns at scale came with a big cost: time.   

Here, I'm going to share the workaround we found: using dynamic keyword insertion in Google Ads combined with dynamic text replacement on Unbounce landing pages. With this tactic, we were able to target thousands of locations using a single ad campaign and a single landing page. It gave us back our precious time and also increased our click-through rates (CTR) and conversion rates while reducing our cost per acquisition (CPA).

But before we get into the what and the how, let me tell you a little bit about how we got there. 

How we got started with geo-targeted ad campaigns 

We'd seen great results for geo-related organic search queries to our site, so we knew that we could tap into a similar opportunity with Google Ads. We started experimenting with manually creating location-targeted ad campaigns in Google Ads

Phase 1 

We started off our efforts by targeting only 10 locations. Each campaign included the name of the location we were targeting in the ad copy and linked to a generic landing page

Result: Compared to our generic campaigns, the geo-targeted campaigns had a higher CTR and slightly lower CPA. 

Phase 2 

We created location-specific landing pages for each of our 10 geo-targeted campaigns and split-test sending visitors to the generic landing page against the location-specific landing pages. 

Result: As expected, our conversion rate increased, and our CPA decreased even more. 

Phase 3 

The results in phase 2 panned out exactly as we had hoped. For added assurance, we tested running 10 more location-targeted campaigns. 

Result: Our geo-targeted campaigns consistently outperformed our generic campaigns—significantly. 

The importance of message match in Google Ads 

The exercise above made one thing abundantly clear to me: message match is a key factor for improving Google Ads performance. And don't just take my word for it. Other folks, like the team at Moz, agree (in their case, message match in Google Ads increased conversions by over 200%.)  

What is message match?  

Message match is the practice of aligning your ad copy and landing pages to the search queries your ads are appearing for. That means that when someone sees your ad, it's relevant to what they just searched for. And if they click your ad, they get to a landing page that matches that search intent too. 

Message match will help you: 

  1. Increase click-through rates (CTR)

  2. Increase quality scores 

  3. Reduce average cost-per-click (CPC)

  4. Increase conversions 

  5. Reduce cost per acquisition (CPA)

  6. Increase return on ad spend (ROAS)

As marketers, we have a tendency to lean toward creativity, but in my experience, Google Ads isn't the place for this. Clarity is key.  

How to quickly create location-targeted campaigns at scale 

Through our geo-targeted campaign experiments, we confirmed that targeting specific keywords, with ad copy and landing pages that closely matched the search queries of our users, led to higher performance. Great!  

But...also not great. How could we do this at the scale we wanted? We had a couple of options, but neither of them was excellent. We could:

  1. Create hundreds of geo-targeted campaigns in Google Ads with location-specific ads that linked to a generic landing page. But that would only result in slightly increased performance over our generic campaign. 

  2. Do the same as the first option but also create hundreds of location-specific landing pages for each respective campaign. Doing so would undoubtedly improve our performance, but it would take hundreds of hours and be a nightmare to manage. 

Neither of the options above was feasible, but I knew there had to be a better way—there always is. After many hours of research, I learned about the power of dynamic keyword insertion (DKI) in Google Ads and how to leverage it in tandem with dynamic text replacement on Unbounce landing pages. It looked like I'd be able to achieve geo-targeted Google Ads campaigns (with message match) at scale. 

What is dynamic keyword insertion in Google Ads?

Dynamic keyword insertion (DKI) is a feature in Google Ads that lets you dynamically adjust your ad copy to match specific customer search terms. Basically, you tag a generic keyword in your ad's headline and description, and that keyword will change if a customer uses a keyword in their search query that you specified to dynamically appear. 

Dynamic keyword insertion (DKI) use cases 

I know you're probably here to learn about dynamically inserting locations, but it's worth knowing that there are other equally awesome use cases for DKI in Google Ads. 

  • Descriptive keywords. Let's say you're managing ads for a company that sells deli sandwiches. While monitoring your campaign's search terms, you notice that folks used terms like "the best," "affordable," and "tasty" in their searches. You can use DKI to append those terms to your ad copy. So when someone searches "affordable deli sandwiches near me," your ad will automatically add "affordable deli sandwiches" to the headline and description. 

  • Specific products. Now imagine you're managing ads for a company that sells running shoes. You can use DKI to insert each product variety into your ads to match the search. For example, "trail running shoes" or "treadmill running shoes."

  • Keyword synonyms. At Outback Team Building & Training, we offer a variety of team-building activities. There are loads of synonyms people use to find services like ours, so we can use DKI in our Google Ads for terms like "team bonding activities," "team building games," or "team morale games." 

  • Competitors. Most folks running Google Ads campaigns will bid on their competitors' names as well. In most cases, you can use dynamic keyword insertion for competitor campaigns. (Just check the fine print because some company names are trademarked, which means you can't use them in your ad copy. And you should never mislead people into thinking your ad is for a different brand.)

  • Location (the reason you're here). You can use DKI in Google Ads to insert location-based keywords into your ad copy. The locations will populate in your ads if a user includes it in their search query or if they search for your keyword without including the location name but Google recognizes their location. 

Mistakes to avoid when using DKI in Google Ads 

So we know that DKI is effective, but I still made a bunch of mistakes when I started out. Here are a few common mistakes to keep your eye out for as you set up your campaigns.

  • Starting too big. I get it. The possibilities are limitless. But if you bite off too much with your first campaign, you'll likely run into issues. Start small, check for errors, evaluate your results, then plan your next move.

  • Grammatically incorrect search queries. Vet and specify which keywords you want to dynamically populate in your Google Ads copy. In the case of grammatically incorrect search queries and keyword misspellings, message match is not your friend.  

  • Exceeding character limits. In some cases, Google Ads will allow you to exceed the specified character limits within a headline or description line when using DKI. But don't count on it. When you're creating your list of dynamic keywords to insert in your ads, think ahead to account for character limits. 

  • Incorrect DKI code. Be diligent about typing your DKI codes correctly. Dynamic keywords involve using brackets and parentheses. Misspelling your DKI code will have the opposite effect of what you were hoping to achieve and can really harm consumer trust in your business.

  • Irrelevant landing pages. If you decide to use one campaign with various ad groups for each of your products, make sure that each group links to a relevant landing page. For example, if I had a DKI ad campaign that contained ad groups for different subcategories of our service—like virtual trivia games, virtual ice breaker activities, and virtual escape rooms—each of the ad groups would link to a separate landing page that matched.

  • Grammatically wonky content. Make sure your landing page's dynamic text replacement doesn't mess up the sentence structure of your landing page's text. For example:  

    • DKI = "in New Jersey"  

    • Default landing page heading = "The Best Team Building Activities in North America"

    • Text to dynamically replace = "North America" 

    • Dynamic result = "The Best Team Building Activities in in New Jersey"  

How to set up dynamic location insertion in Google Ads

A few things to consider before diving in: 

  • Will your new DKI ad campaign conflict with existing geo-targeting campaigns? If yes, make note of the existing geo-targeted campaigns you have running, and exclude those locations from your new campaign when setting it up. 

  • Will this method even work for you? In theory, dynamic location insertion in Google Ads should generate favorable results. But what if it doesn't? Start by running a campaign experiment against a geo-targeted campaign that you're already running. If you don't have an existing campaign, start by testing a generic version against a dynamic location campaign.   

Ok, let's do this.

1. Download Google's geotargets CSV file  

Head on over to the Google Ads developer portal page for geo-targeting, and download their latest geotargets CSV file. Here, you'll find a hefty list of every single location you can target using dynamic location insertion in Google Ads.  

2. Customize your geotargets CSV file 

Next, you'll need to filter down the locations you're looking to target in the spreadsheet.

1. Click the first cell in the range > Insert > Table.

2. Once you've converted your range to a table, filter results by clicking the dropdown arrow and specifying your values on one or more column(s). A few examples: 

  • Country Code: filter results to only show U.S.

  • Target Type: filter results to only show "country" listings or "city" listings 

  • Canonical Name: filter results to only show results within a specific state 

  • You could even go as far as adding a column to the table with a formula to count the number of characters in the "keyword" column, then filter out values that exceed 25 characters.

3. Once you've filtered for your targets, copy the remaining values, and paste them to a new CSV file. When copying, be sure to include the headers and all values, and when pasting, use the paste special function to just paste the values. 

4. Edit the column headings. Change the "Canonical Name" column heading to "Target Location," and change the "Keyword" column heading to represent the values in this column. These are the values you'll be using in your dynamic ads (e.g., if you filtered out cities, call it "City"). 

5. Make sure you save your new file as a CSV.

3. Upload your geotargets CSV to Google Ads  

Your file is ready to go. Upload it to your Google Ads account: 

  1. Select Tools & Settings > Business Data.

  2. Click the blue + button.

  3. Select Ad customizer data for text ads from the dropdown menu. 

  4. Name your template, and upload your CSV file. (I recommend keeping this short because you'll be referencing the CSV name when adding DKI to ads. We call ours "Geo."

  5. Click Apply.

How to create your dynamic location-based Google Ads campaign 

After you've uploaded your dynamic location insertion spreadsheet to Google Ads, you can start using dynamic values in your new or existing campaigns. First, a question: do you anticipate wanting to collect comparative data between different geo-locations? 

Let's say you're planning to create a geo-targeted dynamic campaign that targets all cities within the United States. The results for every city will appear within this one campaign. If you anticipate wanting to compare results between multiple cities, you should consider creating separate campaigns for each city you're looking to target and report on. This will make it much easier to collect and report on the data you're looking for. 

Either way, here's how to create your dynamic location-based campaign.

1. Create your campaign 

Start as if you're creating a standard campaign in Google Ads. Once you've set up your campaign, ad groups, and keywords, you can start populating the content within your ads. 

2. Add dynamic location keywords into your ads 

You'll use syntax to populate your dynamic location-based keywords in your ads. It's simple to do but easy to mess up—so be careful. Here's an example of what your keyword insertion might look like: 

In {=Geo.City:Your City}

And here's how to do it.

  1. Select where you'd like to add your dynamic keyword (you can add it in headlines or description lines).

  2. Type {=Geo. This will reference the CSV you uploaded. If you named it something else, type that instead, still with a period at the end, e.g., {=Locations. if you named the template "Locations."

  3. Type the column heading you used for your keywords in your CSV spreadsheet (in our case, we used City).

  4. Add a colon (:) directly after your column heading name (no spaces). 

  5. Directly after the colon, type the default text you'd like to appear if your dynamic keyword cannot appear (in our case, we used Your City).

  6. Add a closing bracket (}) directly after your default text (again, no spaces in between).

  7. Check the result in the Google Ads preview to ensure that you're seeing a city name in the place where you inserted your dynamic value.

This is how your syntax should look in the ad editor: {=Geo.City:Your City} 

3. Add your dynamic value as a UTM parameter 

Before saving your ad, you'll need to complete another critical step: inserting your dynamic location keyword into the parameter of your ad's URL. This step is required in order to dynamically replace text on your landing page. Here's how to do that: 

  1. Define the value that you'll reference on your landing page. In our case, we'll be using city.

  2. Insert the UTM value into Final URL suffix under the Ad URL options dropdown in the ad editor. In our case, we would insert ?city=. You can use whatever value you want, but I highly recommend using the same value you used for the keyword column heading in the CSV file you created. 

  3. Add your dynamic location keyword value to the Final URL suffix after your UTM parameter. In our case, we would insert {=Geo.City:Your City}, so the final result would look like this: ?city={=Geo.City:Your City} 

  4. Test your URL using the Test button the bottom of your ad editor.

Note: If you have a campaign-level tracking template in place, you'll need to adjust your settings, as they may conflict with your ad-level tracking URL. 

What is dynamic text replacement?

Dynamic text replacement lets you populate different text on your landing pages depending on UTM values specified in your URL. It's an easy way to create stronger message match on your landing pages without having to create multiple pages for each variation of your keywords. 

At Outback, we use Unbounce, but other landing page builders may have this functionality too.

Dynamic text replacement in Unbounce

As always, before we dive in, here are a few tips:

  • You can dynamically replace text anywhere on your page—don't limit yourself to titles.

  • As long as you're passing UTM values from your ads, you can use dynamic text replacement for other DKI types—not just location. 

  • You can pass UTM values to hidden form fields in your Unbounce landing page for additional reporting options in your CRM. 

  • Always be mindful of the text you're dynamically replacing in your landing page and how the values you're referencing might impact the sentence structure. 

Now here's how to dynamically replace text on your Unbounce landing page. 

  1. Highlight the text you'd like to dynamically replace in Unbounce. In our case, the text we want to dynamically replace is Your City.

  2. Select the Action tab nested within the Properties tab. 

  3. Click Dynamic Text.

  4. Add the UTM tag you'd like to reference in the URL parameter field. In our case, we would enter city—this is the value we used when setting up our UTM tag in our Google Ad. 

  5. Enter the default text you'd like to appear if a dynamic value is not recognized. In our case, we would enter Your City.

  6. Test your landing page by copying the link to your landing page and appending a test UTM value to the URL (e.g., https://yourlandingpage.com/?city=Chattanooga).

  7. Your landing page should show "Chattanooga" in place of the default value you specified. 

Outback Team Building & Training results 

Whew. That was a lot. But it's worth it! To give you a sense of how worth it, take a look at the results we experienced at Outback Team Building & Training. Compared to our generic campaigns, here's how our geo-targeted campaigns performed: 

Geo-targeting without DKI vs. generic campaigns 

CTR: 29% increase 👍 

CPC: 15% decrease 👍 

CPA: 20% decrease 👍 

ROAS: 121% increase 👍  

Geo-targeting with DKI vs. generic campaigns

CTR: 71% increase 🚀 

CPC: 42% decrease 🚀 

CPA: 63% decrease 🚀 

ROAS: 396% increase 🚀  

And not only have our DKI campaigns performed better than our already-successful geo-targeting campaigns, they've also saved us hundreds of hours on the manual implementation, creation, and management of campaigns, ads, and landing pages. 

That's a wrap!   

While it might require some extra elbow grease to get started, the results, time savings, and ease-of-scalability will pay off in the long run. Just be sure to start small, be meticulous, and test your results—and you'll be golden. 

This was a guest post from Datis Mohsenipour, who oversees marketing operations at Outback Team Building & Training. Outback offers in-person and virtual employee engagement solutions to corporate groups around the world. Want to see your work on the Zapier blog? Read our guidelines, and get in touch.

Get productivity tips delivered straight to your inbox

We’ll email you 1-3 times per week—and never share your information.

mentioned apps

Related articles

Improve your productivity automatically. Use Zapier to get your apps working together.

Sign up
A Zap with the trigger 'When I get a new lead from Facebook,' and the action 'Notify my team in Slack'