Ecommerce Plan — Industrial Consumables (30 SKUs)

Date: 2026-06-04 Architecture: Headless Shopify backend + static frontend channel sites Scale: ~30 SKUs, 1–4 channel sites, 1–3 items per order Inventory: No real-time tracking — manual sourcing / upward substitution


Contents

  1. Architecture Overview
  2. Content Strategy: Talking Human First
  3. Page Layout Spec
  4. Minimum Entry Point Pages (SEO + Agent Optimization)
  5. Cart & Checkout Flow
  6. Technical Build
  7. Content Inventory: Mapping SKUs to Perspectives
  8. Agent Search Optimization Notes
  9. Hosting & Deployment
  10. Build Order

1. Architecture Overview

                    ┌──────────────────────────┐
                    │      Shopify Admin        │
                    │  30 products, orders,     │
                    │  customers, fulfillment   │
                    └────────────┬─────────────┘
                                 │
                     Storefront API (GraphQL)
                     Public token — safe in JS
                                 │
          ┌──────────────────────┼──────────────────────┐
          │                      │                      │
    ┌─────┴──────┐        ┌─────┴──────┐        ┌─────┴──────┐
    │ Channel A  │        │ Channel B  │        │ Channel C  │
    │ (use case) │        │ (material) │        │(compliance)│
    │ static     │        │ static     │        │ static     │
    │ site       │        │ site       │        │ site       │
    └─────┬──────┘        └─────┬──────┘        └─────┬──────┘
          │                     │                     │
    ┌─────┴──────┐        ┌─────┴──────┐        ┌─────┴──────┐
    │ 8-10 pages │        │ 8-10 pages │        │ 8-10 pages │
    │ per site   │        │ per site   │        │ per site   │
    └────────────┘        └────────────┘        └────────────┘

Core principle

One Shopify store. All 30 products live there with their variant IDs, prices, images, descriptions, and custom metafields (lead time, certifications, weight capacity).

Multiple static frontends. Each channel site is its own static site — pure HTML + CSS + JS, hosted on a different domain, with its own branding and content angle. They all call the same Storefront API.

Shared cart library. A single cart.js is used across all sites. Add-to-cart buttons everywhere call the same functions. The customer ends up on Shopify’s hosted checkout regardless of which channel they started from.


2. Content Strategy: Talking Human First

The philosophy

Every SKU on the list has multiple identities:

Perspective A human says…
Use case “I need liners that fit my 55-gallon drums for waste disposal”
Material “I need 6mil poly, it has to be tough enough to not puncture”
Compliance “It has to be food-grade FDA approved for my facility”
Size/fit “My gaylords are 48x40, what liner fits?”
Budget “What’s the cheapest 2mil bulk liner”

Same product. Different language.

The content approach is simple: each entry point page is written for a specific human with a specific problem. No generic SEO mash. The copy assumes the reader knows their own industry and just needs to know whether this specific product fits their situation.

Voice guidelines

What authority looks like here


3. Page Layout Spec

All channel sites share the same basic layout template. Each page is a variation on this structure.

Layout wireframe

┌─────────────────────────────────────────────────────┐
│  [Logo]                        [Cart ICON] [Cart #] │  ← Header, lean
├─────────────────────────────────────────────────────┤
│                                                       │
│  [ ] Skip to content                                  │
│                                                       │
│  ┌─────────────────────────────────────────────┐     │
│  │  H1: Use-case / problem headline             │     │
│  │  Subtitle: 1-2 sentences framing the need   │     │
│  └─────────────────────────────────────────────┘     │
│                                                       │
│  ┌─────────────────────────────────────────────┐     │
│  │  Hero / illustrative image or diagram        │     │ ← Optional
│  └─────────────────────────────────────────────┘     │
│                                                       │
│  ## The situation                                    │
│  Body copy — 1-2 paragraphs. What problem this       │
│  solves, who needs it, why it matters.               │
│                                                       │
│  ## What to look for                                  │
│  Key specs, compliance marks, material properties     │
│  that matter for this use case.                       │
│                                                       │
│  ## Products for this job                             │
│                                                       │
│  ┌────────────┬──────────┬──────┬───────┬──────┐     │
│  │ Item #     │ Dims     │ Mil  │ Price │ Qty  │     │ ← Table, sortable
│  ├────────────┼──────────┼──────┼───────┼──────┤     │   by price or
│  │ RL-TIOBB-  │ 22×8×5.5 │ 2mil │ $11.21│  [2] │     │   thickness
│  │ LIE        │          │      │ /ea   │  [+] │     │
│  │ RL-TIOBB-  │ 22×8×5.5 │ 4mil │ $15.19│  [1] │     │
│  │ BEE        │          │      │ /ea   │  [+] │     │
│  └────────────┴──────────┴──────┴───────┴──────┘     │
│                                                       │
│  Each row: QTY selector + [Add to Cart] button        │
│                                                       │
│  ## Upward substitution note                           │
│  If you need it sooner/thicker — suggest alternatives  │
│                                                       │
│  ## Common questions about [topic]                     │
│  ┌─────────────────────────────────────────────┐     │
│  │ Q: Can this liner handle…                    │     │ ← FAQ schema
│  │ A: Yes, up to X lbs / No, use Y instead      │     │
│  └─────────────────────────────────────────────┘     │
│                                                       │
│  [Footer: About us | All products | Contact]          │
└─────────────────────────────────────────────────────┘

Key layout decisions


4. Minimum Entry Point Pages (SEO + Agent Optimization)

The minimum viable set: 10 pages per channel site

These 10 pages cover the semantic landscape. Every search query or agent retrieval for an industrial liner question will find at least one page that answers it.

# Page Perspective Target keyword area
1 Home / All Products Overview industrial liners, polyethylene bags bulk
2 Heavy-Duty Gaylord Box Liners Use case gaylord box liners, bulk container liners
3 55-Gallon Drum Liners Use case drum liners, 55 gallon drum inserts
4 Food Grade & FDA-Compliant Liners Compliance food grade liners, FDA approved plastic bags
5 Chemical & Hazardous Material Liners Compliance chemical resistant liners, hazmat containment bags
6 2mil – 4mil Economy to General Purpose Liners Material 2mil poly liners, lightweight industrial bags
7 6mil – 10mil Heavy Duty & Extra Heavy Liners Material 6mil poly liners, heavy duty industrial bags
8 Liner Size & Fit Guide Educational how to measure drum liner size, gaylord box liner sizing
9 Dewatering & Sediment Control Bags Use case dewatering bags, sediment control bags
10 Industrial Liner Material Guide (LDPE vs LLDPE vs HDPE) Educational polyethylene liner grades, LLDPE vs LDPE strength

Why 10?

What each page needs to contain

Every entry point page needs:

  1. H1 that states the problem or use case in human language
  2. 200–400 word authoritative intro — who this is for, what problem it solves
  3. Product table — relevant SKUs with specs and add-to-cart
  4. 2–4 contextual subheadings — tradeoffs, substitution advice, best practices
  5. FAQ section — 3–5 real questions (with FAQ schema)
  6. Internal links — 2–4 links to related perspective pages
  7. Schema markup:
    • Product schema on each product row/table
    • FAQPage schema on Q&A section
    • BreadcrumbList schema
    • Article schema on the page itself

5. Cart & Checkout Flow

A single shared cart.js handles everything before checkout.

1. Page loads → cart.js initializes
2. User sees product info → reads copy → decides
3. User selects quantity → clicks [Add to Cart]
4. cart.js calls Storefront API → creates/updates Shopify cart
5. Mini cart appears → "2 items added" + subtotal + [Checkout]
6. User clicks [Checkout] → redirected to checkout.shopify.com
7. Shopify handles payment → creates order → shows in admin

Cart state

What the cart does NOT do

Why not the Buy Button?

The Shopify Buy Button can’t tell which channel site or perspective page the sale came from. With the Storefront API + JS cart, you can attach a channel identifier as a line item property:

addToCart(variantId, 2, { channel: 'compliance-site', page: 'food-grade-liners' })

This metadata appears in the Shopify order admin. You know exactly where every order originated.


6. Technical Build

Shopify setup

Task Detail
Products 30 products, each with name, SKU, price, weight, dimensions, images
Variants Per-box pricing as a variant option if needed (box vs single)
Metafields Custom fields: lead_time, weight_capacity_lbs, mil_thickness, material_grade, compliance_standards, quantity_per_box
Collections Grouped by: use case / material / compliance — for easy API filtering per channel
Storefront API Enabled. Public access token generated.

Frontend stack

Layer Choice Why
Hosting Netlify or Cloudflare Pages Free tier, global CDN, deploy from git
Framework No framework — plain HTML + CSS + JS They’re effectively brochure sites with a cart. No build step, no framework churn.
CSS Simple utility-light approach or a small custom CSS file Under 10KB
JS One cart.js file + page-specific scripts Cart logic shared across all pages and all channel sites
Build tools None needed Pure static files. Edit → deploy.

Directory structure (one channel site)

channel-a.com/
├── index.html
├── gaylord-box-liners.html
├── drum-liners.html
├── food-grade-liners.html
├── chemical-liners.html
├── economy-liners-2-to-4-mil.html
├── heavy-duty-liners-6-to-10-mil.html
├── liner-size-guide.html
├── dewatering-bags.html
├── liner-material-guide.html
├── css/
│   └── style.css
├── js/
│   ├── cart.js              ← shared across all sites
│   └── site-config.js       ← channel-specific config (brand, collection filter)
└── images/

Multi-channel config

Each channel site has a site-config.js:

window.SITE_CONFIG = {
  name: 'Industrial Liner Co',
  shopifyDomain: 'your-store.myshopify.com',
  storefrontToken: 'abc123...',
  channelId: 'compliance-site',
  collectionHandle: 'food-grade',  // optional — filter products
  accentColor: '#2b6cb0',
  logoUrl: '/images/logo.png',
}

The cart.js reads window.SITE_CONFIG to know which store to talk to and what channel metadata to attach to orders.


7. Content Inventory: Mapping SKUs to Perspectives

Product categories (derived from SKU prefixes)

Prefix Type Count
RL- Roll-form liners (continuous on rolls) 17
DL- Drum liners (pre-made, individual) 7
DSL- Specialty bags (dewatering?) 2

Dimension clusters

Size range Typical use SKUs
22” × 8” × 5.5” (standard) 55-gal drums, standard gaylord boxes ~12
24” × 8” × 5.5–6.3” Oversized drums ~3
33.5” × 8” × 6” Large drums, totes ~2
37–39” × 8–8.5” × 5.5–9” Extra-large drums, specialty ~5

Thickness spectrum

Mil Grade Typical use
2mil Economy (EQ) Lightweight, single-use, non-critical
3mil General purpose Standard industrial, food contact
4mil Heavy duty Puncture risk, moderate loads
6mil Extra heavy Sharp contents, high loads
8–10mil Super duty Extreme conditions, hazmat
90 GSM Non-woven specialty Dewatering, filtration

Compliance tiers

Tier SKUs Standards
Food grade Select RL- and DL- items FDA 21 CFR, USDA
General industrial Majority ASTM D…
Chemical containment Heavy mil items EPA, DOT related

8. Agent Search Optimization Notes

“Agent Search Optimization” (LLM / AI chat retrieval) values different signals than traditional SEO. Here’s what matters.

For traditional SEO

For AI / LLM retrieval (ChatGPT, Perplexity, Gemini, Claude)

Signal How we address it
Clean heading hierarchy Every page has a clear H1 → H2 → H3 structure. Not just for skimming — agents parse heading trees to understand page structure.
Specific facts in natural language “55-gallon drum liners weigh up to 1,350 lbs and fit standard 22×8×5.5 openings.” Not “heavy duty.” Specifics.
Structured data Product schema, FAQ schema, Article schema. Agents use this as ground truth.
FAQ sections FAQPage schema is probably the single highest-value structured data format for AI retrieval. Each page gets 3–5 real questions with answers.
Topic cluster linking Internal links between perspective pages. Agents follow these to understand breadth of expertise.
Authoritative but not promotional AI models are tuned to favor neutral, expert-sounding content over marketing copy. Our “authority” approach fits this naturally.
Clear entity references “Polyethylene (PE)”, “Linear Low-Density Polyethylene (LLDPE)”, “FDA 21 CFR 177.1520” — naming actual entities improves agent comprehension.
No fluff, no padding Agents penalize content that wastes tokens. Every paragraph earns its place.

Specific file for agent consumption

Optional: an /llms.txt file at the root of each site. This is a proposed standard (llmstxt.org) that gives AI agents a map of the site’s most important pages.

# Industrial Liner Co
> Expert resources for industrial polyethylene liners and bags.

## Essential pages
- [All products](/)
- [Heavy-Duty Gaylord Box Liners](/gaylord-box-liners)
- [55-Gallon Drum Liners](/drum-liners)
- [Food Grade & FDA-Compliant Liners](/food-grade-liners)
- [Liner Size & Fit Guide](/liner-size-guide)
- [Industrial Liner Material Guide](/liner-material-guide)

## About
We manufacture and supply industrial polyethylene liners...

9. Hosting & Deployment

Channel Domain Hosting Cost
Shopify backend store.myshopify.com Shopify $39/mo
Channel A example.com Netlify/Cloudflare Pages Free
Channel B brand2.com Netlify/Cloudflare Pages Free
Channel C brand3.com Netlify/Cloudflare Pages Free
Channel D brand4.com Netlify/Cloudflare Pages Free

Deployment: push to git → auto-deploys. Zero server maintenance.


10. Build Order

Phase 1: Shopify foundation (2-3 days)

Phase 2: Cart library + template (2-3 days)

Phase 3: Content (ongoing, 3-5 days for first channel)

Phase 4: Additional channels (1-2 days each)

Phase 5: Refine


Open questions to resolve

  1. Per-box pricing. Some SKUs show “Per Box” quantities (2, 3, 4). Is the Shopify price per piece, per box, or should there be a box qty selector?
  2. “CORE” variants. The RL-TIOBB-HECS CORE is dimensionally identical to RL-TIOBB-HECS but different pricing/stock. Single product with variant option, or separate product?
  3. One vs multiple stores. One Shopify store for all channels is assumed. Confirm if any channel needs truly separate pricing or catalog.
  4. Lead time updates. Static text on pages or pull from Shopify metafields (requires API call)?
  5. Image assets. Do you have or need product images for all 30 SKUs?
← Back to portal