The System Book · The Works

What's caught, and where it goes

Every door into Zorb, checked the same way, and held until it reaches a hand.

WHO OPENS A DOOR THE HANDS The five doorshome, genuine, sewn for others… Wazoodle · AKAS Texread what's held What catches itchecks, routes, spam check CRM - Eaglewhere it's held · 3 tables, 1 base your browser keepsnothing between visits every message isaddressed to a hand
Visitors open one of five doors. One Worker catches and checks every form, then holds it in one base. Two teams read it from there.

Two minutes for the bold lines; about fifteen with every card open.

Part 1

The whole thing at once

However a message used to reach Zorb, it was anyone's guess which hands would catch it. Now every door — home, Genuine, Sewn for Others, Licensing — is checked the same way by one clerk (the Worker) before it's filed into one cabinet (CRM - Eagle) both teams behind Zorb can open.

10fabrics, one claims register governing what's said about each
5doors, checked the same way, through one Worker
3Airtable tables they're filed into, in one base
52+makers whose work with Zorb is already on record

The names we use

The five doors
Home, Genuine, Sewn for Others, Licensing, and the 404 page — served as static files, not a database.
The Worker
The one program, src/worker.js, that serves every page and catches every form posted to /api/form.
The form handler
src/form.js: checks each submission, runs the spam check, and files it into the right table.
CRM - Eagle
The shared Airtable base — also used by Zorb's sibling brands — every door writes into.
Website Inquiries
The table that holds Contact, Report a listing, and Share your story.
Licensing Applications
The table for an application to carry the Zorb Inside® mark.
Reseller Applications
The table for an application to resell or distribute Zorb.
The honeypot
A field a real visitor never sees. A bot that fills it is told it worked, and nothing is kept.

What is public, and what is not?

Anyone can seeKept for the two teams
Every page's words, and every form's own fields and labelsWhat a visitor types into a form, once it's sent
Which old addresses redirect, and where they landWhich hand a message is addressed to, and when

Part 2

The paths

The system is easiest to understand by following what someone hands over, all the way to the hand that catches it. Each path is what happens, step by step, from one door's side.

1What happens when someone uses the Contact form?It asks who they are and what they're making, then is held for the right hand.
  1. They say whether they're a maker or a business, and what they're making (required).
  2. They tick which applications they're working in, and roughly how much fabric they need.
  3. They choose which hand should answer: Wazoodle or AKAS Tex.
  4. The page checks every required field and the spam check before it will send.
  5. The Worker checks the spam check again on its own side, then writes one row to Website Inquiries, addressed to the hand they chose.
  6. A thank-you message names that hand and says one to two business days.

Why: the visitor picks the hand, so the message starts with the right people.

2What happens when a brand applies to carry the Zorb Inside® mark?Products, fabrics, and where they sell — then a row in Licensing Applications.
  1. They give their brand, their website, and what they make.
  2. They say where they bought their Zorb (Wazoodle, AKAS Tex, an approved distributor, or not yet) and where they sell.
  3. They agree to the Zorb Inside® terms — the form won't send without that.
  4. The Worker writes the application to Licensing Applications.

Licensing isn't open on every brand's door: the Worker checks which mark this site carries before it accepts an application.

3What happens when someone reports a listing?A link to the listing and where they saw it, with its own note in its own column.
  1. They paste a link to the listing and say where they saw it (both required).
  2. They can add anything else in a note — kept in its own column, so it never overwrites what another form answered.
  3. The Worker writes the report to Website Inquiries, addressed to Wazoodle.
4What happens when a maker shares their story?Their story, and whether it can be shared — one row in Website Inquiries.
  1. They write their story (required).
  2. They say whether Wazoodle may share it publicly.
  3. The Worker writes it to Website Inquiries, addressed to Wazoodle.
5What happens when someone applies to resell or distribute?Reseller or distributor, where they sell, how much — then a row in Reseller Applications.
  1. They say whether they're a yardage reseller or a distributor; a distributor also gives the regions they serve.
  2. They say where they sell, how much they expect to buy, and where they buy their Zorb from now.
  3. They agree to the seller conditions — required before the form sends.
  4. The Worker writes the application to Reseller Applications, addressed to Wazoodle for a reseller or AKAS Tex for a distributor.
6What happens when someone visits an old address?Old addresses into Zorb's previous site now land on the matching page or section.
  1. The old generation pages all point to the new site's Generations section.
  2. Technology and Sustainability point to the new site's own sections for each.
  3. Contact and Contact Us point to the home page's form.
  4. The old licensing program address, and Zorb Inside, point to the new Licensing page.
  5. Every address is listed twice — with and without a trailing slash — so either form of the old link still works.
7What stops a bot, or a careless resubmission?A field no person can see, and a real spam check on both ends.
  1. Every form carries a hidden field a real visitor never touches; a bot that fills it is told it worked, and nothing is saved.
  2. Every form also carries a real Cloudflare Turnstile widget; the Worker checks its answer with Cloudflare before it writes anything.
  3. Only requests from the site's own domain, its subdomains, or the preview address are accepted.

Part 3

The parts

One card for each part of the system. Each opens with its bold line, then what it's like, then how it works.

1What is the Worker?The one program behind every door and every form.

One Cloudflare Worker (src/worker.js) answers every request: it serves the five static pages from public/, and sends anything posted to /api/form to the form handler. No separate server, no database to keep patched.

2What is the form handler?The part that checks, routes, and files.

src/form.js holds the rules for every one of the five forms: what's required, what the spam check needs to say, which of the three tables a submission belongs in, and which hand's address goes on it. It's shared with Zorb's sibling brand sites, so the rules stay the same everywhere.

3What is CRM - Eagle?The one base every brand's doors write to.

An Airtable base used by zorbfabrics.com and its sibling brand sites. Three tables hold what comes in here: Website Inquiries, Licensing Applications, and Reseller Applications.

4What are the redirects?A list that keeps old links alive.

public/_redirects maps old addresses from Zorb's previous site to the matching page or section of this one. Cloudflare reads the list and sends a visitor on before the new site ever has to answer for the old address.

5What is the spam check?A real Cloudflare Turnstile widget, not a placeholder.

Every form carries a Turnstile widget with the site's real key. The Worker checks the visitor's answer with Cloudflare on every submission; a bad or missing answer is refused before anything is written.

Part 4

The promises

What this system keeps to, whatever else changes.

  1. No form is filed anywhere until the spam check passes. A bad or missing answer is refused first.
  2. A bot that fills the hidden field is told it worked, and nothing is kept.
  3. Every message is addressed to a real hand — Wazoodle or AKAS Tex — never left unaddressed.
  4. Nothing typed into a form stays on the visitor's device between visits.
  5. An old address is redirected, never left to answer with nothing.
  6. No key, token, or password lives in any repository; the secrets it needs are set only in the Cloudflare dashboard.
  7. What Zorb says about itself — the absorbency figures, the under-two-seconds, what it is and isn't — is checked against the claims register before it's repeated anywhere on these three pages.

What runs by itself, and what is done by hand?

By itselfBy hand
The spam check, on every submissionMoving the zorbfabrics.com domain onto this site
Routing a message to the right hand, by what the visitor chose or typedAdding the blog's old addresses to the redirect list
Redirecting an old address to its new pageAnything the form handler doesn't already do — it takes no payments at all

How was it checked?

These three pages were checked against the live site, the real form fields, the ten fabrics' claims register, and the Airtable base they file into — not against an idea of what Zorb should be. An independent read checked every figure here — the fabric count, the door count, the table names, the maker count, and the redirect list — against the actual code, the commit history, and the base, before they were published.

What's ahead?

  1. Moving the zorbfabrics.com domain onto this site, and retiring the old one.
  2. A human walk of all five doors against the live base — already queued.
  3. Whatever the next fabric, the next maker's story, or the next door adds to this page, added the same way: checked, then published.
For buildersThe program, the tables and the settings behind each card above.
  • The program. One Cloudflare Worker, named zorbfabrics-site (wrangler.jsonc), serving public/ as static assets with run_worker_first on /api/*; src/worker.js routes POST /api/form to src/form.js.
  • The base. Airtable base app9FrWjSN7q7ArOB (CRM - Eagle), tables tblodmY0PFIk2D1bf (Website Inquiries), tblpKtGIfZdeXZRLH (Licensing Applications), tble1k3gQCgAPm4Li (Reseller Applications). Field IDs are used throughout, not field names, so renaming a field in Airtable never breaks a form.
  • Secrets. AIRTABLE_TOKEN and TURNSTILE_SECRET, set only in the Cloudflare dashboard; never in this repository.
  • Deploys. A push to a non-production branch uploads a Workers preview only; the production branch gets a full wrangler deploy.