Self-serve signup for the six membership plans (Passport, Startup, All Access, Founder, Creator Pass, Innovator Pass). Stripe subscription + OfficeRnD member + welcome email.
At a glance
| Worker | labour-temple-checkout.labourtemple.workers.dev |
| Deploy | cd cloudflare-worker && npx wrangler deploy |
| Logs | wrangler tail --format pretty |
| Email template | MailerSend z3m5jgr0y5xgdpyo |
| Plan config | PLAN_CONFIG in worker.js (edit → deploy) |
| Team recipients | TEAM_EMAILS in worker.js (edit → deploy) |
| CMS collection | Webflow → Memberships (Site ID 639b202ca505e87cee446ad0) |
| Terms | /legal/membership-terms · Creator Pass → /legal/sonic-terms |
The five surfaces to check
- Stripe → Customers / Subscriptions / Events / Logs
- OfficeRnD → Members / Memberships
- Worker logs →
wrangler tailor Cloudflare Dashboard - MailerSend → Activity log (filter by recipient)
- Browser → Console + Network tab on the membership page
When to escalate to Chris
Ping with Stripe Customer ID / PaymentIntent ID + customer email + one-line symptom when:
- Customer was charged and no OfficeRnD member appears within 15 min
- Multiple consecutive signups fail with the same symptom
- Charge succeeded but no subscription created
- Worker returning 500s to the browser
Incident playbooks
1. "I signed up but can't log in / access amenities" — paid but no access
Check. Stripe → confirm subscription active, first invoice paid. OfficeRnD → confirm member exists + active membership on the right plan.
Fix.
- Stripe good, no OfficeRnD member → create member manually, assign matching plan.
- Member exists, no membership → assign plan manually with start date = Stripe subscription start.
- Nothing anywhere → they abandoned checkout. Ask them to retry.
Escalate if member creation consistently fails silently — OAuth creds may have rotated.
2. Card declined at Stripe
Client-side Stripe interaction. Customer was not charged. Ask them to try another card or ACH. Never escalates.
3. Charged but no branded welcome email
Check. MailerSend Activity by recipient. Check spam.
Fix.
- "Sent" but missing → resend from MailerSend, or forward a manual welcome.
- "Failed" → likely bad email address. Correct in OfficeRnD and resend.
- No attempt →
MAILERSEND_API_KEYmay be revoked, or outage.
Email is non-blocking — the subscription and member assignment still succeed.
4. Auto-promo didn't apply — customer charged the initiation fee
Naming convention: AUTO-{PLAN-SLUG} (all caps). Check Stripe → Products → Coupons.
Fix. Confirm promo exists, is active, name matches plan slug exactly. If missing or inactive, the checkout works but skips the discount silently. Refund the initiation fee and fix the promo for future signups.
Prevention. When creating a new plan, always create its AUTO-{SLUG} promotion code at the same time. No deploy required.
5. Existing OfficeRnD member signs up for a new plan
Expected: Worker's Step 6 locates the existing member by email and adds a new membership assignment.
If it errors — confirm the customer used the exact email on their OfficeRnD record. Typos create duplicates. If a duplicate was created, merge in OfficeRnD with the new membership following the surviving record.
6. Renewal charge failed
Stripe → Invoices → Failed. Stripe auto-retries per Smart Retries settings (default: multiple attempts over 1–3 weeks).
If all retries fail, Stripe cancels the subscription. Member re-enters payment via customer portal (if configured) or re-signs up.
Escalate if multiple customers fail on the same day — check status.stripe.com.
7. Customer wants to cancel
No self-service cancellation exists.
Fix. Confirm in writing → cancel Stripe subscription (end-of-period vs immediate per policy) → end-date membership in OfficeRnD → confirmation email.
Decide now: cancellations at end of current billing period (recommended) or immediate with proration. Apply consistently.
8. Plan change (upgrade / downgrade)
Cleanest: cancel existing subscription end-of-period, have them re-sign up on the new plan via the site (preserves auto-promo logic).
Mid-cycle: update the Stripe subscription Price directly (Stripe handles proration). Mirror in OfficeRnD: end-date old assignment, create new.
9. "Invalid plan" error in the browser
Check. CMS plan-slug on that plan matches a key in PLAN_CONFIG exactly (case-sensitive, kebab-case). Browser console: window._S defined, checkout.js loaded.
Fix. Correct the CMS field (not the Worker) and republish. If checkout.js still fails to load, 5-min cache may be stale.
10. Checkout loads but the form is blank
Check. Browser console for errors. Confirm stripe_checkout_v21 site script is still applied (Webflow → Site Settings → Custom Code). The Scripts API overwrites site scripts on update, so another integration may have displaced ours.
Fix. Re-apply via the Worker's admin command or restore from Webflow version history.
Escalate with browser, OS, and a console screenshot if the script is present and still broken.