Ecommerce · After-sales
How we turned a Google Form, a serial-number spreadsheet and a claims inbox into one Shopify app that registers units, issues coverage and resolves claims with real Shopify objects.
Brands that sell durable goods, such as e-bikes, audio gear, power tools or furniture, make a warranty promise with every sale. On Shopify, that promise usually runs on a Google Form for registrations, a spreadsheet of serial numbers and a support inbox full of claims. Nobody can quickly say which serial shipped on which order, whether a unit is still covered, or who owns it after a gift or resale.
Resolving a claim was just as manual. Someone checks dates by hand, builds a $0 replacement order, issues a gift card for store credit, and often forgets to mark the old unit as replaced. Claims for expired coverage still land in the inbox and take as long to answer as valid ones.
We set out to build WarrantyHub as one system for the whole life of a unit: sell, register, protect, claim and learn. The goal wasn't a nicer form. We wanted each step to create real records and real Shopify objects, so warranty claims automation could take most of the manual work out of the process. That's the same goal behind our custom Shopify app projects.
We started with serial numbers, because everything else depends on them. Merchants create serial pools per variant, per product or shop-wide. Serials are either generated from a pattern, with an optional mod-36 check character to catch misread serials, or imported from the manufacturer. On fulfillment, each unit takes the next available serial from the most specific matching pool, and the serials are written to an order metafield so packing slips and Flow can read them. Every serial keeps a ledger: sold, assigned, registered, claimed, replaced.
Registration has several channels so most customers never type anything: a one-click magic link sent on fulfillment, QR code sheets with the serial pre-filled, a theme app block, automatic registration on fulfillment, and CSV import for past sales. A serial the merchant never sold is accepted but flagged for review instead of rejected.
Coverage is defined once in warranty templates. Each has a duration or lifetime coverage, a start trigger (purchase, registration or delivery date), covered and excluded faults, and an assignment to a product, a collection or the whole store, where the most specific rule wins. Every registration gets a warranty and a branded certificate PDF automatically.
For claims, the customer portal checks eligibility on submission. Expired coverage or an excluded fault gets an immediate answer with the reason, and covered faults can be auto-approved if the merchant chooses. In the admin, four resolutions run in Shopify: a $0 replacement draft order that rotates the serial, a gift card for store credit, an RMA number for repair, or a refund flag the merchant completes on the order. Details are on the WarrantyHub page.
Today WarrantyHub covers the full loop inside Shopify. Customers use a portal that works without an account, opened by a secure link valid for 24 hours. There they see their registered units and coverage dates, file claims with up to three photos or videos, and follow a five-step claim tracker. Merchants work a claims inbox with SLA timers, canned denial reasons, internal notes and a full timeline per claim. A background worker processes webhooks with retries. Every 15 minutes it expires warranties, queues reminder emails and replays dropped webhooks, and once a week it sends a digest. Shopify Flow triggers and Klaviyo events let merchants build their own automations on top.
The biggest lesson was that the data model is the product. Once each unit has a serial and an event history, replacement chains, grey-market flags, registration rates and top fault categories become simple queries instead of new projects.
We also learned to be careful about what gets automated. Auto-approval and instant denial apply only to rules the merchant defined, and refunds stay on the normal Shopify order page. Automate the clear cases and route the rest to a person: we aim for the same balance in client workflow automation. If your after-sales process lives in a spreadsheet, start a project with us.
How it's built
Serial pools assign a number to every fulfilled unit, mirror it to an order metafield, and keep a per-unit history from sale to replacement.
Magic links, QR sheets with pre-filled serials and automatic registration on fulfillment mean most customers never fill in a form.
Claims are checked against the warranty when filed, so expired coverage or excluded faults get an immediate answer with the reason.
Replacement creates a $0 draft order and rotates the serial, store credit creates a gift card, and repair issues an RMA number.
Webhooks are recorded and processed with retries, and a scheduled job replays anything Shopify failed to deliver.
Lessons
Warranty, returns and service workflows look simple until you try to automate them. Here's what we'd pass on.
We apply the same thinking when we build internal tools for support and ops teams.
Live product · Shopify
WarrantyHub
How we designed a Shopify app that syncs supplier stock and prices from any file or API, shows a diff before writing, and refuses to import files it doesn't trust.
Read the storyHow we built a deterministic, explainable rules engine that scores Shopify return and refund requests, shows the reasons behind every score, and never declines a customer automatically.
Read the storyHow we designed a rep portal, territory rules and an append-only commission ledger on top of Shopify's native B2B, built so the numbers stay correct after refunds and edits.
Read the storyTell us how it works today. We'll tell you honestly what's worth automating, what it would take, and what it would cost.