--- project: pbs-woocommerce-store type: project-plan status: active tags: - pbs - wordpress - woocommerce - ecommerce - stripe - automation - n8n - staging - production created: 2026-03-20 updated: 2026-03-20 path: PBS/Tech/Projects/ --- # WooCommerce Cookbook Store — Project Plan ## Project Goal Add a commerce section to plantbasedsoutherner.com to sell Jenny's first cookbook (digital + physical), using a lean WooCommerce setup with free plugins only. This is a **stepping stone** — designed to launch quickly while preserving a clean migration path to a custom-built commerce solution in the future. ## Key Decisions Made - **WooCommerce over Shopify** — keeps the Sunnies on-site for a seamless brand experience, no monthly platform fees, full data ownership - **Lean plugin approach** — WooCommerce core + free official extensions only, no premium plugin dependencies for Phase 1 - **Stripe as primary payment processor** — free WooCommerce integration, supports credit cards, Apple Pay, Google Pay - **PayPal as secondary option** — free WooCommerce integration, covers buyers who prefer PayPal - **Staging first, always** — full deployment and testing on staging before production - **Future-proof mindset** — all product/order data lives in MySQL, making eventual migration to a custom Flask/Go/Rust backend straightforward ## Architecture Overview ``` Sunnies browse → plantbasedsoutherner.com/shop (WordPress + WooCommerce) ↓ Add to cart → still on PBS site ↓ Checkout → still on PBS site ↓ Payment → Stripe handles card processing behind the scenes ↓ Order complete → WooCommerce stores order, triggers n8n webhooks ↓ n8n automation → confirmation emails, alerts, digital delivery ``` ## Long-Term Vision WooCommerce is the **temporary tenant**. The long-term plan is a custom commerce backend (Flask, Go, or Rust) with direct Stripe API integration. Key principles: - Product and order data stays in MySQL — portable regardless of frontend - n8n automations are backend-agnostic (webhook-triggered) - Traefik routing can point to any service, not WooCommerce-specific - When ready, swap the engine without rebuilding the infrastructure --- ## Phase 1: WooCommerce Core Setup (Staging) **Goal:** Get a working cookbook store on staging.plantbasedsoutherner.com ### 1.1 Install & Configure WooCommerce - [ ] Install WooCommerce plugin on staging - [ ] Run the setup wizard (store address, currency, product types) - [ ] Configure general settings (timezone, currency display, measurements) - [ ] Set store pages (shop, cart, checkout, my account) - [ ] Disable WooCommerce features we don't need yet (reviews, coupons, etc.) to keep it lean ### 1.2 Redis Cache Configuration - [ ] Configure WooCommerce cart/checkout pages to bypass Redis object cache - [ ] Add cache exclusion rules for WooCommerce session cookies (`woocommerce_cart_hash`, `woocommerce_items_in_cart`, `wp_woocommerce_session_*`) - [ ] Test that cart persists across page loads (cache bypass working) - [ ] Flush Redis cache after WooCommerce installation ### 1.3 Payment Gateway Setup - [ ] Create Stripe account for PBS (if not already existing) - [ ] Install WooCommerce Stripe Gateway (free official plugin) - [ ] Configure Stripe in **test mode** on staging - [ ] Install WooCommerce PayPal Payments (free official plugin) - [ ] Configure PayPal in **sandbox mode** on staging - [ ] Test both payment methods with test card numbers ### 1.4 Product Setup — Jenny's Cookbook - [ ] Create product: Physical cookbook (simple product, requires shipping) - [ ] Create product: Digital cookbook — PDF (downloadable product) - [ ] Optional: Create bundled product (physical + digital combo) - [ ] Upload product images (Jenny to provide) - [ ] Write product descriptions (Jenny to provide or review) - [ ] Configure pricing - [ ] Set up shipping zones and rates for physical book - [ ] Configure digital download settings (download limits, link expiry) ### 1.5 Store Design & Integration - [ ] Create/customize shop page with Elementor to match PBS branding - [ ] Style cart and checkout pages to match site aesthetic - [ ] Add "Shop" link to main site navigation - [ ] Ensure mobile responsiveness (Sunnies likely shopping from Instagram links) - [ ] Test full purchase flow on mobile and desktop --- ## Phase 2: n8n Order Automation **Goal:** Automate order processing workflows via n8n ### 2.1 WooCommerce Webhook Setup - [ ] Configure WooCommerce webhook for `order.completed` → n8n - [ ] Configure WooCommerce webhook for `order.created` → n8n (for alerts) - [ ] Verify webhook payload structure ### 2.2 n8n Workflow: Order Notifications - [ ] Build workflow: new order → Google Chat notification to Travis - [ ] Build workflow: new order → summary notification to Jenny (email or preferred channel) - [ ] Include order details: product, amount, shipping info (if physical) ### 2.3 n8n Workflow: Digital Delivery (Optional Enhancement) - [ ] Evaluate if WooCommerce's built-in digital delivery is sufficient - [ ] If custom delivery needed: n8n workflow to send personalized delivery email via MailerLite or Google Workspace - [ ] Track download completions ### 2.4 n8n Workflow: Order Dashboard Sync (Future) - [ ] Sync order data to a reporting table in `pbs_automation` MySQL database - [ ] Enables future custom dashboards without querying WooCommerce directly --- ## Phase 3: Production Deployment **Goal:** Move tested store to production ### 3.1 Pre-Production Checklist - [ ] All staging tests pass (payment, cart, checkout, email, webhooks) - [ ] Jenny has reviewed and approved product pages - [ ] Stripe switched from test mode to live mode - [ ] PayPal switched from sandbox to live mode - [ ] Shipping rates verified - [ ] Tax configuration reviewed (may need research for PBS's specific situation) - [ ] Privacy policy and terms of sale updated on site - [ ] WooCommerce email templates customized with PBS branding ### 3.2 Production Deployment - [ ] Install WooCommerce on production - [ ] Replicate all staging configuration - [ ] Apply Redis cache exclusions on production - [ ] Configure live payment gateways - [ ] Create products (or export/import from staging) - [ ] Connect n8n production webhooks - [ ] Test one real transaction (buy your own cookbook!) ### 3.3 Launch - [ ] Add shop to site navigation - [ ] Jenny announces cookbook launch on Instagram - [ ] Monitor first orders closely for any issues - [ ] Verify n8n automations fire correctly --- ## Phase 4: Expand Product Catalog (6+ Months) **Goal:** Add meal plans, merch, and other digital products as Jenny is ready - [ ] Evaluate: WooCommerce extensions vs custom PBS-API endpoints per product type - [ ] Add new products as needed - [ ] Consider: Sunnie merch store (t-shirts, kitchen items) - [ ] Consider: Downloadable meal plans / recipe collections - [ ] Assess if WooCommerce is still serving us or if it's time to start the custom build --- ## Phase 5: Custom Commerce Platform (Future) **Goal:** Replace WooCommerce with a custom-built solution - [ ] Choose framework (Flask, Go, or Rust based on Travis's preference at that time) - [ ] Direct Stripe API integration (no plugin middleman) - [ ] Direct PayPal API integration - [ ] Migrate product data from WooCommerce MySQL tables - [ ] Migrate order history - [ ] Build admin UI for Jenny (product management, order viewing) - [ ] Retire WooCommerce --- ## Plugin List (Free Only) | Plugin | Purpose | Cost | |---|---|---| | WooCommerce | Core commerce engine | Free | | WooCommerce Stripe Gateway | Credit card, Apple Pay, Google Pay | Free | | WooCommerce PayPal Payments | PayPal checkout option | Free | **That's it.** Three free plugins. No premium dependencies for Phase 1. --- ## Infrastructure Considerations ### Linode Resources - 2GB should handle initial cookbook sales volume - Monitor memory usage after WooCommerce install (it adds overhead) - If needed, upgrade to 4GB — WooCommerce + Redis + n8n + WordPress is a lot for 2GB under load ### Docker / Traefik - No changes needed to Traefik config — WooCommerce runs inside the existing WordPress container - No new containers required for Phase 1 ### Database - WooCommerce adds ~20+ tables to the WordPress database - These are separate from `pbs_automation` — no conflict with existing PBS-API data - Future migration: WooCommerce tables are well-documented, data extraction is straightforward ### Security - Stripe handles PCI compliance (card data never touches our server) - WooCommerce checkout should be HTTPS-only (already handled by Traefik + Let's Encrypt) - Consider adding Wordfence WooCommerce-specific rules --- ## Key Risks & Mitigations | Risk | Mitigation | |---|---| | WooCommerce performance on 2GB Linode | Monitor closely, upgrade if needed | | Redis cache interfering with cart/checkout | Configure cache exclusions before testing | | Plugin update breaks something | Test updates on staging first, always | | Scope creep into paid plugins | Hard rule: free plugins only for Phase 1 | | Tax complexity | Research early, may need free tax config or manual rates | --- ## Discussion Points Captured - **WordPress regret is real** — WooCommerce is a pragmatic compromise, not a long-term commitment - **Custom commerce is realistic** — Flask/Go/Rust + Stripe API is a legitimate future project within Travis's skillset (estimated: a month of weekends) - **Shop Pay not available on WooCommerce** — not a dealbreaker, Apple Pay + Google Pay + PayPal covers the same need - **Stripe handles all the scary payment stuff** — PCI compliance, fraud, chargebacks. Our code just says "charge $24.99" and Stripe does the rest - **Data portability** — all product/order data lives in MySQL and can be migrated when the custom build is ready --- ## Next Steps 1. Deploy WooCommerce on staging 2. Configure Redis cache exclusions 3. Set up Stripe test account 4. Create cookbook products 5. Test full purchase flow --- *Project: Plant Based Southerner — Commerce* *Created: March 20, 2026* *Maintained by: Travis with Claude*