Documentation

GumRoad.md (spec)

GumRoad.md — Operator Playbook (template)

This is a reusable playbook template. Fork it for your own digital-product launches. Replace [YOUR COMPANY], your-domain.com, yourstore.gumroad.com, etc. with your real values. Keep the section headers — the bundled QA runner reads this file and validates every section is present.

Original by Meerkat LLC · Anna, Texas. Sold via Gumroad as the Gumroad QA Kit.


A reusable reference for launching any [YOUR COMPANY] digital product on Gumroad. Walks through the same "set up to the legal-review gate, then pause for attorney sign-off" pattern that meerkat-llc-studio and your-product-permalink both use.

Last updated: 2026-05-06. Operator-only. Not deployed publicly.


Gumroad Stripe Payment Link
Per-sale fee 10% + $0.30 (free plan) → 3.5%+$0.30 (paid plan once consistent) 2.9% + $0.30
File delivery Built-in, instant DIY (n8n + S3 signed URL + Postmark)
License keys Built-in (optional) DIY
EU VAT MOSS Handled automatically DIY (Stripe Tax adds 0.5%)
Buyer trust signal "Gumroad" name carries indie-creator weight Stripe is more "store" feel
Setup time ~30 minutes ~2 hours (n8n flow + Postmark + S3)
Best for First launches, low volume, simple SKUs High volume, brandable checkout, custom flows

Rule of thumb: every new [your brand] product launches on Gumroad first. Move to Stripe per-product once monthly volume × Gumroad fee delta > $100/mo.


The reusable launch sequence

This is the order [your brand] products go through. It's the same for every release.

Phase 1 — Pre-listing prep (no Gumroad action yet)

  1. Build the .zip. Whatever the product is, package it deliverable-ready. See your-product-permalink/ and meerkat-llc-studio/ for two reference packages.
  2. Build the marketing pages. Mirror the studio pattern — index.html, getting-started.html, support.html, faq.html, thank-you.html, plus SEO files (robots.txt, sitemap.xml, _headers, _redirects, netlify.toml, vercel.json, wrangler.toml).
  3. Stage the legal pages (terms.html, privacy.html, refunds.html, license.html, acceptable-use.html) as drafts based on gumroad-docs/01–05. STOP HERE. Hand to attorney for review.
  4. Build the Gumroad listing pack in <product>/gumroad-listing/: - 01-product-description.md (paste into Gumroad listing) - 02-feature-bullets.md (top fold) - 03-faq.md (append below description) - 04-delivery-email.md (receipt customization) - 05-refund-policy.md (snippet for the listing) - 06-launch-checklist.md (your checklist) - 07-promo-pack.md (launch-week social copy)

Phase 2 — Attorney review (the gate)

Send the attorney:

Common asks they'll come back with:

Use the per-product gumroad-listing/06-launch-checklist.md for the full step-by-step. The high-level steps are below.

One-time account prep (skip if done once)

Per-product setup

  1. Products → New product → Digital
  2. Title, permalink (matching the website folder name), price (USD, fixed)
  3. Upload the .zip
  4. Cover image: 1200×630 OG image
  5. Description: paste from gumroad-listing/01-product-description.md
  6. Append FAQ + refund snippet
  7. Custom Receipt URL → set to https://your-domain.com/<product>/thank-you.htmlsilent failure mode — without this set, buyers stay on Gumroad's default download page and never see your post-purchase page. Every first-time Gumroad seller misses this.
  8. Settings → Receipts: customize the receipt email using gumroad-listing/04-delivery-email.md
  9. License keys: enable if desired (Settings → License key) — Gumroad will then append ?license_key=... to the redirect URL

After-purchase URL parameters (what Gumroad sends to the redirect)

Gumroad appends these query-string params to the Custom Receipt URL on a successful purchase:

Param Format Notes
sale_id string Gumroad's order ID — render as the order number
purchaser_id string buyer's Gumroad account id
product_id string matches the Gumroad product GUID
product_permalink string e.g. your-product-permalink
product_name string display name
email string buyer's email — render and use for support follow-ups
price integer string in cents (e.g. "2500" for $25.00) — divide by 100 to display
currency string usd etc.
quantity integer string usually 1
license_key string only present if license keys are enabled on the product
subscription_id string only on subscription products
discover_fee_charged boolean whether Gumroad charged the Discover fee

The thank-you.html template in every product reads these params via inline JS (see the <script> block at the bottom of your-product-permalink/thank-you.html for the canonical pattern). It populates Order, Email, Amount, and License Key on the page so the buyer sees their actual purchase details — no server work required.

The same template also handles Stripe's ?session_id=cs_xxx flavor for Path B.

To test the page in isolation (any browser):

thank-you.html?sale_id=demo123&email=buyer@example.com&price=2500&license_key=ABCD-1234

If you change the per-product price, you do NOT need to edit the HTML — the JS reads price from the URL and renders it. The static $25.00 in the markup is just a fallback for direct visitors with no params.

Wire the website Buy buttons

Two places to update for every product:

Both should point at https://yourstore.gumroad.com/l/<permalink> (or your real Gumroad URL once it's confirmed live).

Then deploy:

cd ~/Desktop/meerkat-llc-site
./deploy.sh

Test the full flow

  1. Open the homepage product card in a private window → click Buy
  2. Complete a real test purchase with your own card
  3. Confirm receipt email body, .zip downloads + extracts cleanly, success redirect lands on thank-you.html
  4. Refund yourself in Gumroad → Sales → Refund (so you don't keep the $25 from yourself)

Phase 4 — Launch + monitor (use gumroad-listing/07-promo-pack.md)

Phase 5 — Ongoing


Worked example — Your Product Name ($25)

Where it currently sits in the sequence (May 2026):

Buy-button placeholders are wired in: - meerkat-llc-site/index.html (homepage card) - meerkat-llc-site/your-product-permalink/index.html (package landing)

Both currently point at https://yourstore.gumroad.com/l/your-product-permalink, which becomes live once Phase 3 publishes the listing.


Reference docs

File What it is
gumroad-docs/00-README.md Overview of the central Gumroad doc pack
gumroad-docs/01-terms-of-service.md Source ToS — feeds product terms.html drafts
gumroad-docs/02-privacy-policy.md Source privacy policy
gumroad-docs/03-refund-policy.md Source refund policy
gumroad-docs/04-eula-license.md Source EULA — feeds product LICENSE.md
gumroad-docs/05-acceptable-use.md Source acceptable use policy
gumroad-docs/06–08b Generic Gumroad listing assets
gumroad-docs/09-delivery-email.md Receipt email source
gumroad-docs/10-support-policy.md Support SLA
gumroad-docs/11-troubleshooting.md Customer troubleshooting (forks per product)
gumroad-docs/12-onboarding-checklist.md First-time installer checklist (forks per product)
gumroad-docs/13-invoice-template.md B2B invoice template
gumroad-docs/14-sales-tax-notice.md US sales tax disclosure
gumroad-docs/15-w9-cover-note.md W-9 reply for B2B AP teams
meerkat-llc-studio/DELIVERY-SETUP.md Worked example of the dual-path (Gumroad + Stripe) flow
your-product-permalink/DELIVERY-SETUP.md Voice Suite's specific delivery doc

Common gotchas (from prior launches)


Brand assets — canonical (use these for every product)

Asset File Used as
Professor [your brand] photo assets/your-logo.png (site root) → copy into each product as assets/your-logo.png the icon on every [your brand] product. Header logo-mark, OG card, Gumroad cover. Always the same image. Use a border-radius: 50% round crop on small placements (header logo-marks ≤ 80px), un-cropped on large hero cards.
Wordmark text "[YOUR COMPANY]" set in the page's display font next to the icon in headers + in footers
Color accents #d4a574 sand · #ff6d5a accent · #c97a4a deep · #22d3ee cyan-info · #4ade80 success brand gradient and accents — see studio CSS for the canonical use

For every new product, in the package's assets/ folder copy this single file as meerkat-llc-logo.jpg and reference it from every HTML page's header and OG meta. Don't generate a new mascot, don't use a CSS-gradient placeholder, don't crop the face out. Same Professor [your brand] across every [your brand]-LLC product.

If a square-cropped version is needed for app icons / favicons / social squares, derive it from the same source file.

Buyer entry-point checklist (handle the file:// gotcha)

When a buyer unzips a [your brand] product, they have to navigate into the folder to get anywhere. Most browsers will show Chrome's Index of /Users/.../<product>/ directory listing instead of the proper landing page. Every [your brand] product zip should ship with all of these to handle that:

File Purpose
index.html (at root) The proper landing page. Browsers serve this when a real web server points at the folder, but not for file:// URLs.
START-HERE.html (at root) One-page redirect to index.html with a giant "Open the suite" button. Visible to buyers in the directory listing because of the obvious filename. Includes a <meta http-equiv="refresh"> so it auto-bounces.
Open-Suite.command (or Open-<Product>.command) macOS double-click launcher. One-line bash that opens index.html in the default browser. Set executable (chmod +x) before zipping.
Open-Suite.bat Windows double-click launcher. One-line batch file that start ""s index.html.
Open-Suite.sh Linux launcher. xdg-open with sensible-browser fallback.
index.html in every subfolder Each subfolder (docs/, workflows/, voice-fixtures/, etc.) needs its own styled index.html so buyers don't fall through to a Chrome directory listing of that subfolder either. Each one should list the folder's contents with friendly descriptions and a "← Back to suite" link.

Acceptance test before launch:

# In Terminal, cd to your unzipped product folder, then run:
open "."   # macOS — opens in Finder
# Then drag the folder window into Chrome and confirm the URL bar
# shows file:///… and the page is one of:
#   ✅ START-HERE.html (auto-redirecting)
#   ✅ index.html (the styled landing)
# NOT:
#   ❌ "Index of /Users/…/<product>/" (Chrome's raw directory listing)

If you see the raw directory listing, the package is missing one of the entry-point files above. Add it and re-zip before listing.

Automated check — REQUIRED before publishing:

The gumroad-qa/ folder ships an automated runner that validates every item on this checklist against the live Gumroad product and the deployed website folder. Two equivalent runners:

Both read this GumRoad.md as the spec source of truth, validate every required section is present, and cross-check that the runner's required-file list still matches what's documented here. If GumRoad.md drifts from the runner config, the spec-validation step fails loudly — you'll know to update either the spec or the runner before the real product checks run.

export GUMROAD_TOKEN=...
cd ~/Desktop/meerkat-llc-site/gumroad-qa
python3 run-qa.py your-product-permalink      # must show PASS before you click "Publish" on Gumroad

See gumroad-qa/README.md for the full check list mapped to GumRoad.md sections.

The receipt email should explicitly tell buyers what to double-click, since "open the folder" doesn't take them anywhere useful. Use this line in gumroad-listing/04-delivery-email.md:

After unzipping, double-click index.html (or Open-Suite.command on Mac / Open-Suite.bat on Windows) to open the landing page. Don't just open the folder — your browser will show a raw file listing.

Per-product fee math

To know whether to stay on Gumroad or move to Stripe Payment Links:

gumroad_fee_per_sale  = price × 0.10 + 0.30        (free plan)
stripe_fee_per_sale   = price × 0.029 + 0.30
delta_per_sale        = gumroad_fee_per_sale − stripe_fee_per_sale

monthly_loss_on_gumroad = sales_per_month × delta_per_sale
Price Sales/mo Gumroad fee Stripe fee Monthly delta
$25 5 $14.00 $5.13 $8.87
$25 50 $140.00 $51.25 $88.75
$25 100 $280.00 $102.50 $177.50
$195 5 $99.00 $29.78 $69.22
$195 50 $990.00 $297.75 $692.25

Move to Stripe per-product when monthly_loss_on_gumroad > $100.


Glossary


"[YOUR COMPANY]" and the Professor [your brand] mascot are marks of [YOUR COMPANY].

© 2026 [YOUR COMPANY] · your-domain.com · support@your-domain.com · built with care in [your city]