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 & Apondle | APP | APONDLE | APONDLE |
| Atlas & Bone | A&B | AB | AB |
| Beta Pets Mart | BETA | BPM | BPM |
| Clearminds | CLEAR | CM | CM |
| Elevate Learning Academy | ELE | ELEVATE | ELEVATE |
| Hydse | HYD | HYDSE | HYDSE |
| Parklab Group | PARK | PARKLAB | PARKLAB |
| The Baseline | BASE | BASELINE | BASELINE |
| Atlas Homes | AH | none | AH |
| SHE Real Estate, Ted Recruitment, Claire Loh | no folder | SHE, TED, CL | SHE, 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 |
|---|---|---|
| Key | CODE-Bnn-nn | minted by the portal from the invoice line |
| Format | REE reel · VID video · LNG long form · TES testimonial · STA static · CAR carousel · PST post | the catalog unit |
| Stage | TOF cold, MOF warm, BOF ready to buy | the approved angle's funnel stage |
| Pillar | P1…P8 plus one word, e.g. P2-quotes, P4-speed | the client's messaging pillars from the strategy; the number is stable for the client, the word is the pillar's short name |
| Hook | H-CNF confront · H-QST question · H-STY story · H-PRF proof · H-LST list · H-CUR curiosity · H-DEM demo · H-OFR offer | the script's opening, from the hook bank |
| Title | 2–3 words | the 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 task | HOFT-B03-07 REE TOF P2-quotes H-CNF The Same Home |
| Frame.io asset | HOFT-B03-07 REE TOF P2-quotes H-CNF The Same Home, versions on it |
| Drive finals | Clients / HOFT / Deliverables / HOFT-B03-07 REE TOF P2-quotes H-CNF The Same Home / |
| Ad name | HOFT-B03-07_REE_TOF_P2-quotes_H-CNF_the-same-home_v2_2610 |
| Portal | the 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 |
|---|---|---|
| Deliverable | CODE-Bnn-nn FORMAT STAGE PILLAR HOOK Title | HOFT-B03-07 REE TOF P2-quotes H-CNF The Same Home |
| Service month | CODE Service, Mon YYYY | TODZ Paid media, Oct 2026 · TODZ Account, Oct 2026 |
| Shoot | CODE Shoot YYYY-MM-DD Place | HOFT Shoot 2026-10-12 Showroom |
| Ad hoc | CODE Ad hoc: what + tag unbilled or the package field | PARKLAB 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, neverv2in 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, ExportsandClients / 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: ClientandCODE 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.