How to Copy a Google Ads Campaign in Google Ads Editor

How to Copy a Google Ads Campaign in Google Ads Editor

Codeable.io

When we set up a Google Ads campaign for ACF Copilot, we didn’t start from a blank screen. We already had two Search campaigns running, for Media Library Recovery and Search & Replace for Elementor, with settings we were happy with. So we decided to copy a Google Ads campaign setup we trusted: we exported both campaigns from Google Ads Editor, rewrote the ads and keywords for the new plugin, and imported the result as a new, paused campaign.

This post walks through that workflow step by step, including how we used Search Console data to pick keywords and the four import problems we ran into, with the fix for each one.

Why Copy a Campaign Instead of Starting Over

A Search campaign has a lot of settings that are easy to get slightly wrong: networks, bid strategy, bid limits, ad schedule, languages, locations, location targeting method and conversion goals. When you copy a campaign that already works, all of those stay identical, and the results of the new campaign are easier to compare with the old ones.

That leaves the parts that should be different for a new product: the keywords, the ads, the sitelinks and the callouts.

What You Need

  • Google Ads Editor, Google’s free desktop app for Windows and Mac.
  • At least one existing campaign whose settings you want to reuse.
  • The landing page for the new product, with its features, pricing and help articles.
  • Optional but useful: a Google Search Console export for the product’s site.
  • A spreadsheet app, or a short script, to edit the exported file.

Two Ways to Copy a Google Ads Campaign

Copy and Paste in Google Ads Editor

The quickest way: select the campaign in Google Ads Editor, press Ctrl+C, then Ctrl+V. Editor creates a full copy with its ad groups, ads, keywords and assets, which you then rename and edit in place. This works well when only a few things change.

Export, Edit and Import

Export the campaign to a file, edit the file, then import it back as a new campaign. The whole campaign is in one file you can review, check and share before anything touches your account. We used this method because we were rewriting almost all of the text.

Step 1: Export the Campaigns

  1. Open Google Ads Editor and click Get recent changes so you’re working with the latest version of the account.
  2. Select the campaigns you want to copy.
  3. Choose Account → Export → Export selected campaigns (CSV).

The file ends in .csv, but it’s actually tab-separated text in UTF-16. Excel and Google Sheets open it without problems. If you edit it with a script, read it as UTF-16 with a tab delimiter, and save it the same way.

Step 2: Decide What to Keep and What to Change

Here’s what we kept from the two original campaigns and what we changed for ACF Copilot:

SettingKeptChanged
Campaign type and networksSearch, Google Search only–
Budget and biddingDaily budget, Maximize clicks with a CPC limit–
Schedule and languageMonday to Friday, English–
Conversion goalsPurchase and Begin checkout–
LocationsThe same countriesAdded two countries with strong organic traffic
KeywordsBroad matchNew list based on Search Console data
AdsThree responsive search adsAll text rewritten
Sitelinks and calloutsSame typesNew text and URLs
Status–Paused until reviewed

There was one thing we deliberately didn’t copy. In both original campaigns, the ads that sent people straight to a free download page had been disapproved. In the new campaign, the ads point to the plugin page and the Pro download page, and the free download is only linked from a sitelink.

Step 3: Use Search Console to Pick Keywords

ACF Copilot used to have its own domain, and its old Search Console property still had 16 months of search data. In Search Console, open Performance → Search results, set the date range, and click Export. You get separate files for queries, pages, countries and devices.

Use that data in two ways.

Keywords: Searches That Already Get Clicks

Searches that already bring clicks from organic results are good candidates for paid keywords. For ACF Copilot, the best were “acf cleaner” (about 9.6% click-through rate), “acf copilot” and “acf ai”. All three became keywords, and all three appear word for word in the ad headlines, which helps Google see the ads as relevant to those searches.

Negative Keywords: Searches That Don’t Fit

This turned out to be the more useful part. Most of the old site’s impressions came from searches that have nothing to do with buying the plugin. With broad match keywords, Google can show your ads for similar searches too, unless you exclude them with negative keywords.

Search in the dataWhy it doesn’t fitNegative keywords
“acf blocks disable live preview refresh on field change”These people want to stop ACF’s block preview from refreshing, the opposite of what LivePreview doesdisable, prevent
“copilot openai api key”They’re looking for Microsoft or GitHub Copilotapi key, microsoft, github
“acf tutorial”, “what is acf”Learning ACF, not looking for a tooltutorial, what is, how to use
“acf elementor”, “acf woocommerce”Other integrations the plugin doesn’t coverelementor, woocommerce

The countries export is worth a look too. It showed a strong click-through rate from the Netherlands and Italy, which weren’t in the original campaigns, so we added both.

Step 4: Write the New Ads

Responsive search ads have strict character limits, and the import fails if any text is too long:

ItemHow manyMaximum length
HeadlinesUp to 1530 characters
DescriptionsUp to 490 characters
Display path2 parts15 characters each
Sitelink text–25 characters
Callout text–25 characters

A few things that helped:

  • Fill every slot. Our original ads used between 5 and 11 headlines, and Google rated their ad strength Poor or Average. Each new ad has all 15 headlines and 4 descriptions.
  • Give each ad one angle. One ad covers the plugin as a whole, one covers the Pro features, and one focuses on the free version and LivePreview.
  • Use the searches people actually type. “ACF Cleaner” and “ACF AI” appear as whole phrases in the headlines.
  • Only claim what the product does. No ratings, review counts or results you can’t back up.
  • Count characters automatically. A short check caught one description that was 91 characters, one over the limit.

Step 5: Prepare the Import File

Keep only the rows for the new campaign, then go through this list:

  1. Remove every ID column (Campaign ID, Ad group ID, Ad ID and so on). If they stay, Editor can treat the rows as changes to the original campaign.
  2. Rename the campaign and ad groups so nothing clashes with the originals.
  3. Set the campaign status to Paused.
  4. Add an Account column with your customer ID (in the form 123-456-7890) on every row.
  5. Make every sitelink and callout text unique in the whole account, not just in the new campaign.

Our final file had 59 rows: the campaign, one ad group, 11 locations, 14 keywords, 15 negative keywords, 3 ads, 8 sitelinks and 6 callouts.

Step 6: Import, Review and Post

  1. In Google Ads Editor, choose Account → Import → From file… and select the file.
  2. Review the proposed changes. Every row should be an addition. If any row shows up as an edit to something that already exists, stop and find out why.
  3. Click Keep, then Post to send the changes to Google Ads.
  4. Open the campaign in the Google Ads web interface, add images, check everything once more, and enable it.

Import Errors We Hit and How We Fixed Them

“A required account column is missing”

The export we made didn’t include an Account column, but the import needs one to know which account each row belongs to. Add an Account column with your customer ID on every row. You’ll find the ID at the top of the Google Ads web interface, or under Account → Manage in Editor.

“Open in other window”

Google Ads Editor only lets one window work on an account at a time. If the account is open in another Editor window, you can’t select it in the import dialog. Either run the import from the window that has the account open, or close that window first.

“Row matches more than one existing item”

Editor matches sitelinks by their link text. Our account already had several sitelinks called “Features”, “Pro Version”, “Buy it now” and “Documentation” from the other campaigns, so Editor couldn’t tell which one each new row meant. The fix is text that exists nowhere else in the account, such as “ACF Copilot Features” or “Pricing & Licenses”.

The One That Doesn’t Show an Error

This one is easy to miss. Our “Try It Out For Free” sitelink matched exactly one existing sitelink, from the Search & Replace campaign. Because there was only one match, Editor raised no error, and it would most likely have changed that existing sitelink’s URL to the ACF Copilot download instead of creating a new one. Unique text avoids this too, and it’s why the review step matters: look for any row marked as an edit.

Checklist Before You Turn It On

  • The new campaign is paused and has its own name.
  • The import review showed only additions, no edits.
  • Every final URL and sitelink URL opens the right page.
  • The budget isn’t shared with another campaign.
  • Negative keywords are listed on the campaign.
  • Images are added, since image rows don’t copy cleanly through the export.
  • A week after launch, check the Search terms report and add new negative keywords for anything that doesn’t fit.

Conclusion

Copying a Google Ads campaign with Google Ads Editor keeps all the settings you’ve already tested and leaves you free to spend your time on the keywords and the ads. Search Console data tells you which searches to target and, just as important, which to exclude. Before importing, add an Account column and give every sitelink unique text, and the import goes through cleanly.

If you build WordPress sites with Advanced Custom Fields, take a look at ACF Copilot, the plugin this campaign was for. It adds LivePreview, Ctrl+K field search and code snippets for free, and Pro adds AI field generation and a cleaner for leftover field data.

Leave a Reply

Your email address will not be published. Required fields are marked *