Skip to content

Case studiesGetPlus

E-commerce Protection SaaS

GetPlus

E-commerce Protection and Post-Purchase SaaS Platform

Formerly known as Protect+ / ProtectPlus.

A multi-service e-commerce platform supporting package protection, claims, returns, refunds, merchant billing, order management, partner payouts, reporting, and Shopify and WooCommerce integrations.

Role
Senior Software Engineer
Public product
get.plus
GetPlus Protect+ marketing hero showing the agentic e-commerce suite and command center preview
Product interface preview

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.

Architecture overview

GetPlus system components

Conceptual ownership map for hiring audiences. Internal topology, credentials and sensitive operational data are intentionally omitted.

  1. 01Merchant portal
  2. 02Admin portal
  3. 03Refund portal
  4. 04Partners portal
  5. 05Orders and claims services
  6. 06Billing and invoicing services
  7. 07Payout and reporting services
  8. 08Shopify and WooCommerce integration boundaries
  9. 09MongoDB data stores
  10. 10Pub/Sub messaging
  11. 11Cloud Run services
  12. 12Secret Manager and Cloud Storage

Architecture diagram

System overview

User applications connect to platform services, which use MongoDB, Pub/Sub and external commerce/billing integrations.

Diagram of GetPlus applications, platform services, data stores and external integrations

Architecture diagram

Claim refund and reship flow

Orders enter eligibility checks, then approved paths can produce refunds or replacement orders.

Diagram of claim eligibility leading to refund or reshipment paths

Architecture diagram

Merchant billing flow

Stores link payment-method IDs on shared Stripe customers so charges target the relevant store method.

Diagram of store-linked Stripe payment methods used for billing

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

Confidentiality