Kestry
Create Your AI Agent
Campaign Management

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

Basics
Required — the core of every format
Targeting and timing
Optional — an internal code like A1 or V2
Fields to include

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 full pattern this generator uses. Fields you leave blank are omitted rather than leaving a gap.

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

  1. 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.
  2. 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).
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.

FormatOutputWhere it goes
Standard2026_Q3_ACME_SUMMER_SALE_META_EXISTING_CUSTOMERS_UAECampaign names in Meta Ads Manager, Google Ads, LinkedIn Campaign Manager
Short2026_Q3_ACM_SUMMER_SALE_METAAd set and placement names, and anywhere the character limit is tight
UTM-friendly2026-q3-acme-summer-sale-meta-existing-customers-uaeStraight into utm_campaign on every link for this campaign
Human-readable2026 · Q3 · Acme · Summer Sale · Meta · Existing Customers · UAEBriefs, status updates, slides, anything a stakeholder reads
Four renderings of one identity — the same fields in the same order, formatted for four different destinations.

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 inWhat the report showsThe damage
SummerSale, Summer_Sale, summer-saleThree campaignsSpend and conversions split three ways; no single number to report
Q3_Sale and 2026_Q3_ACME_SALENo shared prefixCannot filter a whole quarter, because half the names do not carry the year
Summer Sale (with a space)summer%20sale in URLsEncoded values sort apart from the clean ones and break sheet lookups
Summer Sale v2A separate campaign rowThe trend line resets; the original campaign appears to have stopped
acme_sale_final_FINALA campaign nobody can dateUnusable 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 -
One transformation, applied consistently, keeps the two systems joinable.

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.

Frequently asked questions

What is a campaign naming convention?
An agreed structure defining which details go into a campaign name, in what order, and in what format — for example year, quarter, brand, campaign, channel, audience and region joined with underscores. Its purpose is to make names machine-readable, so campaigns can be grouped and filtered by dimensions the ad platform does not provide as fields.
What should a campaign name include?
Only the fields you would filter or group a report by. Date, brand, campaign, channel and market cover most needs. Objective, budget and owner usually belong in the campaign brief, because they change during a campaign and a name that contains them becomes inaccurate rather than out of date.
Should campaign names be uppercase or lowercase?
Both, in different places. Uppercase with underscores is the practical default for ad platform campaign names, where it stays readable in a crowded picker. Lowercase with hyphens is the right form for utm_campaign, because analytics values behave inconsistently around casing. This generator produces both from the same inputs so they never diverge.
How long should a campaign name be?
Under 100 characters. Some ad platforms truncate longer names in reporting exports and API responses, and a truncated name breaks any downstream matching on that string. If you are consistently near the limit, remove a field rather than abbreviating — the short format here does this by keeping only year, quarter, brand, campaign and channel.
Should the campaign name match utm_campaign?
They should be derivable from each other, not identical character for character. Keep the platform name in your standard uppercase form and use the lowercase hyphenated version as your utm_campaign value, from the same fields in the same order. That single consistent transformation is what lets you join platform spend to analytics sessions without a manual mapping table.
How do I handle campaign versions or refreshes?
Keep utm_campaign stable and version the creative in utm_content. Renaming a campaign to v2 creates a second row in every report and resets the trend line, which is exactly the comparison you wanted when you refreshed the creative. Use the optional identifier field for internal codes that genuinely need to distinguish separate campaigns.
Can I customise which fields appear in the name?
Yes. The Fields to include chips switch any field in or out of the pattern, and the generated names, the quality checks and the exported convention doc all update to match. Fields left blank are omitted entirely, so you never end up with an empty slot or a double separator holding its place.
Is my campaign data sent anywhere?
No. Names, quality checks, the CSV export and the convention doc are all generated in your browser, and nothing is transmitted or stored. Unannounced product names and unlaunched campaigns are safe to enter.