The boring secret to crafting fantastic ads: Properly naming your campaigns and creative tracking
(to drive hundreds of millions in revenue).
Properly name your campaigns and track the details of every creative.
It sounds silly. How can that improve performance?
It unifies all your digital marketing data, from ad creation to revenue, enabling aggregation and analysis across every ad you’ve ever made. Identify how different pitches impact performance, how performance correlates to ad length, and whether background music and captions enhance performance. Want to quickly identify bottlenecks and production issues? This is the solution. But it’s only as good as what you track and measure.
Standardized naming enables you to capture additional details about your campaigns while combining ad network performance data (Meta, TikTok, etc) with details about your creative and internal revenue numbers. Unifying your marketing data end-to-end, allowing you to see how any feature impacts performance.
When one of my clients first pivoted their data set, they found a set of creators outperforming the rest by 40%. This simple discovery potentially added millions to net income.
Everything you track adds another potential avenue of improvement—sometimes a little, other times a lot.
We’ll cover how to
Name campaigns, ad sets, and ads
Track creative
Load the data into your database
Join the data for analysis
Five charts to get you started
Step 1: How to name campaigns, ad sets, and ads
How should you name your digital marketing campaigns?
A simple question. With massive upside.
Proper naming is the foundation of marketing analytics with enormous benefits.
Quickly understand the settings of every ad
Easily discover opportunities that boost performance
A marketing team must constantly balance the production of static images, in-house videos, and creator content. Proper ad naming makes analyzing the process easy.
CREATIVE_NAME – CREATIVE_TYPE – HEADLINE
24040001_runway_amber – video – best_deal
The dash serves as a delimiter to separate each attribute. So that you can track multiple attributes in a single name. As long as you only use a dash as the delimiter, it becomes easy to parse out specific information in Excel or SQL.
In Excel, use SPLITTEXT(cell,”-”)
In SQL, use SPLIT_PART(string,”-”,position)
Once you parse the name, use a pivot table in Excel or GROUP BY in SQL to aggregate the performance statistics by creative type or another attribute across all your campaigns.
I use dozens of charts, each aggregated by a different attribute, to illustrate how various objectives, targeting, and creative are performing compared to each other. This makes spotting opportunities and inefficiencies incredibly easy.
Digital ads have a hierarchical structure: campaigns have many ad sets, each with many ads. My current best practice is to use the following naming convention:
Campaigns
START_DATE – CHANNEL – PLATFORM – CAMPAIGN_TYPE – OBJECTIVE
Ad Set
START_DATE – GEO_TARGETING – LOCATION – AUDIENCE – AGE_AND_GENDER – PERFORMANCE_GOAL – PLACEMENT
Ad
CREATIVE_NAME – CREATIVE_TYPE – HEADLINE
Your high-level goal is to capture all the relevant information within the name. Many details aren't accessible through any other source, including the API, and if you don’t manually track the information, it’s lost. Such critical information includes targeting or the name of the creative.
General Rules
Delineate each trait by a dash.
All information should be in lowercase and without special characters.
DO NOT use spaces. Substitute with an underscore _.
Campaign Name
At the campaign level, we want to define the high-level objectives.
START_DATE – CHANNEL – PRODUCT – PLATFORM – CAMPAIGN_TYPE – OBJECTIVE
Example: 240312-meta-pants-ios-evergreen-install
START_DATE
It has two purposes: quickly identifying the campaign's age and serving as a unique identifier to avoid merging two separate campaigns into a single item.
We use the date format YYMMDD, where YY is the last two digits of the year, MM is the two-digit month, and DD is the two-digit day. For example, 240312 would correspond to a campaign launched on March 12, 2024. This format allows automatic sorting by campaign age.
CHANNEL
Which ad network: meta, tiktok, google, spotfiy, twitter, etc.
PRODUCT (if applicable)
Within gaming and some e-commerce companies, products will have separate campaigns. Do not include if this isn’t applicable to your use case.
PLATFORM
Identify where you send the users: iOS, Android, or Web.
CAMPAIGN_TYPE
Evergreen: ongoing campaign you are scaling.
Test: where you test new creative and targeting parameters.
APlus: Advantage+, formerly known as automated app ads.
OBJECTIVE
Identify the campaign's goal: install, reach, click, etc.
Ad Set Name
START_DATE – GEO_TARGETING – LOCATION – AUDIENCE – AGE_AND_GENDER – PERFORMANCE_GOAL – PLACEMENT
Example: 240312-country-US-LA_highvalue_05-b18:55-conversion-all
START_DATE
It has two purposes: quickly identifying the campaign's age and serving as a unique identifier to avoid merging two separate campaigns into a single item.
We use the date format YYMMDD, where YY is the last two digits of the year, MM is the two-digit month, and DD is the two-digit day. For example, 240312 would correspond to a campaign launched on March 12, 2024. This format allows automatic sorting by campaign age.
GEO_TARGETING
Level of geographic targeting: country, DMA, or region.
LOCATION
Use a 2-3 letter code to represent the geography.
AUDIENCE
Who are you targeting? Use the following format to allow further parsing for more in-depth analysis.
Custom Audience: CA_SEEDAUDIENCE. Preappend CA, then underscore and describe the source of the custom audience, for example, highvalueover100.
Look-a-Likes: LAL_SEEDAUDIENCE_PERCENTILE. Preappend LAL, then describe the custom audience source. Finally, add the two-digit look-a-like percent match. A 5% look-a-like would appear as LAL_highvalueover100_05.
Broad: For broad match, broad.
Interest: Describe the cluster of interests used in your targeting in 1-3 words with underscores between them.
AGE_AND_GENDER
For no gender or age targeting, write “all.” For targeted writing, write b18:55 or b18+ for everyone over 18.
The first letter is either (m)ale, (f)emale, or (b)oth. Next, add the starting age, which should be 18 and over unless you specifically target teenagers (Which I do not recommend). Then, add a colon and finish up with the final age. This format makes it easy to parse out the gender and age targeting.
PERFORMANCE_GOAL
The optimization parameter, to find the complete list for each ad network search for “[ad network’s name] performance goal”. If an ad network doesn’t have optimization parameters, set as “all”.
PLACEMENT
Networks such as Meta and Google offer various placements. On Meta, they include feeds, stories, reels, etc. If you haven’t selected one, such as for Advantage+ campaigns, set it as all.
Ad Name
CREATIVE_NAME – CREATIVE_TYPE – HEADLINE
Example: 24040001_runwayunder100_airplane-static-40off
We construct the CREATIVE_NAME by combining three components together delimited by an underscore. In the above example 24040001_runwayunder100_airplane is the CREATIVE_NAME. Where the UNIQUE_CREATIVE_IDENTIFIER is 24040001, CREATIVE_NAME is runwayunder100, and the CREATIVE_VARIANT is airplane.
We’ll use the same CREATIVE_NAME in the creative tracking document to join ad performance to creative traits to identify which traits positively and negatively effect performance. Without the UNIQUE_CREATIVE_IDENTIFIER you will eventually accidentally given two creatives the same name. The idenfier avoids the issue. While the variant name allows the parent creative to be easily identified while still separating different versions of a creative.
UNIQUE_CREATIVE_IDENTIFIER
YYMM0001, where YY is the two-digit year, and MM is the two-digit month, followed by a four-digit number representing the number of creatives produced in the month and year. For example, 24040001 is the first creative produced in April 2024.
CREATIVE_NAME
The internal name of the creative. No underscores should be used.
CREATIVE_VARIANT
Add the variant name or number for creatives with multiple versions or from hypothesis testing.
CREATIVE_TYPE
There are four choices: static, video (in-house production), ugc (user-generated content), or carousel. If external partners made the content, add the company name.
HEADLINE
What is the name of the headline used? Headlines don’t significantly affect performance, because people don’t generally read, but should be purposefully tested and optimized. Then, it is reused based on the creative selected.
Step 2: How to track creative
Creative tracking provides a wealth of information to identify team performance, bottlenecks, and costs. We want to track every detail about the creative and production process.
Curious why your creative team has seemingly hit a production bottleneck? Or if a specific team member is underperforming?
Creative tracking to the rescue. You can visualize the amount of time spent on each step or who’s taking the longest, making identifying problems a breeze. Then apply a fix and use the same visualization to see whether the issue improves.
It’s a pretty simple process. With huge, game-changing returns.
But it does require diligence to ensure that every team member is tracking the details.
Create a Google Sheet with two tabs: Briefs and Concepts. Later we’ll cover how to load this Google Sheet into your database.
Briefs
The comprehensive strategy of the advertisements you wish to produce. Briefs serve to align the brand, performance, and creative teams on the objectives of future creative production. Record the estimated and actual dates and costs. Who originally came up with each idea. What is the hypothesis to be tested.
Concepts & Variants
Name of the ad, must be identifical to the creative name in the marketing campaigns. This allows you to join this data with the ad networks performance metrics and your internal behavioral data.
Outline the foundational components of the ad: problem, value proproposition(s), reason to believe, call to action, hook, location, emotional appeal, and stories.
Variants are variations to the original concept where changes are made to potentially boost performance. Common examples of variants include change to the actor, pitch, hook, ad length, or messaging.
The following is a full list of features I suggest tracking:
Briefs
Name
Link to brief
Origin of idea
Primary network (meta, tiktok, TV, etc)
Request date
Brief date
Estimated production date
Actual production date
Estimated post-production date
Estimated first review date
Estimated handoff date
Estimated cost
Actual cost
Is casting required
Is internal shoot
Concepts
Hypthoses to be tested
Concept & Variant
Name
Variant
Ad Name
Link to file
Brief name
Length (seconds)
Time to pitch
Creative type
Primary actor or creator
Hook
Pitch - Persona
Pitch - Problem
Pitch - Value Proposition
Pitch - Reason to believe
Pitch - Call-to-action
Story - Location
Story - Emotional appeal
Has_background_sound
Has_subtitles
Primary artist, graphics designer, or motion designer
Start of post-production date
First review date
Handoff date
Revision Count
Error by
Step 3: Load the data into your database
Bring the creative tracking and ad network performance data into the same database as your internal performance metrics either through direct API pulls or my preference using a third-party provider. My preference is to use third-party providers, the easiest, but most-costly is Fivetran.
With that you’ll have the contents of the creative tracking Google Sheet and ad network performance metrics of every campaign, ad set, and ad in your database.
Step 4: Join the data for analysis
We need to combine three sets of data:
Creative tracking
Ad network campaign, ad set, and ad performance data
Internal revenue data
We’ll join the creative tracking, ad network performance data, and internal revenue data through two joins using the creative name.
In the creative tracking Google Sheet, the creative name has it’s own column. For the ad network ad performance data you need to parse out the creative name using the two methods I outlined in the introduction to Step 1.
Your internal revenue metrics should already be within your database. However, you must capture the ID or name of the campaign, ad set, and ad from users when they visit your site. If you don’t have these being passed through, search the networks name along with “dynamic URL parameters”. You’ll be able to find out how to do it on Meta, TikTok, and Google.
For mobile devices, specifically Apple devices, you have two options to connect an ad campaign to revenue. For both you need a mobile measurement partner. The first option uses Apple own service to collect aggregated revenue information by campaign and ad set. The second option is to request app tracking permissions from the user which will provide campaign, ad set, and ad level information for each user that accepts.
With either option you’ll have the campaign, ad set, and ad name which can be parsed to extract the desired information.
Once you have the relevant variables extracted you can proceed forward with the join. Analyzes are completed by grouping by or pivoting the data on the desired variable(s).
Step 5: Five charts to get you started
Examples will be added shortly.
Average revenue and conversion rate by pitch and persona
Creative spend by age of creative
Production speed over time (stacked bar chart)
Spend and revenue by creative type
Spend and revenue by targeting and objective.