copy hound Guides Free tools
KOEN
Open the app · free
copy houndGuides

How to manage ad copy: a five-step system built on appeals

Ad copy doesn't go missing — the reason it was written and what it did when it ran does. Here is a five-step system that files copy under appeals instead of campaigns, splits the idea from its channel versions, and closes every line with a dated verdict.

Updated 2026-08-25 · 7 min read · manage ad copy · ad copy management · creative management · ad copy workflow

Most people hear "manage your ad copy" and picture a tidier folder. But the text isn't what disappears — it's sitting in Ads Manager and will still be there next year.

What disappears is why that line was written, and what happened when it ran. Without those two, an archive is a list of sentences, and a list of sentences helps nobody.

Where your copy actually lives right now

Count the places one team's copy is scattered across.

  • Slack threads. Twelve alternates, then "let's go with the third one," then the thread scrolls out of reach.
  • A Google Sheet with tabs named copy_final, copy_final_v2, FINAL_use_this_one. Nobody can tell which one shipped.
  • The ad platform UI, which keeps what ran and nothing about what lost, or why.
  • The designer's files, where the shipped headline is only a text layer in a PSD.

Three symptoms follow, all expensive in ways no invoice shows.

You can't answer "have we tried this line before?" So you write something new to be safe, and occasionally run an angle a third time that already failed twice.

The same copy gets rewritten every quarter. March's line is reinvented in September from a blank document. The cost isn't the copywriting, it's making the same decision twice with no memory of the first.

A departing teammate takes the reasoning with them. Their replacement reads the lines but not the judgment behind them, so they start over.

The unit worth managing is not a sentence. It's sentence + reason it was written + what it did. Drop any one of the three and the record is useless six months later.

Step 1 — File copy under an appeal, never under a campaign

The default is campaign folders: spring_2026, mothers_day_promo, bfcm_wave_2. Fine while the campaign is live, useless six months later.

The reason is mechanical. To find copy in a campaign folder you must recall the campaign name. But what's in your head is never "mothers day promo" — it's "that comfort angle we ran." Storage key and retrieval key don't match, so you don't retrieve.

Campaigns end. Appeals recur. As long as you sell the same product, "comfort," "battery life" and "value for the price" are live next year too. Build drawers around the part that repeats.

Campaign foldersAppeal structure
Top levelmothers_day_promoAppeal: comfort
Underneathcopy_final_v2.xlsxPrimary copy → channel versions → results
How you find itRecall the campaign nameGo straight to the appeal
The question in 6 months"What was that promo called?""What have we tried on comfort?"
What accumulatesFolder countCopy history and verdicts per appeal

If "appeal" is doing fuzzy work on your team, settle the definition first in what an ad appeal is. The rest depends on everyone meaning the same thing by it.

Keep 8–12 appeals open at a time, and decide which one a new line belongs to before you polish it. A line that fits none of them is either a new appeal or something merely nice.

Step 2 — Separate the primary copy from the channel versions

Stack ten lines flat under one appeal and you're back where you started. Split once more.

  • Primary copy. One line stating the idea as precisely as you can say it, with no length constraint.
  • Channel versions. Everything derived from it to fit a spec — Kakao Bizboard, Meta feed, Naver GFA.

Take "comfort" on wireless earbuds. The primary copy: "Earbuds that don't hurt after three hours." Everything else descends from it.

LayerConstraintThe line
Primary copynoneEarbuds that don't hurt after three hours
Kakao Bizboard~13 charactersThree hours, no ache
Meta feed bodyfirst 125 characters carry itYou stop taking them out between meetings. We redesigned the surface that touches the ear
Naver GFA titleshortComfortable to wear all day

The failure I see most often: treating the shortest channel's version as the canonical line. The 13-character Bizboard version wins, gets promoted to the top of the appeal, and every later version is written by stretching those 13 characters back out. Nuance you cut to fit a format can't be recovered by inflating what's left.

Always work long to short. Per-platform limits are collected in ad copy character limits, with a free character counter for when you're cutting.

Step 3 — Record the reason, not just the text

Two columns produce almost all the value in a copy log: what changed versus the previous version, and what you expected it to do. Without them you have a list. With them, every number that comes back answers a question you asked on purpose.

VersionCopyWhat changed vs. previousWhat we expected
v1Earbuds that don't hurt after three hoursfirst versionFind out if comfort sells at all
v2Three back-to-back meetings, no acheduration → specific situationOffice workers read it as about them
v3We widened the inner contact surface by 2mmclaim → proofConvince people who don't believe comfort claims

Suppose v2 comes back with a lower CTR than v1. Without column three the conclusion is "v2 was worse," which teaches nothing. With it: "narrowing to a situation shrank the audience faster than it raised relevance" — and that travels to every other appeal.

The expectation needs no number. "Saves should go up" is enough. What matters is writing it before the line runs. Written afterwards, every prediction is correct.

Step 4 — Give every creative an ID that survives the platform

One line becomes several creatives, uploaded into different platforms where they acquire different names. To trace a number back to a sentence you need an identifier you own, not one a platform generated.

The convention is small — appeal, copy version, channel, sequence — and the only rule is never changing it once assigned. Naming schemes and carrying an ID through UTMs are covered in tracking creatives by ID. The point here: without an ID, step 5 has nothing to attach to.

Step 5 — Close the loop with a verdict

The last place this breaks is that copy never ends. A line runs, the campaign stops, the line sits in the sheet. Nobody deletes it, nobody reuses it. A year later: 200 rows, no idea which are alive.

So every piece of copy eventually gets one of three marks:

  • Stop. We don't run this again. One line saying why.
  • Keep. Stays in rotation at current budget.
  • Scale. Raise budget, extend to another channel, or derive new copy from it.

Always date the verdict. "Stopped" alone re-opens the argument in six months. "2026-03-14 — stopped. 0.4% CTR over three weeks; v3 on the same appeal did 1.1%" ends it permanently, including with the person who wasn't there.

Thresholds and how long to wait before judging are in the creative review workflow.

The weekly and monthly rhythm

None of this survives as a one-time setup. It survives on two cadences.

CadenceWhat you doRealistic time
Weekly (Friday)Log last week's numbers on live copy; mark the obvious stop / keep / scale calls30 min for 20–30 creatives
Monthly (last day)Archive stopped copy, derive 2–3 new lines from anything marked scale, refresh the per-appeal summary1 hour

Skip the weekly pass and verdicts pile up until the monthly session is too big to face, at which point it stops happening. Weekly handles only the easy calls. If something is ambiguous three weeks running, it isn't ambiguous — it's a stop.

The highest-value hour here is the monthly derivation step. Deriving new copy from an appeal that already won beats opening a new one on almost every measure, and it's the part teams skip in favor of starting fresh.

What this looks like in a tool

A spreadsheet gets you further than tool vendors admit. Appeals as rows, copy underneath, a verdict column and a date carries you through step 3.

It breaks at exactly one place: when per-channel variants and per-period performance both need to roll up to the appeal. Three primary lines with three channel versions each is nine rows; attach monthly numbers to each and no flat sheet totals by appeal. Build the pivot and the source sheet becomes something nobody wants to edit.

copy hound handles that one join. Appeals sit in a primary/derived tree, channel copy specs hang underneath with character-limit checking for Kakao Moment, Naver GFA and Meta, and creative IDs, dated verdicts and per-period numbers roll up to the appeal. If your spreadsheet works, keep it.

FAQ

If copy is filed under appeals, how do I look at it by campaign?

Make campaign a tag, not a folder. Appeal is the storage key, campaign the view filter. The other way round buries every line when its campaign ends.

What do I do with copy that doesn't clearly belong to any appeal?

Keep one "unsorted" bucket. Treat more than about ten unsorted lines as a signal that an appeal is missing — reviewing the bucket monthly usually reveals two or three clusters.

Isn't writing a version for every channel a lot of extra work?

You only write versions for channels you actually run. Two per primary line is typical. Prove the line on one placement first, then derive versions as you widen distribution.

At what point does a team need this?

Roughly when monthly creative volume passes 20, or when you've advertised the same product for more than two quarters. If either is true, someone has already asked "did we try this before?" and not gotten an answer.

Somewhere to actually run this

copy hound builds your appeals up as assets, keeps an improvement trail through derived appeals, and rolls per-channel creative performance back up to the appeal. Runs in the browser — nothing to install.

Start free