Age-gating cannabis video across state rules
California's 71.6 percent 21-plus audience test turns distribution into a production input. A platform-by-platform gating setup and per-state matrix.
Most marketing teams treat placement as a decision made after the edit is locked. In cannabis, placement decides the edit. California's Business and Professions Code section 26151 requires that advertising only be displayed where at least 71.6 percent of the audience is reasonably expected to be twenty-one or older, as determined by reliable, up-to-date audience composition data. That single number determines which surfaces a video can legally reach, which determines what the video has to carry on screen, which determines how you cut it.
So the audience composition threshold is not a compliance step at the end. It is an input to the brief, alongside runtime and aspect ratio.
None of this is legal advice, and none of it substitutes for counsel licensed in the states you operate in. What follows is the operational shape of the problem.
The threshold is a placement test, not a content test
The trap is reading 71.6 percent as a statement about your brand's followers. It is a statement about the surface. The question the rule asks is: of the people who will see this placement, what share is reasonably expected to be twenty-one or older, and what evidence do you have for that expectation at the time of placement?
That has three practical consequences.
You need data, not a belief. "Our audience skews adult" is not audience composition data. Platform-reported age breakdowns, publisher media kits and third-party audience measurement are. Whatever you use, screenshot it and date it, because the defensible position is what you knew when you placed the ad — not what the dashboard says a year later.
A share re-places your content. A compliant placement that gets reshared onto an ungated surface is a different placement with a different audience. This is why organic cannabis video tends to be built without a download-and-repost affordance and without the kind of hook that begs to be stitched.
Owned surfaces are the only ones you control. Your website age gate, your SMS list, your email list and your in-store screens have known, gateable audiences. Everything else is somebody else's audience composition, measured by somebody else.
Audience-composition thresholds like this one exist in other adult-only categories too — the placement standards that shape video for distilleries rhyme with this, even though the underlying statutes are unrelated.
Where cannabis video can actually run
| Surface | Paid | Organic | Gating mechanism |
|---|---|---|---|
| Google (Search, YouTube ads, Display) | THC not accepted in the US | — | N/A |
| Meta (Facebook, Instagram) | THC not accepted in the US | Risky but common | Page minimum-age setting and per-post audience restriction |
| YouTube (channel uploads) | — | Yes, with restriction | Age restriction applied at upload; removes signed-out and under-18 viewers |
| TikTok | Not accepted | Prohibited category | Community guidelines treat drugs and controlled substances as prohibited content |
| Cannabis marketplaces and menu platforms | Yes | Yes | The platform gates at the door |
| Owned site | — | Yes | Age affirmation on entry |
| Email and SMS | — | Yes | Age-verified opt-in at list join |
| In-store and window screens | — | Yes | Physical premises; state signage rules apply |
Neither Google nor Meta accepts paid advertising for state-licensed THC cannabis in the US, which removes the two surfaces most brands default to and pushes budget into owned media, marketplaces and out-of-home. Both operate narrow carve-outs for certain certified hemp-derived CBD products, so establish which side of that line your SKU sits on before assuming the table applies to it. Platform policies and control names also move, so verify both before you build a distribution plan on them.
The practical read: assume paid social is off the table, assume organic social is a rented surface that can vanish, and build the library so that the owned surfaces carry the load. That is closer to the owned, earned and paid distribution split than to a normal social calendar, and it changes what you produce. Menu drops, terpene explainers and staff picks perform on a site and an SMS list. They do not need a hook engineered for an algorithm that will not serve them anyway.
Keep a per-state matrix, not a per-state rewrite
States vary, and they vary on more axes than the audience number. The mistake is producing a separate video per state. The fix is producing one master and a table of what each state changes.
Maintain a column per state you operate in, with a row for each of these:
- Audience composition threshold. The percentage, the wording of the standard, and what counts as acceptable evidence in that state.
- Required statements. Warning language, responsible-use language, and whether it must appear in the advertisement itself rather than on a landing page.
- Licence identification. Several states require the licence number on the face of the advertisement. Note the exact placement and duration expectations.
- Content prohibitions. Depictions of consumption, imagery that appeals to minors, cartoons and mascots, health or therapeutic claims, and price or promotion restrictions.
- Location rules. Proximity restrictions for physical signage and any billboard limits.
- Review and retention. Whether creative must be retained, for how long, and whether any pre-approval applies.
Counsel owns the cells. Marketing owns the fact that the brief inherits from the matrix before a single frame is generated.
What this does to the edit
Once the matrix exists, the production pattern falls out of it.
Build a claim-free master. Everything that varies by state lives in a swap layer, not in the master. The master carries the product, the shot design and the voice. It carries no warning card, no licence line and no price.
Never bake state text into a generated frame. A generated image that contains a licence number or a warning statement is unauditable and frequently wrong at the character level. Every regulatory line goes on as a typed overlay so it can be verified, corrected and re-rendered without touching the picture. Add timed text overlays handles the mechanics, and what on-screen text actually holds up in generated video covers why the generated route fails.
Save the master as a reusable edit. One timeline, one set of swap slots, one re-render per state. Saving a video edit as a reusable draft is the difference between a fifteen-minute state variant and a fresh project.
Burn the captions in. These videos play muted on a phone or on a wall-mounted screen in a shop with no audio path. Sidecar subtitle files do not survive either context, so burned-in captions are the default rather than an accessibility nicety.
Cut vertical natively where the destination is vertical. Reframing a horizontal master pushes typed overlays out of the safe area, and a warning card that crops is worse than no warning card. Make video vertical or generate to the target ratio in the first place.
The content rules that survive every state
Some restrictions vary. These do not vary enough to be worth tracking separately, so treat them as house rules in the script template:
- No consumption on screen. No inhalation, no combustion, no smoke, no visible impairment. This includes generated footage, which platforms and regulators read the same way they read filmed footage.
- Nothing that appeals to minors. No cartoon styling, no characters, no candy language, no toy-adjacent packaging cues, no soundtrack pulled from a teen trend.
- No health or therapeutic claims. Not "helps with sleep," not "for anxiety," not an implied claim carried by a graphic instead of a sentence. Regulators read imagery. The same logic that governs before-and-after rules in health and beauty ads applies here with less tolerance.
- No synthetic person who reads as a customer testimonial. A generated figure describing an effect is a fabricated endorsement and a therapeutic claim in one shot.
- Label the synthetic material you do use. Synthetic media disclosure is a separate obligation from the cannabis rules, and it stacks. The cross-platform labelling checklist covers where each label goes.
Run the whole thing through a publish check before it leaves the building — checking a video before you publish it is a five-minute pass that catches the frame where a warning card got covered by a caption.
FAQ
Does an age gate on our website satisfy the 71.6 percent requirement?
They are different things. An age affirmation gate controls who proceeds past your homepage. The audience composition threshold is about the surface where the advertising is displayed — including surfaces you do not own. A video embedded behind your own gate is in reasonable shape; the same video running as a pre-roll on a third-party site is judged by that site's audience data, which you need to obtain and keep.
Can we run cannabis video ads if we geo-target only legal states?
Geo-targeting is not the constraint that matters here. Google and Meta do not accept paid advertising for state-licensed THC cannabis in the US regardless of where you point it, so the question rarely gets as far as targeting. Where paid placement is available — cannabis marketplaces, some out-of-home, some endemic publishers — you still owe the audience composition test and the state's content rules on top of the geography.
How do we personalise menu-drop videos per store without producing dozens of edits?
Keep the store-specific material in text and voice, never in the picture. Store name, address, hours, licence number and the day's drop go on as typed overlays over a shared master, and the voice line is regenerated from a one-line script change with text to speech. One approved master, one swap sheet, one render per store. The social media video generator handles the per-store output sizes.
What happens to our library if a state changes its threshold?
This is the argument for keeping every regulatory element in a swap layer. If a state moves its number or changes required wording, you update one row of the matrix, change the affected overlay text, and re-render the affected variants from the saved timeline. If the warning was baked into a generated frame, you re-produce the asset instead — which is why that shortcut costs more than it saves.