A
?
← Handbook

Naming: one code per client, one id per deliverable, one shape per name

Alex, 18 Sep 2026: "they name things like 'vanity metric' or 'full suite agency' and I don't know what client it's tagged to. Subtasks, we don't know where they're from. Our ads too: from the media buying report we can't tell what kind of creative it was unless you watch it."

Every name below is generated by the portal or copied from it. Nobody composes one. That is the only way a convention survives a busy month.

1. The client code

One code per client, letters and digits only, used in every system: ClickUp folder, task id, Frame.io file, Drive folder, Calendar title, invoice number. Today ClickUp and Stripe disagree on nine clients. The invoice code wins, because it is already on the money and cannot be changed in Stripe without breaking history. A&B has to change anyway: an ampersand breaks every parser.

Client ClickUp today Invoice Use
Apple & ApondleAPPAPONDLEAPONDLE
Atlas & BoneA&BABAB
Beta Pets MartBETABPMBPM
ClearmindsCLEARCMCM
Elevate Learning AcademyELEELEVATEELEVATE
HydseHYDHYDSEHYDSE
Parklab GroupPARKPARKLABPARKLAB
The BaselineBASEBASELINEBASELINE
Atlas HomesAHnoneAH
SHE Real Estate, Ted Recruitment, Claire Lohno folderSHE, TED, CLSHE, TED, CL

Everyone else already agrees (ALUM, CLARTE, CAC, D4S, ERNEST, HOFT, INS, IBS, M2D, OLOID, ONNIE, TODZ, AITEA, GAMMA, LULI, LUNE, OCC). The canonical list lives in the portal's client record and the new Space is built from it. Alex can overrule any row above before the Space is created.

2. The creative name: key, then what it is trying to do

Alex, 20 Sep 2026: "the naming is still pointless. we should have the pillar and also BOFU TOFU MOFU or even the hook type." So the name carries the strategy, not only the address. Filled by the portal from the approved angle and script when the piece is created; nobody types any of it.

HOFT-B03-07 · REE · TOF · P2-quotes · H-CNF · The Same Home
│             │     │     │           │       └── two or three words of title, for people
│             │     │     │           └────────── hook type
│             │     │     └────────────────────── pillar: number and one word from the client's strategy
│             │     └──────────────────────────── funnel stage
│             └────────────────────────────────── format
└──────────────────────────────────────────────── key: client, batch, piece

Written as one line without the dots in ClickUp, Frame.io and Drive:

HOFT-B03-07 REE TOF P2-quotes H-CNF The Same Home

Token Values Where it comes from
KeyCODE-Bnn-nnminted by the portal from the invoice line
FormatREE reel · VID video · LNG long form · TES testimonial · STA static · CAR carousel · PST postthe catalog unit
StageTOF cold, MOF warm, BOF ready to buythe approved angle's funnel stage
PillarP1…P8 plus one word, e.g. P2-quotes, P4-speedthe client's messaging pillars from the strategy; the number is stable for the client, the word is the pillar's short name
HookH-CNF confront · H-QST question · H-STY story · H-PRF proof · H-LST list · H-CUR curiosity · H-DEM demo · H-OFR offerthe script's opening, from the hook bank
Title2–3 wordsthe script title

Statics and carousels carry the same tokens; hook is the headline's device. A month task or a shoot has no strategy tokens: HOFT Account, Oct 2026, HOFT Shoot 2026-10-08 Showroom.

Why in this order: sorting a list or Frame.io project by name groups by client, then batch, then piece; scanning across reads format, stage, pillar, hook without a filter. In Ads Manager the ad name is the same tokens plus version and launch month, so "which hook type wins at TOF for pillar 2" is a sort, not a report.

The same name in every place:

Where Exactly
ClickUp taskHOFT-B03-07 REE TOF P2-quotes H-CNF The Same Home
Frame.io assetHOFT-B03-07 REE TOF P2-quotes H-CNF The Same Home, versions on it
Drive finalsClients / HOFT / Deliverables / HOFT-B03-07 REE TOF P2-quotes H-CNF The Same Home /
Ad nameHOFT-B03-07_REE_TOF_P2-quotes_H-CNF_the-same-home_v2_2610
Portalthe piece's row: package, unit, kind, purpose, pillar, stage, hook, editor, cost, result

The portal matches uploads and ads on the first eleven characters, so a person reading the rest and a machine ignoring it both get what they need. Pillars are defined once per client in the strategy (three to eight, numbered); a new pillar is a strategy decision, not a naming one.

3. Task titles

Task Title Example
DeliverableCODE-Bnn-nn FORMAT STAGE PILLAR HOOK TitleHOFT-B03-07 REE TOF P2-quotes H-CNF The Same Home
Service monthCODE Service, Mon YYYYTODZ Paid media, Oct 2026 · TODZ Account, Oct 2026
ShootCODE Shoot YYYY-MM-DD PlaceHOFT Shoot 2026-10-12 Showroom
Ad hocCODE Ad hoc: what + tag unbilled or the package fieldPARKLAB Ad hoc: Friday static

Kind is one of: Reel, Video, Long form, Testimonial, Static, Carousel, Post, Deck, Page, Other. Title is the script or asset title in plain words, no brackets, no month, no client name (the code says it). "Vanity metric" becomes BPM-007 Reel Vanity metric, and now it has a home.

No subtasks, ever. A subtask hides its client and its parent in every list view, which is exactly the complaint. A version is a version on the deliverable. A step is a checklist item. A second piece is a second deliverable with its own id.

4. Files and folders

  • Frame.io: the file is named with the key only, CODE-Bnn-nn. The second version is uploaded as a version onto that asset, Frame.io's own versioning, so the client and the portal see one deliverable with a version stack. Never a second file, never v2 in the name. Alex, 20 Sep 2026: 'the SOP is that they will use frame versioning, not name the file with the v.' The portal matches the upload to the deliverable by the id, so a file named any other way is a file nobody gets credit for.
  • Drive: Clients / CODE Client / Shoots / YYYY-MM-DD Shoot / Raw, Selects, Exports and Clients / CODE Client / Deliverables / CODE-Bnn-nn / for design files and final exports. Created by the portal when the shoot is booked or the deliverable is created.
  • Calendar: CODE Shoot: Client and CODE Call: Client. The code is what lets meeting time land on the right client automatically.

5. Ads

The convention already exists and is generated by the portal (src/lib/meta/naming.ts, the naming panel on the client's performance page). Campaign carries client, purpose and year (TODZ_LEADGEN_2026_RENO, see campaign-naming.md). The ad name carries the creative, format first, so sorting by name in Ads Manager groups by format and "testimonials did well" is visible without opening anything:

HOFT-B03-07_TES_loan-doesnt-pause_TOF-fear_confront_h1_v2_2610
creative key · format · argument · stage-mechanism · hook · version · launch month

The key leads. The producer and angle code that used to trail the name are resolved from the key in the portal, so the name is shorter and every token in it is something a person reads.

The problem is not the convention, it is that ads are still being named by hand in Ads Manager (RE_2026_LP_STAT_5, EXPED2026_BATCH001_3D_V1_VID). The rule from 1 October: every new ad name is generated in the portal and pasted, never typed. The media buyer's Paid media month checklist gets one item: "all new ads named from the portal". The report's format breakdown then fills itself and the top ads list reads as creative strategy rather than as file names. Old ads are not renamed; the portal keeps guessing their format from the old tokens.

6. Why these shapes

  • The code first, always, so a truncated column still says whose it is.
  • The id second on anything that is a deliverable, so the same string finds it in four systems.
  • Words, not abbreviations, after that, because a person reads it more often than a parser does.
  • No dates in titles except shoots and service months, where the date is the identity.

Related: campaign-naming.md, ../specs/task-model.md, ../specs/video-assigner.md.