Zenpixl
Back to case studies
CASE STUDY · LOGISTICS / E-COMMERCE TOOLING4 min read

How we built ParcelBuddy, a delivery-issue reporting platform for merchants and customers

ParcelBuddy turns “where’s my parcel?” complaints into structured cases with tracking data and evidence packs, so merchants can respond fast and resolve disputes with the courier.

Visit the live site
parcelbuddy.co.uk
Logistics SaaS live website
Industry
Logistics & E-commerce
Market
United Kingdom
My Role
Full-Stack Engineer
Platform
Web (React + Express)
THE PROBLEM

Delivery problems were handled over scattered emails

When a parcel is late, damaged, or marked delivered but never arrives, the customer, the merchant and the courier each hold a different part of the story. Merchants got vague complaints by email, had to dig up tracking data themselves, and had no consistent evidence to take to the courier.

ParcelBuddy needed to give customers a simple way to report an issue, and give merchants a clear case file they could act on without having to learn yet another tool.

→Customers needed a short, guided way to report a delivery issue
→Tracking data had to be pulled automatically, but only when it was relevant
→Merchants needed to respond without creating an account
→Each case needed a printable evidence pack for courier claims
→The business needed flexible billing: subscriptions and pay-per-case
THE SOLUTION

Structured cases, automatic tracking, and a no-login merchant portal

We built ParcelBuddy as a React single-page app served by an Express and MongoDB backend. Customers submit an issue through a guided intake flow and each report becomes a case with its own reference (for example PB-00001) and a clear lifecycle from submitted to closed.

Merchants receive a magic link by email that opens their case directly, with tracking history and uploaded evidence attached. They can review, respond, and download a PDF evidence pack, all without logging in.

Customer intake flow with photo and document uploads
Ship24 integration pulling tracking data for delivery-related issues
Magic-link merchant portal, no account needed
PDF evidence packs generated for each case
Email notifications via SendGrid and optional SMS opt-in via Twilio
Stripe billing: subscription plans with overage, or tiered pay-per-case
Admin dashboard for cases, merchants, couriers, pricing and system settings
TECHNICAL HIGHLIGHTS

Why we built it this way

01

Magic links instead of merchant accounts

Merchants rarely want another login. Each case carries a unique token with a configurable expiry, so a merchant can act straight from the email. It removed onboarding friction and made response times faster.

02

Only call the tracking API when it adds value

Tracking lookups cost money, so the system only calls Ship24 for issue types where tracking matters, such as parcels that never arrived or were marked delivered but not received. Results are cached on the case for 30 days, which keeps costs predictable.

03

Runtime configuration stored in the database

Pricing, reminder schedules and tracking toggles live in a SystemConfig collection that admins can edit without a deploy. Defaults are seeded at startup, so a fresh environment works immediately.

04

Billing triggered by real merchant engagement

A case is counted for billing only when the merchant acts on it or downloads its PDF, not when a customer submits it. That keeps invoices fair and easier for merchants to trust.

05

Raw-body webhooks mounted before JSON parsing

Stripe and SendGrid verify signatures against the raw request body, so those webhook routes are mounted ahead of the JSON middleware. Getting that ordering right keeps payment and email-event handling reliable.

THE RESULTS

Live, growing, and trusted

Delivery complaints become structured, trackable cases
Merchants respond from an email link with no account setup
Evidence packs give merchants what they need for courier claims
Automated reminders nudge merchants who have not responded
Two billing models support both small and high-volume merchants
Admins can tune pricing and behaviour without code changes
TECH STACK
ReactReact RouterTailwind CSSNode.jsExpressMongoDBMongooseJWT AuthShip24 APIStripeSendGridTwilioAWS S3PDFKit

Need a workflow tool that connects customers, merchants and third-party APIs?

We build practical platforms that automate the back-and-forth. Let’s talk about yours.

Discuss your project