One good template beats a hundred hand-tuned pages. Set the H1 as strain plus form, keep specs in crawlable HTML, wire Product schema and a COA link into the layout, and every SKU you add starts out optimized.
The anatomy, in one list
Before touching your CMS, agree on what every product page must contain. My working list, in page order:
- H1 built from strain name plus product form
- A unique description slot of at least 80 words
- A spec table: THC and CBD percentages, weight, strain type
- A link to the certificate of analysis (COA) for the current batch
- A reviews section that renders as text
- Related products pulled from the same category
Six slots. If your current product pages are missing three of them, that gap explains more about your rankings than any keyword tweak will.
H1: strain plus form
"Wedding Cake" alone is ambiguous — it could be flower, a cart, or a pre-roll, and each is a different search. "Wedding Cake Live Resin Cartridge 1g" tells both the shopper and the crawler exactly what the page sells. Bake the pattern into the template so nobody entering a new product has to think about it.
Specs go in HTML, not screenshots
Plenty of menus render potency as an image badge or load it through a script after the page paints. Either way, the number shoppers search for never reaches the index. Put THC percentage, weight, and strain type in a plain HTML table. It is the least glamorous part of the template and probably the most valuable.
Product schema, wired in once
Add Product markup to the template itself — name, image, description, and an offers block with price, priceCurrency, and availability — and every page generated from it carries valid structured data with zero per-product effort. One caveat: only declare a price in the markup if that price is visible on the page. Some states restrict published pricing, and markup that contradicts the visible page is worse than none.
COA and reviews get permanent slots
A COA link earns trust with cautious buyers and gives the page an element almost no thin competitor bothers with. Reviews add fresh, unique text to a page type that otherwise goes stale. Neither happens reliably unless the template reserves space for them, so reserve it.
Worked example: a GG4 eighth
The template filled in for one SKU looks like this. H1: "GG4 Flower — 3.5g Eighth." Description: 110 words on the Chem Sis and Sour Dubb cross, the diesel-and-chocolate nose, and who tends to reach for it. Spec table: 26% THC, hybrid, 3.5g. COA linked to the current batch PDF. Four customer reviews below the fold. Total build time once the template existed: about six minutes.
Key takeaways
- Fix the template once and every product page inherits the fix.
- H1 pattern: strain name plus product form, no exceptions.
- Potency and weight belong in an HTML spec table, never in images.
- Only mark up prices that are visible on the page.
Frequently asked questions
How much unique text does each product page need?
Enough to describe the actual product. Somewhere between 80 and 150 words covering lineage, effects, and format usually does it. The template provides the slot; a copied-and-pasted description across 40 SKUs gives Google no reason to rank any of them.
Should the template include the price?
Yes, in visible HTML and in the Product schema offers field, as long as your state allows published pricing. If your platform hides prices behind an age gate, leave price out of the markup rather than declaring something crawlers cannot see.
What about products sold in multiple weights?
Keep one page per product and handle weights as options on that page. Separate URLs for 1g, 3.5g, and 7g of the same flower split your ranking signals three ways and usually end up competing with each other.
Want this done for your brand?
We build cannabis & CBD search visibility with full transparency, for dispensaries, brands, and MSOs.
Get a free cannabis SEO audit ›