Campaign Naming Generator & Naming Convention Builder
Turn campaign details into a consistent name in four formats at once, then export the convention doc so everyone on the team names campaigns the same way.
This campaign naming generator takes the details you already have — brand, campaign, channel, audience, region, quarter, year — and returns four versions of the same name: an uppercase standard name for ad platforms, a shortened one for tight character limits, a lowercase hyphenated value ready for utm_campaign, and a readable version for briefs and decks.
Naming is the least glamorous decision in campaign setup and the one that decides whether next quarter's report takes ten minutes or two days. Once three people name campaigns three different ways, no filter, pivot or dashboard groups them correctly again. Toggle which fields belong in your pattern, check the generated names against the quality warnings, then export a markdown convention doc your team can actually follow.
Campaign details
Your campaign names appear here
Enter a campaign name to generate four naming formats instantly — add brand, channel, quarter, and more to make them fully self-describing.
Need more than a free tool? Ask Kestry Chat Agent about your campaign strategy, marketing questions and customer workflows.
What Is a Campaign Naming Convention?
A campaign naming convention is an agreed pattern that says which pieces of information go into a campaign name, in what order, and in what format. It turns a name from a label somebody wrote into a record somebody else can read.
{YEAR}_{QUARTER}_{BRAND}_{CAMPAIGN}_{CHANNEL}_{CAMPAIGN_TYPE}_{AUDIENCE}_{REGION}_{PRODUCT}_{IDENTIFIER}The point of a fixed order is that names become parseable. When the quarter is always in position two and the channel always follows the campaign, you can split a name on underscores in a spreadsheet and get columns back — which means you can group, filter and pivot on dimensions your ad platform never gave you as fields.
A convention is not the same as a long name. Adding every field you can think of produces something nobody types correctly and platforms truncate. The useful test is whether each field would ever be something you want to filter or group by. Budget owner, no. Region, almost certainly. Campaign objective usually belongs in the brief rather than the name, which is why this tool collects it for the convention doc but keeps it out of the name itself.
How to Create a Campaign Naming Convention
- List the questions you actually ask of reports. If you regularly ask how Q3 performed in the UAE versus Saudi Arabia, quarter and region belong in the name. If you have never once filtered by campaign type, it does not.
- Fix the order and never change it. Chronological fields first (year, quarter) so names sort correctly in an alphabetical list, then identity (brand, campaign), then delivery (channel, type), then targeting (audience, region, product).
- Choose a closed vocabulary for every field that has one. Channel should be a dropdown, not a free-text box — Meta, not FB or Facebook or facebook-ads depending on who is filling it in.
- Decide casing and separators once. This tool uses uppercase with underscores for platform names and lowercase with hyphens for UTM values, which keeps the two contexts visually distinct while staying mechanically identical.
- Handle the optional fields explicitly. Say in writing that a blank field is omitted entirely, so nobody invents NA, NONE, or a double underscore to hold the position.
- Test the pattern against three real campaigns from last quarter before adopting it. Patterns that look elegant in the abstract fall apart on the campaign with two audiences and no region.
- Publish it where links get built, and set a start date. Retroactively renaming live campaigns usually costs more history than it recovers.
Campaign Naming Examples
Take one campaign: Acme is running a summer sale on Meta in Q3 2026, aimed at existing customers in the UAE. Here is the same campaign in each of the four formats this generator produces.
| Format | Output | Where it goes |
|---|---|---|
| Standard | 2026_Q3_ACME_SUMMER_SALE_META_EXISTING_CUSTOMERS_UAE | Campaign names in Meta Ads Manager, Google Ads, LinkedIn Campaign Manager |
| Short | 2026_Q3_ACM_SUMMER_SALE_META | Ad set and placement names, and anywhere the character limit is tight |
| UTM-friendly | 2026-q3-acme-summer-sale-meta-existing-customers-uae | Straight into utm_campaign on every link for this campaign |
| Human-readable | 2026 · Q3 · Acme · Summer Sale · Meta · Existing Customers · UAE | Briefs, status updates, slides, anything a stakeholder reads |
The short format keeps only year, quarter, brand, campaign and channel, and abbreviates the brand to its first three characters. It exists because ad set names, audience names and creative names live inside a campaign that is already named in full, and repeating the whole string at every level is how you end up with names that are unreadable in a picker.
Every field passes through the same normalisation regardless of format: accents are stripped, anything that is not a letter or digit becomes the separator, and repeated separators collapse. Summer Sale becomes SUMMER_SALE in the standard name and summer-sale in the UTM one, so the two are always mechanically derived from each other rather than typed twice.
Why Naming Breaks Reporting
Reporting tools do not understand that Summer_Sale and summer-sale are the same campaign. They compare strings. Every variant creates a separate row, and separate rows mean the totals you present are wrong in a way that is very hard to spot, because each individual row looks perfectly plausible.
| What went in | What the report shows | The damage |
|---|---|---|
| SummerSale, Summer_Sale, summer-sale | Three campaigns | Spend and conversions split three ways; no single number to report |
| Q3_Sale and 2026_Q3_ACME_SALE | No shared prefix | Cannot filter a whole quarter, because half the names do not carry the year |
| Summer Sale (with a space) | summer%20sale in URLs | Encoded values sort apart from the clean ones and break sheet lookups |
| Summer Sale v2 | A separate campaign row | The trend line resets; the original campaign appears to have stopped |
| acme_sale_final_FINAL | A campaign nobody can date | Unusable in any year-over-year comparison |
The version problem is worth calling out on its own. Refreshing creative and bumping the campaign name to v2 feels tidy and destroys continuity — you now have two campaigns where you had one, and no way to see the before and after in a single line. Version the creative in utm_content instead and leave utm_campaign alone.
The cost is not really the bad name. It is the reconciliation work afterwards: the analyst who spends a day building a lookup table of name variants, the mapping that has to be maintained forever, and the quarterly report where two numbers disagree and nobody can say which is right.
How Naming Connects to UTM Tracking
The campaign name in your ad platform and the utm_campaign value on your links are two records of the same thing. When they match, joining platform spend to analytics sessions is a lookup on a shared key. When they do not, somebody maintains a mapping table by hand, and it goes stale the week after it is built.
That is why this generator emits the UTM-friendly format alongside the standard one. Both come from the same field values in the same order, so they are always derivable from each other:
Platform campaign name: 2026_Q3_ACME_SUMMER_SALE_META utm_campaign value: 2026-q3-acme-summer-sale-meta lowercase the name, swap _ for -
Keep the rest of the tagging separate from the campaign field. Channel information belongs in utm_source and utm_medium, not repeated inside utm_campaign, and creative detail belongs in utm_content. Cramming everything into utm_campaign gives you one long string you then have to parse back out, which is the problem the other parameters exist to solve.
Best Practices for Team Campaign Naming
- Make the convention available at the moment of naming. A document in a wiki nobody opens loses to a habit every time; a pinned example in the channel where campaigns get briefed does not.
- Give every field a controlled list. Free text is where conventions die — most drift comes from three spellings of one channel, not from people ignoring the pattern.
- Agree what a blank field means and write it down. Omitted entirely, never NA or NONE, and never a placeholder that leaves a double separator.
- Never encode anything you can measure elsewhere. Budget, objective and owner change during a campaign; a name that contains them is wrong the moment they do.
- Nominate one owner for the convention. Shared ownership of a standard means nobody decides the edge cases, and edge cases are the whole job.
- Keep agencies and freelancers on the same pattern by sending them the generated convention doc, not a description of it.
- Review it once a year. New channels, new markets and new product lines all put pressure on a pattern that was right when it was written.
The convention doc export is built for exactly this. It writes out the pattern, the field order with your own values as examples, the casing rules for both platform names and UTM values, and the character-limit guidance — as markdown you can paste straight into Notion, Confluence or a README without reformatting.
One reliable signal that a convention is working: somebody outside the marketing team can read a campaign name and describe the campaign. If they can, the name is carrying its information. If they need to ask, the pattern has too many abbreviations or too few fields.