Template & checklist · naming workspace

UTM Naming Template

Use this page as the operating standard for the sheet that sits between naming policy and URL building: the shared row-by-row control that records approved values, ownership, lifecycle state, versioning, exception handling, and handoff readiness before anything goes live.

The naming template is not just a downloadable CSV and it is not the full campaign log. It is the pre-build control layer. The upgraded suite now gives you a governed workbook, a field glossary, signoff assets, and lean starter files so teams can adopt the standard without turning the page into a fake tool or duplicating the builder, QA checker, redirect checker, or campaign log.

Primary jobPre-build control
Main risk it solvesFree-text drift
Best outcomeClean handoff

Most UTM naming templates fail because they try to do every job at once

The weak version of this page is just “download this CSV”. The strong version is a repeatable operating standard. Bad naming templates usually fail for one of three reasons: they mix policy with execution, they confuse naming with post-launch logging, or they leave too much to free text and memory. Once that happens, every row becomes a fresh argument about what values are allowed and who signed them off.

What breaks weak sheets

Free-text chaos

People type campaign values directly into the row with no approved list, no casing control, and no way to tell whether a value is new, wrong, deprecated, or already in use under a different spelling.

No lifecycle state

The row has values, but nobody can tell whether it is a request, a draft, an approved line, a built URL, or a live launch. That destroys accountability because every stage looks the same.

Policy mixed with evidence

The same file tries to hold approved values, final built URLs, redirect results, published placements, and reporting notes. The sheet becomes bloated, unstable, and hard to audit because each row now carries several different jobs.

Ownerless exceptions

Someone needs a one-off value, types it in, and launches anyway. Without an exception reason and approver, the exception becomes the new standard by accident.

What a strong template does
Controls inputsThe template limits what a row is allowed to contain before the builder ever sees it.
Shows stateEvery row advertises whether it is requested, approved, built, QA checked, live, or archived.
Shows ownershipThere is always a named person responsible for the row, the exception, and the final handoff.
Bridges the workflowThe sheet hands clean values into the naming generator, builder, QA checker, and campaign tracker instead of replacing them.
Protects approved valuesTeams can use the row, but they cannot casually rewrite the dictionary or naming rules from the launch tab.
Leaves evidence to the logOnce the link is live, the heavier post-launch record belongs in the campaign tracking spreadsheet and reporting workflow.

What this page owns — and what it deliberately does not own

This page should become the reference standard for the naming sheet itself. It should not swallow the jobs of the nearby pages. That boundary is what keeps the content useful instead of repetitive.

This template page owns

  • the sheet structure and tabs
  • column purpose and row architecture
  • row lifecycle and approval state
  • who edits which fields and when
  • exception logging and approval handling
  • safe handoff into build, QA, redirect review, and the campaign log

This template page does not own

The Shortlinkfix Template Integrity Model

A naming template becomes trustworthy when it controls five things at the same time: values, ownership, state, exceptions, and handoff. If one of those breaks, the sheet stops being a control layer and becomes a false sense of order.

1 · Controlled values

Rows start with governed inputs

Source, medium, channel, audience, region, and status should not behave like free-text suggestion boxes. The sheet should point to approved values or a protected dictionary before anyone reaches the builder.

2 · Visible state

Every row advertises where it is in the launch path

Requested, drafted, approved, built, QA checked, live, blocked, and archived are not cosmetic labels. They are how teams know whether a row is ready for build, waiting on signoff, or already retired.

3 · Named owner

No row moves on memory alone

The row needs a person who requested it, a person who approved it, and a person responsible for final handoff. Otherwise the sheet looks complete while everyone assumes someone else is carrying the risk.

4 · Logged exceptions

Non-standard rows stay visible and temporary

Exceptions should be captured, approved, and versioned without silently rewriting the rule set for everyone else. The sheet must show why a row is different and who accepted that risk.

5 · Clean handoff

The template stops where the next layer begins

The sheet should hand clean rows into the naming generator, builder, QA checker, redirect review, and campaign tracking log. It should not try to become all of them at once.

The easiest way to audit the sheet

Ask five questions in order: Are the values controlled? Is the state visible? Is the owner named? Are exceptions logged? Does the row hand off cleanly? If the answer is “no” anywhere, the template is not ready to sit in the middle of a serious workflow yet.

The sheet architecture: what belongs in the template, what belongs somewhere else

A premium naming template does not start with a random list of columns. It starts with a clear decision about what the sheet is responsible for. The table below keeps the template in its lane while still making it genuinely adoptable.

Layer in the sheetWhat it should containWhy it belongs hereWhat should live elsewhere
Governed inputsApproved source, medium, channel family, region codes, owner list, allowed status values, exception categories.This is the controlled input layer. People need visible approved options while they work on rows.The underlying logic for those values still belongs in taxonomy design and the governance framework.
Request rowCampaign owner, destination URL, requested campaign label, channel, launch date, notes, priority, exception flag.This creates a real intake record before anyone assembles a final URL.Do not store performance outcomes or redirect traces here.
Approval stateDraft, approved, blocked, built, QA checked, live, archived; approver; approval date.Without explicit state, rows drift between people and nobody knows whether launch is safe.Do not replace the full QA review notes if you already hold them in a dedicated checklist or release record.
Build handoffApproved utm_source, utm_medium, utm_campaign, optional content or term, final destination URL, build-ready flag.This is the handoff point into the UTM Builder or Bulk UTMs.Do not turn this section into the builder itself. The template records the row; the tool assembles the URL.
Launch recordFinal built URL, short link if used, live date, live status, launch owner, exception note.Teams still need a visible launch-stage record before they jump into post-launch evidence.Full published placement evidence, redirect history, and reporting annotations belong in the campaign tracking spreadsheet.
Reference tabsRead-only dictionary, deprecated values, status legend, lifecycle legend, field instructions.Reference tabs reduce guesswork and stop free-text improvisation.Do not rewrite policy in every tab. Link back to the governing pages instead.

Field-by-field rules: the columns worth keeping, protecting, and separating

The goal is not to add every imaginable column. The goal is to give the row enough structure that a builder, reviewer, and approver can all understand what is happening without opening three extra documents.

FieldWhy the field existsInput ruleWho owns itCommon mistake to avoid
row_id or request_idLets teams reference the same row in chats, reviews, and QA without guessing which campaign line is under discussion.System-generated or sequential. Never typed ad hoc in multiple formats.Ops or sheet owner.Using campaign name as the only identifier.
ownerNames the person who is responsible for the row while it is still in motion.Pick from an approved list, not free text.Launch owner or strategist.Leaving the field blank and assuming “the team” owns it.
channelShows the distribution context so the row can be routed to the right naming and QA expectations.Use a controlled list aligned to the approved taxonomy.Strategy or channel owner.Using a placement or platform nickname instead of a governed channel value.
destination_urlRecords where the user should land before any UTM or redirect handling is applied.Use the clean destination URL, not the final built URL.Builder or launch owner.Dropping the already-tagged URL in this field and hiding the real destination.
utm_sourceDeclares the referrer or partner source value.Choose from approved values only. No free typing in the live row tab.Ops or channel owner.Using synonyms like fb / facebook / meta in different rows.
utm_mediumDeclares the marketing medium and shapes reporting logic later.Controlled list. Keep casing and separators locked.Ops or channel owner.Using made-up mediums that break reporting consistency.
utm_campaignHolds the approved campaign label created under the naming rules.Paste the approved pattern; do not improvise variants in the template.Strategist, then approver.Letting campaign names drift because the template does not reference the naming standard.
utm_content / utm_termAdds optional granularity only when it actually serves the launch or reporting need.Optional, but still governed when used.Channel owner or builder.Forcing optional fields into every row and creating noise.
statusMakes the row stage visible.Restricted list such as requested, drafted, approved, built, QA checked, live, archived.Whoever moves the row to the next stage.Using open text like “sort of done” or “ready maybe”.
exception_reasonExplains why a row breaks the normal standard and preserves the reason for later review.Required when any protected field is overridden.Requester plus approver.Allowing custom values with no explanation.
approverShows who authorised the row or the exception.Pick from a controlled owner list.Governance owner or manager.Assuming approval happened because the link shipped.
final_built_urlCaptures the assembled output that was actually approved for launch.Filled after build, not before.Builder.Using this field as a dumping ground for already-live tracking links with no link back to the original destination.

Versioning, reruns, and cloned campaigns

This is where a lot of otherwise decent templates collapse. Teams reuse a past row because the campaign “looks the same”, then accidentally launch with stale dates, wrong creative variants, or old ownership attached. The template needs versioning rules before reuse feels convenient.

ScenarioWhat to copyWhat must changeWhy it mattersDo not do this
Seasonal rerunChannel, source, medium, landing page base, audience patternCampaign name, launch date, owner, status, version tag, approverStops an old campaign row pretending to be the new one in reporting and approvalsDo not relaunch the old row with only the date edited in notes
Creative refreshCampaign shell and audience logicContent variant, version tag, build date, QA statePreserves continuity at campaign level while exposing the new creative unit clearlyDo not overwrite the old content row and lose the evidence trail
New market rolloutCampaign structure and naming patternRegion, owner, approver, landing page, any market-specific exception reasonPrevents one market’s naming decisions from polluting another market’s row setDo not duplicate the row and forget to update the controlled regional values
Partner or creator reuseBase campaign logic if it is intentionally sharedSource detail, placement detail, version tag, exception log, launch statusLets you compare parallel partner launches without flattening them into one vague rowDo not recycle an old creator row with a new live asset hidden in notes
Legacy migrationDestination, rough campaign meaning, historical reference noteApproved values, exception decision, deprecation notes, new ownerGives you a path from messy historic names into governed naming without pretending the legacy values were fineDo not make the migration alias the new permanent standard by accident

Working rule

If a row needs a new owner, approval, timing, or creative identity, it usually needs a new row version as well. Reuse the structure, not the whole record.

Common failure

Teams keep one row “alive” forever, then bury all the real change in notes. That destroys auditability and makes the sheet look cleaner than it really is.

The row lifecycle: how one line should move from request to archive

The most important thing a mature template adds is stage visibility. A strong row is not just a set of UTM values; it is a line that moves through a controlled lifecycle with clear gatekeepers. That is what stops “we thought it was approved” becoming the standard operating model.

1

Requested

A stakeholder asks for a tracked link or campaign row.

  • owner is assigned
  • destination URL is captured
  • channel and priority are set
2

Drafted

The row is populated with proposed values that follow the naming standard.

  • source and medium selected from approved values
  • campaign label drafted against the naming guide
  • exception flag set if needed
3

Approved

The row is accepted as safe to hand to the builder.

  • approver named
  • exception reason recorded if relevant
  • blocked rows stay out of the build queue
4

Built

The approved row is turned into a final URL or batch output.

  • builder references the approved row only
  • final built URL is stored
  • short-link or redirect layer recorded if relevant
5

QA checked

The row and the final URL go through the release gate.

6

Live

The row is now a launched asset, not just a draft line.

7

Archived

The row stays searchable, but no longer behaves like an active launch line.

  • deprecated values stay visible for audit history
  • reused campaigns require a new versioned row
  • the archive protects reporting truth later

Who edits what: role boundaries inside the naming sheet

Templates become dangerous when everyone can edit every field. A premium version draws hard boundaries. Not because the team needs bureaucracy for its own sake, but because row integrity dies when the same person can silently change strategy, approved values, final URLs, status, and exceptions with no trace.

Strategist or campaign owner

  • creates the request
  • defines the campaign purpose
  • proposes the campaign label according to the naming guide
  • flags any non-standard need early

Ops or governance owner

  • maintains the approved lists
  • protects the template structure
  • approves or rejects exceptions
  • keeps statuses and required fields disciplined

Builder

  • uses the approved row only
  • assembles the final URL in the builder
  • writes the built URL back to the row
  • does not rewrite governed values casually

QA owner

  • checks row completeness
  • validates the built URL
  • confirms the row is safe to ship
  • blocks release if row state and URL state disagree

Launch owner

  • marks the row live
  • records launch date and placement context
  • hands off to the evidence log if needed
  • owns fixes when the live route is wrong

Analyst or reporting owner

  • does not redesign naming inside the template
  • uses the row history to interpret reporting later
  • feeds real drift back into policy updates
  • keeps reporting anomalies from mutating the controlled row structure on the fly

Release readiness before a row reaches the builder

The naming template does not replace QA, but it should stop obvious bad rows before final URLs are even assembled. This is a naming-and-handoff signoff layer, not a redirect or final-link validation layer.

Release gateWhat must be truePass evidenceOwnerStop when
Intent gateThe row has a real destination, launch purpose, channel, and named owner.Row is no longer blank or speculative; request fields are complete.Strategist or campaign ownerThe landing page is unknown, the owner is missing, or the request only exists in chat.
Controlled value gateSource, medium, audience, region, and campaign logic use governed values or an approved exception path.Values match the dictionary or the exception register reference is attached.Ops or governance ownerFree-text naming has been typed directly into governed fields with no approval trail.
Approval gateThe row has a visible status and named approver before anyone builds the final URL.Status is approved and the approver field is complete.Approver / governance ownerThe row is still drafted, blocked, or “basically approved” in someone’s head.
Build handoff gateThe builder can take the row without guessing anything hidden in notes.Destination, values, version tag, and any exception note are explicit.BuilderThe builder still has to invent missing parts or infer meaning from a Slack message.
Ready-for-QA gateThe final built URL is copied back into the row and the status shows that build is complete.Built URL present, launch date prepared, next owner visible.Builder / launch ownerThe row says “built” but there is no final URL or next-stage owner visible.
Important boundary

This section deliberately stops before final URL validation. The template should tell you whether a row is ready to reach the builder and then the QA checker. It should not pretend to perform the builder’s or checker’s job.

Bad template design vs good template design

This is where a lot of teams get lost. They think they need more tabs and more columns when what they really need is a cleaner job definition for the sheet. Good templates are boring in the best possible way: stable, obvious, and difficult to misuse.

Design questionBad template behaviourGood template behaviourWhat it improves
How values enter the rowAnyone types source and medium freehand.Approved values are selected from a controlled list fed by the taxonomy layer.Cleaner reporting and fewer duplicate channel names.
How rows moveThe sheet has no real status logic, so “done” means whatever the last editor thought it meant.The row has explicit lifecycle states with one owner at each gate.Cleaner accountability and fewer accidental launches.
How exceptions are handledExceptions are hidden in notes or implied after the fact.Exceptions use their own reason field, approver field, and review path.Less drift and more auditable change control.
How building is handledThe final URL is typed directly in the same moment the row is being invented.The row is approved first, then handed to the builder, then written back with the final URL.Cleaner separation between decision and assembly.
How post-launch evidence is treatedThe same row ends up holding performance commentary, redirect screenshots, and campaign outcomes.The template stops at launch-state control and passes heavier evidence into the campaign tracking spreadsheet.More stable sheet performance and clearer job boundaries.
How old rows are reusedTeams duplicate an old line, overwrite half the values, and lose the original truth.New launches get versioned rows, while archives preserve what was actually approved before.Cleaner audit history and easier troubleshooting later.

Template operating rules

These rules are where the page stops being a loose explainer and becomes a standard teams can adopt.

1. No row goes live without an owner

If a name cannot be attached to the row, the problem will reappear after launch and nobody will own the repair.

2. No free-text source or medium in the live row tab

If the team needs a new value, the request goes through taxonomy approval rather than sneaking into the launch tab.

3. No campaign row gets reused without versioning

Copying an old row is fine. Reusing the old identity is not. New launch, new row, new approval state.

4. No exception without reason and approver

Exceptions are allowed because reality is messy. Hidden exceptions are not allowed because they silently rewrite the standard.

5. No builder edits to governed fields without sending the row back

If the builder has to change source, medium, or campaign, the row is not build-ready and should move backward in the lifecycle.

6. No post-launch evidence bloat in the core tab

The naming template is not a dumping ground for screenshots, results commentary, and redirect histories.

7. No multiple active templates with the same authority

The team needs one active standard. Archived copies are fine; competing live masters are not.

8. No row status without corresponding evidence

If a row says QA checked, there should be a real checker result or release review behind that state.

How to handle exceptions without turning them into the new rule

Good governance is not pretending exceptions never happen. It is making sure a one-off remains a one-off until someone deliberately promotes it into the permanent standard.

1

Flag the row early

If a source, medium, campaign shape, or launch requirement breaks the norm, flag the row before it reaches the builder. Late exception discovery is one of the fastest ways to create untracked drift.

2

Capture why the row is different

Write the actual reason: partner requirement, legacy URL constraint, regional rollout, third-party platform limit, or controlled test. “Needed custom value” is not enough.

3

Name the approver

An exception should never look anonymous in the record. The row needs an accountable approver, not implied permission.

4

Decide whether the exception is local or permanent

If it is a one-off, leave the taxonomy untouched. If it solves a repeatable need, push it back to the governing pages so the standard evolves properly.

5

Version the change

Do not overwrite the earlier truth. Preserve the original row history so future debugging can see which version actually went live.

Customise the template safely

Teams often ruin a good template while trying to make it “fit the business”. The right way to customise is to keep the core control fields stable and add only the fields that genuinely help decision quality, handoff quality, or audit quality.

Safe additions

  • region or market field when campaigns are localised
  • audience segment when it affects the campaign label
  • placement field when the team needs extra launch context
  • priority, due date, or ticket ID for workflow management
  • partner or creator field when ownership spans outside the internal team

High-risk additions

  • free-text “channel notes” fields that bypass controlled values
  • performance metrics that tempt teams to use the template as a reporting dashboard
  • multiple status columns with overlapping meanings
  • ad hoc columns invented per campaign and never cleaned up
  • duplicate URL fields where nobody knows which one is the clean destination

If a field does not improve row readiness, handoff clarity, ownership, or audit quality, it probably belongs in a different sheet.

How the template hands off to the rest of the system

This is the most important cluster boundary on the page. The naming template is powerful because it bridges the workflow — not because it tries to replace every other asset on the site.

1 · define the rules

Use UTM naming conventions and taxonomy design to decide what values and formats are even allowed.

2 · operate the row

Use this naming template as the working pre-build sheet that holds row state, owner, approved values, and exceptions.

3 · assemble the URL

Move approved rows into the UTM Builder or Bulk UTMs once the row is truly ready.

4 · validate and release

Run the UTM QA Checker, the QA checklist, and the Redirect Checker when route risk is involved.

Use the naming template to stop bad rows before build. Use the builder to assemble. Use QA to validate. Use the campaign tracking spreadsheet to preserve what actually shipped. When those layers stay separate, the system scales. When they blur together, the same mess comes back under a nicer tab colour.

30-day adoption path for the template standard

A template only becomes useful when people adopt it under pressure. The safest rollout is light at first, then progressively stricter once the row structure, status rules, and ownership model hold up in real launches.

1

Week 1 — lock the sheet structure

Agree the live tab names, the required columns, the status ladder, and the protected approved-values source. Do not argue about every edge case yet. Just stop the sheet from being a blank canvas.

2

Week 2 — force new requests through the row lifecycle

Use requested, drafted, approved, built, and blocked states on every new row. The goal is not elegance yet; it is visibility. Everyone should be able to see which rows are real, which are waiting, and who owns the movement.

3

Week 3 — tighten exceptions and handoff rules

Start logging one-off requests properly, require named approvers, and stop builders from taking rows that still need interpretation. This is the point where the sheet starts behaving like a control layer instead of a polite suggestion.

4

Week 4 — audit reuse, archive old rows, and train the next owner

Review reruns, clones, blocked rows, and lingering “draft forever” items. Archive what is closed, version what is re-used, and teach the next person exactly where the template ends and the builder, QA checker, and campaign log begin.

What success looks like after 30 days

  • new launches no longer start life in DMs or memory
  • rows expose ownership and readiness without explanation
  • exceptions stay temporary and visible
  • builders and QA owners stop guessing what the row meant

What failure looks like after 30 days

  • the sheet still mixes request rows and post-launch evidence
  • approvals live outside the row and never come back into the asset
  • old campaign rows keep getting re-used with tiny silent edits
  • people still say “just use the old one” instead of versioning properly

Flagship template suite, governed workbook, and starter files

The downloads now behave like a real operating pack rather than a single spreadsheet. Use the suite ZIP when you want the whole system. Use the workbook when you want the governed core asset. Use the starter CSV only when you need the lightest portable version and you already understand the operating rules.

Flagship suite ZIP

Best default download. Includes the workbook, starter CSV, approved values, field glossary, exception register, approval signoff, change log, SOP guide, and quick-start instructions.

Download full suite →

Governed workbook

Multi-tab XLSX with protected structure ideas, dropdown-driven Launch Rows, examples, glossary, status rules, signoff, and change control. Best choice for teams adopting the standard properly.

Download workbook →

Starter CSV

Lean portable row sheet for teams that want the smallest possible starting asset and already understand where approvals, exceptions, and downstream handoffs live.

Download starter CSV →

Field glossary

Column-by-column explanation of what each field owns, who edits it, whether it is required, and what it should never be used for.

Download field glossary →

Approved values file

Portable CSV with governed values for channels, sources, mediums, statuses, approvers, regions, funnel stages, and audiences. Best used as a protected reference layer.

Download approved values →

Approval signoff file

Release-control asset for naming readiness before the row reaches the builder. Tracks who signed off the row, what was checked, and where it should stop.

Download approval signoff →

Exception register

Separate CSV for non-standard naming requests so the main sheet stays readable and the exception trail remains visible.

Download exception register →

Change log

Lightweight register for edits to the template itself: new fields, deprecated values, status changes, and ownership changes that affect future rows.

Download change log →

Quick-start guide

Short instructions on what each file owns, what not to change casually, and how the template hands off to build, QA, redirect review, and campaign logging. The full suite ZIP also includes the longer SOP guide.

Download quick-start guide →

Operating guide

Longer SOP covering rollout, versioning, audit cadence, boundary rules, and how to keep the template from swallowing the builder, QA checker, or campaign log.

Download operating guide →

Workbook tabs worth keeping

  • Instructions: what the suite owns, what it does not, and how to start safely
  • SOP: adoption path, operating rules, versioning rules, and audit cadence
  • Field Glossary: field-by-field purpose, owner, and misuse boundary
  • Status Rules: exactly what requested, drafted, approved, built, QA checked, live, blocked, and archived mean
  • Approved Values: a protected dictionary layer for controlled values
  • Launch Rows: the active pre-build row tab with governed columns and lifecycle state
  • Examples: annotated good, blocked, versioned, and migrated rows
  • Approval Signoff: naming-readiness gate before build
  • Exception Register: non-standard requests tracked separately
  • Change Log: edits to the template standard itself
  • Archive: retired rows and old versions removed from the live tab

Do not turn the suite into

  • a final URL builder or batch assembler
  • a QA checker or redirect trace archive
  • a post-launch performance dashboard
  • a catch-all campaign evidence log
  • a substitute for the governance framework or naming-rules page
Still not a tool

This suite is deliberately designed to stop at the pre-build control layer. It gives teams a governed row standard, not a fake spreadsheet app. Final URL assembly belongs to the UTM Builder or Bulk UTMs. Structure validation belongs to the UTM QA Checker. Redirect survival belongs to the Redirect Checker. Published evidence belongs to the campaign tracking spreadsheet.

Starter CSV (lean version)

The starter CSV stays lean on purpose. Use it when you need a portable row sheet and already understand the operating rules. Use the workbook when you need the full standard: lifecycle definitions, glossary, signoff, examples, exceptions, and change control.

Monthly template audit: the questions that keep the sheet clean

Do not wait for a reporting mess to discover that the template has drifted. A short recurring audit catches the most expensive failures early and keeps the sheet from silently becoming a campaign log, a naming rules doc, and a builder request queue at the same time.

Are active rows still using approved values?

Scan for free-text mediums, unusual separators, deprecated aliases, and region or audience values that bypass the dictionary.

Are too many rows sitting in draft or built forever?

Long-lived states usually mean the lifecycle is performative. A healthy sheet shows movement, not a graveyard of half-finished rows.

Are exceptions actually temporary?

Check whether approved exceptions are still justified or whether they have quietly become the new standard with no formal policy decision.

Are reused campaigns versioned properly?

Look for rows that were cloned or re-launched without a visible version tag, updated owner, or fresh approval state.

Is the template trying to own downstream work?

If the row is carrying redirect traces, final QA proofs, screenshot evidence, or post-launch reporting interpretation, the asset is swallowing jobs it should hand off.

Can a new team member understand the sheet in one sitting?

If not, the sheet is too reliant on tribal knowledge. Improve the instructions, glossary, and signoff assets before the next busy launch cycle.

Questions teams ask before they adopt the template properly

These are the questions that usually decide whether the sheet becomes a real control or just another spreadsheet nobody trusts.

Does this template replace the naming guide or taxonomy document?

No. The naming guide decides the formula and formatting rules. The taxonomy document decides which values are allowed. The template operationalises those decisions in a working sheet that people use before links go live.

Should this sheet also be the full campaign log?

It can hold the launch-stage row and the live state, but it should not become the full reporting archive. Use the campaign tracking spreadsheet when you need published asset evidence, redirect context, ownership history, and post-launch notes at greater depth.

What is the smallest version of this template that still works?

A useful minimum usually includes row ID, owner, channel, destination URL, source, medium, campaign, status, approver, final built URL, and notes. Anything smaller than that usually starts hiding ownership or lifecycle state.

Should builders be allowed to edit source, medium, and campaign directly?

Not casually. If the builder needs to change the governed values, the row should move backward in the lifecycle so the naming decision can be reviewed properly rather than silently changed during assembly.

How should we handle one-off partner or platform constraints?

Use an exception reason and named approver. If the constraint is likely to recur, push that learning back into the naming rules or taxonomy layer rather than leaving it as a hidden note in one row.

When do we move from this template into automation?

Only after the row structure, status model, approved values, and handoff logic are already stable. Automating a weak template just scales confusion faster, which is why the tracking automation layer belongs later in the system.

Should a rerun use the same row or a new version tag?

Reuse the structure if it genuinely helps, but give the rerun a new version tag and fresh approval state. A rerun that keeps the old row unchanged usually hides meaningful differences in timing, creative, ownership, or launch context.

Can the signoff sheet replace the UTM QA Checker?

No. The signoff sheet only proves the naming row is ready to reach the builder and then QA. The UTM QA Checker still owns final URL structure validation, and the Redirect Checker still owns post-click survival where needed.

Next routes from this page

Use the page below that matches the layer you are actually trying to fix. That is how you keep this template page deep without turning it into a duplicate of five other pages.

Need the campaign naming formula?

Go to the naming-conventions page when the problem is the pattern itself: separators, casing, campaign syntax, and repeatable naming rules.

Open naming conventions →

Need the approved dictionary?

Go to taxonomy design when the issue is the value set: what source and medium values exist, which aliases are allowed, and how deprecations work.

Open taxonomy design →

Need the boundary between taxonomy and naming?

Use the comparison page when teams keep confusing the dictionary with the formatting layer.

Open the boundary guide →

Need the system above this page?

Use the governance framework when you need to understand how naming contract, controlled vocabulary, QA, ownership, and reporting validation fit together.

Open governance framework →

Need to build and validate final URLs?

Move into the UTM Builder, QA Checker, and QA Checklist once the row is approved and the sheet is acting like a real pre-build control.

Go to the builder →

Need the live evidence layer?

Use the campaign tracking spreadsheet when your question is no longer “is this row ready?” but “what actually shipped and who owned it after launch?”

Open the campaign log →