Business problem
Online merchants need package-protection and post-purchase workflows that connect storefront orders to claims handling, refunds, reshipments, billing and partner operations.
Commerce platforms differ in order structure, so eligibility, refund accuracy and replacement-order creation must respect Shopify and WooCommerce specifics.
Billing must charge the correct store-linked payment method while remaining compatible with Stripe account-region capabilities.
Project context
GetPlus is a production multi-service SaaS platform for e-commerce protection and post-purchase operations.
The product spans package protection, claims, returns, refunds, merchant billing, order management, partner payouts and reporting.
Storefront context arrives through Shopify and WooCommerce integrations into platform services and operational portals.
Team context
Worked within an approximately 30-person broader product and engineering organization.
I was not the sole contributor. I contributed to technical decisions, task planning and assignment, code reviews, and guidance for other developers.
Ownership below reflects areas where I personally contributed or led delivery — not exclusive authorship of the entire platform.
Responsibilities
- Claims workflows
- Orders
- Stripe billing and invoicing
- Merchant portal
- Admin portal
- Refund portal
- Returns-service contributions
- Partners Portal
- Payout and reporting services
- Cloud Run deployments
- Pub/Sub topics
- Secret Manager
- Cloud Storage
- Separate development and production environments
- Code reviews
- Task planning and assignment
- Developer guidance
Architecture
User-facing and operational applications sit above domain services for orders, claims, billing, payouts and reporting.
Commerce integrations normalize platform-specific order data before eligibility and fulfillment workflows run.
Async messaging, secrets and object storage support operational processing without exposing internal topology publicly.
GetPlus system components
Conceptual ownership map for hiring audiences. Internal topology, credentials and sensitive operational data are intentionally omitted.
- Merchant portal
- Admin portal
- Refund portal
- Partners portal
- Orders and claims services
- Billing and invoicing services
- Payout and reporting services
- Shopify and WooCommerce integration boundaries
- MongoDB data stores
- Pub/Sub messaging
- Cloud Run services
- Secret Manager and Cloud Storage
System overview
User applications connect to platform services, which use MongoDB, Pub/Sub and external commerce/billing integrations.
- Merchant portal
- Admin portal
- Refund portal
- Partners portal
- Orders / claims
- Billing
- Payouts / reporting
- Returns
- MongoDB
- Pub/Sub
- Secret Manager
- Cloud Storage
- Shopify
- WooCommerce
- Stripe
Claim refund and reship flow
Orders enter eligibility checks, then approved paths can produce refunds or replacement orders.
- Storefront order context
- Eligibility & business rules
- Approved claim path
- Refund or replacement order
Merchant billing flow
Stores link payment-method IDs on shared Stripe customers so charges target the relevant store method.
- Shared Stripe customer
- Store links payment-method ID
- Billing event for that store
- Charge linked payment method
Systems
Frontend
- Next.js application surfaces for merchant, admin, refund and partner operations
- Vercel-hosted frontend projects with separated development and production configuration
Backend
- Node.js service boundaries for orders, claims, billing, returns, payouts and reporting
- Platform-specific normalization helpers for Shopify and WooCommerce order structures
- Git-based CI/CD for selected backend services deployed to Cloud Run
Database
- MongoDB with separate development and production environments
- Tier upgrade to support more advanced search and aggregation workloads
- Indexes on frequently searched operational fields
- Improved listing and search capabilities for day-to-day operations
Cloud infrastructure
- Google Cloud for backend services
- Cloud Run deployments
- Pub/Sub topics for asynchronous processing
- Secret Manager for sensitive configuration
- Cloud Storage for operational object storage
- Vercel for frontend applications
- Separated development and production environments across services and data stores
Security
- Secrets kept in Secret Manager rather than application source
- Environment separation between development and production
- Authenticated service deployment paths for selected Cloud Run workloads
Integrations
- Shopify order and fulfillment context
- WooCommerce order and fulfillment context
- Stripe billing, customers, payment methods and invoicing
Technical deep dives
Stripe billing
I personally implemented major Stripe billing workflows used by merchant operations.
The initial Stripe setup was configured for a UK-region account. After migration to a US Stripe account, available payment-method support changed according to Stripe account region and business requirements.
Billing uses shared Stripe customers that can hold multiple payment methods. Store-level linking associates a payment-method ID with the relevant store so charges target the method configured for that store.
Available payment methods depend on Stripe account region and product requirements. This case study does not claim universal ACH/BACS compatibility beyond what the active Stripe account and business rules allow.
Claims, refunds and reshipments
Claims workflows support both Shopify and WooCommerce orders with eligibility and business-rule checks before approval paths continue.
Approved reshipment claims can create replacement orders. Refund paths track refund transactions and must remain accurate when discounts or gift-card payments are involved.
Because each commerce platform structures orders differently, reusable platform-specific normalization and processing functions keep eligibility, refund and reshipment logic coherent without collapsing both platforms into one fragile model.
Database performance
Operational search and listing needs led to a MongoDB tier upgrade that supported more advanced search and aggregation capabilities.
Indexes were added for frequently searched fields to improve day-to-day operational listing and search workflows.
No latency percentages or invented performance metrics are published here.
Environments and deployment
Development and production environments are separated across backend services, frontend projects and MongoDB environments.
Backend services deploy to Google Cloud Run. Selected services use git-based CI/CD. Pub/Sub, Secret Manager and Cloud Storage support asynchronous work, secrets and storage needs.
Frontend applications deploy on Vercel with environment-specific configuration.
Vercel environment correction
A frontend setup was identified that mixed development and production configuration in a way that risked incorrect environment behaviour.
The existing project was converted into the development environment, and a separate production project was created.
Environment variables were separated and the production domain was assigned to the production project.
Technical challenges
Multi-platform order semantics
Shopify and WooCommerce expose different order shapes, which complicates shared claims and refund logic.
- Normalize platform-specific structures before eligibility checks
- Keep reusable processing functions per platform
- Preserve refund accuracy with discounts and gift-card payments
Billing across Stripe regions
Payment-method availability changed when the Stripe account region changed.
- Keep billing behaviour aligned with the active Stripe account
- Link payment methods at store level using payment-method IDs
- Avoid overstating regional payment-method support
Environment isolation
Frontend and backend environments needed clearer separation to prevent configuration bleed.
- Separate Vercel projects for development and production
- Split environment variables and domain assignment
- Keep MongoDB and Cloud Run environments aligned with the same separation model
Trade-offs
Service boundaries over a single monolith
Decision: Prefer domain services for orders, claims, billing and payouts rather than one undifferentiated backend.
Consequence: Integration overhead increases, but ownership and deployment boundaries stay clearer for a multi-surface SaaS product.
Honest payment-method claims
Decision: Describe Stripe behaviour in terms of account region and business requirements instead of implying universal method support.
Consequence: Public documentation stays accurate for hiring audiences and avoids confidential merchant-specific payment configuration.
Results
Production platform delivery
Contributed to a production e-commerce protection platform spanning claims, billing, portals and cloud operations.
Technical leadership practices
Supported delivery quality through reviews, task planning/assignment and developer guidance inside a larger organization.
Environment hygiene
Corrected mixed frontend environment configuration by separating development and production Vercel projects.
Constraints
- Not presented as a sole-developer project
- No confidential architecture identifiers, merchant data, invoices or payment records
- No invented metrics or revenue claims
Stack
- Node.js
- TypeScript
- Next.js
- MongoDB
- Shopify
- WooCommerce
- Stripe
- Google Cloud Run
- Pub/Sub
- Secret Manager
- Cloud Storage
- Vercel
