
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
- Open Google Ads Editor and click Get recent changes so you’re working with the latest version of the account.
- Select the campaigns you want to copy.
- 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:
| Setting | Kept | Changed |
|---|---|---|
| Campaign type and networks | Search, Google Search only | – |
| Budget and bidding | Daily budget, Maximize clicks with a CPC limit | – |
| Schedule and language | Monday to Friday, English | – |
| Conversion goals | Purchase and Begin checkout | – |
| Locations | The same countries | Added two countries with strong organic traffic |
| Keywords | Broad match | New list based on Search Console data |
| Ads | Three responsive search ads | All text rewritten |
| Sitelinks and callouts | Same types | New 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 data | Why it doesn’t fit | Negative 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 does | disable, prevent |
| “copilot openai api key” | They’re looking for Microsoft or GitHub Copilot | api key, microsoft, github |
| “acf tutorial”, “what is acf” | Learning ACF, not looking for a tool | tutorial, what is, how to use |
| “acf elementor”, “acf woocommerce” | Other integrations the plugin doesn’t cover | elementor, 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:
| Item | How many | Maximum length |
|---|---|---|
| Headlines | Up to 15 | 30 characters |
| Descriptions | Up to 4 | 90 characters |
| Display path | 2 parts | 15 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:
- 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.
- Rename the campaign and ad groups so nothing clashes with the originals.
- Set the campaign status to Paused.
- Add an Account column with your customer ID (in the form 123-456-7890) on every row.
- 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
- In Google Ads Editor, choose Account → Import → From file… and select the file.
- 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.
- Click Keep, then Post to send the changes to Google Ads.
- 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.

