Setup
End-to-end install. ~15 minutes if you have everything ready.
Prerequisites
- [ ] Python ≥ 3.9 (any modern Mac/Linux/WSL)
- [ ] (Optional, for the n8n flavor) self-hosted or cloud n8n ≥ 1.50
- [ ] Gumroad account with at least one product
- [ ] (Optional) Slack workspace + Notion workspace for the n8n notification path
Step 1 — Get your Gumroad access token
- Log in to Gumroad.
- Settings → Advanced → Applications → Create access token.
- Copy the token. Treat it like a password.
Step 2 — Configure your products
Edit runner/run-qa.py — the PRODUCTS dict near the top:
PRODUCTS = {
"your-product-permalink": {
"name": "Your Product Name",
"site_base": "https://your-domain.com",
"website_path": "/your-product/",
"expected_price_cents": 2500,
"required_root_files": ["index.html","START-HERE.html",
"Open-Suite.command","Open-Suite.bat","Open-Suite.sh",
"assets/your-logo.jpg"],
"required_subfolder_indexes": ["docs","assets"],
},
}
Add one entry per Gumroad product. The keys are the Gumroad permalinks.
Step 3 — Run the QA
cd gumroad-qa-kit-v1.0.0
export GUMROAD_TOKEN=<your token>
python3 runner/run-qa.py your-product-permalink
Output: a per-section pass/fail report. Exit code 0 on full pass, 1 on any failure. Each check is tagged with the GumRoad.md section it derives from so you know exactly which page section to consult on a fail.
Step 4 — (Optional) Import the n8n workflow
- Open n8n → Workflows → Import from File → pick
workflows/gumroad-qa-workflow.json. - Re-bind credentials:
- Gumroad — HTTP Header Auth, value
Bearer <your token>- Slack — Slack API, bot token withchat:writescope - Notion — internal integration token, with a "QA log" database shared - Set environment variables (n8n → Settings → Variables):
-
GUMROAD_MD_URL— path or HTTPS URL to your GumRoad.md file -SLACK_QA_CHANNEL— channel ID likeC0123456-NOTION_QA_LOG_DB_ID— your QA log database ID - Edit the Config: which product to QA Code node with your product details.
- Run via the Manual Trigger.
Step 5 — Customize the spec
spec/GumRoad.md is the canonical operator playbook. Edit it freely:
- Add company-specific entry-point files
- Add new gotcha bullets
- Retune the launch sequence
The runner reads it at runtime and validates that every section the runner expects is still present. If you remove a required section, the run fails the spec-validation step loudly so you know to update either the spec or the runner.
What "ready to launch" looks like
GumRoad.md § spec
✓ GumRoad.md has section: Phase 3 — Gumroad product setup
✓ GumRoad.md has section: Buyer entry-point checklist
...
GumRoad.md § Phase 3 setup
✓ Product published
✓ Has uploaded file
✓ Cover image set
✓ Price > 0 — $25.00
...
GumRoad.md § Gotcha: Custom Receipt URL
✓ Custom Receipt URL set — https://your-domain.com/your-product/thank-you.html
✓ Receipt URL points at our thank-you page
PASS 24/24 checks passed.
If you see any ✗, fix the underlying issue (the failure detail tells you what to look at) and re-run. Don't paper over a failure by changing the runner — change the underlying product setup or the spec.
"Meerkat LLC" and the Professor Meerkat mascot are marks of Meerkat LLC.
© 2026 Meerkat LLC · meerkat-llc.com · support@meerkat-llc.com · built with care in Anna, Texas