warranty
WarrantyHub for Shopify
Product registration, serial-number tracking, warranty coverage, and claims management — one app that takes every unit you ship from sale to resolution.
WarrantyHub owns the identity of your product after checkout: who bought it, which unit it was, what coverage it carries, what went wrong, and how it was resolved. This document covers everything the app does and how to set it up.
Contents
- Overview — how the app works
- Quick start — five steps to go live
- Product registration
- Serial numbers & unit tracking
- Warranty coverage & certificates
- The customer experience
- Claims workspace
- Dashboard & analytics
- Emails
- Integrations & automation
- Settings reference
- Plans & limits
- Security, privacy & compliance
- Use cases by product category
- Reference tables
- FAQ
1. Overview — how the app works
WarrantyHub follows a single lifecycle. Each stage feeds the next automatically, so once configured the app runs without you logging in.
| Stage | What happens |
|---|---|
| 1. Sell | An order is fulfilled. WarrantyHub takes the next available serial number from the matching pool, assigns it to the line item, and writes it to an order metafield so it can appear on packing slips. |
| 2. Register | The customer registers the product — by one-click magic link, QR scan, a form on your storefront, or automatically. Coverage begins. |
| 3. Protect | A warranty is created from the template assigned to that product, and a branded certificate PDF is generated and emailed. |
| 4. Claim | The customer files a claim from a secure portal. Coverage is checked instantly. You resolve it with a replacement, repair, refund, or store credit. |
| 5. Learn | Registration rate, claim rate, resolution time, and top fault categories show which products fail, and how soon. |
2. Quick start — five steps to go live
Most stores are live in under 15 minutes. These are the same five steps shown on the app dashboard.
Step 1 — Create a serial pool
Go to Serials → New pool. Give it a name, choose Generate serials and set a prefix and pattern (for example prefix EB- and pattern ######), or choose Import manufacturer serials and paste your own. Optionally limit the pool to one product. Then generate a batch of serials. Skip this step entirely if you don't serialize your products.
Step 2 — Build a registration form
Go to Forms → New form. It starts with name, email, and serial-number fields. Add your own fields, set the status to Active, and assign it to a product, a collection, or all products. Then in Shopify go to Online Store → Customize and add the Product registration block to your product template.
Step 3 — Define warranty coverage
Go to Warranties → New template. Set the duration in months (or tick Lifetime warranty), choose when coverage starts, list your covered and excluded faults, decide whether claims are reviewed manually or auto-approved by fault, set the expiry reminder lead time, and paste your terms and conditions. Assign the template to products or collections.
Step 4 — Turn on registration emails
In Settings, keep Send magic-link registration email on fulfillment switched on so every shipment invites the customer to register in one click. Set your claim SLA, your brand name and colour, and a weekly digest address.
Step 5 — Handle claims
Claims arrive in the Claims workspace with coverage already verified. Open one and resolve it — replacement, repair, refund, or store credit — or deny it with a saved reason.
3. Product registration
There are six ways a product can be registered. Every registration is tagged with its channel so you can see which ones actually work for your customers.
Registration channels
| Channel | How it works |
|---|---|
| Magic link | Sent automatically when an order is fulfilled. One click registers every item on the order — no typing at all. The link is valid for 60 days and cannot be reused once the order is registered. |
| QR code | Print a QR sheet from any serial pool and put the codes on packaging or the product itself. Scanning opens the registration page with the serial already filled in. |
| Storefront form | The theme block shows whichever form is assigned to the product being viewed. No code, no snippet edits. |
| Automatic | Switch on Auto-register every order on fulfillment and each fulfilled item is registered for you, complete with warranty and certificate. |
| CSV import | Paste historical or offline sales as email, serial, name, purchase date. Only the email is required, and a header row is detected and skipped automatically. |
| Manual | Created directly in the admin when you need to record a registration yourself. |
The form builder
- Unlimited forms, each either Draft or Active.
- Eight field types: text, email, phone, date, dropdown (with your own choices), file upload, checkbox, and serial number.
- Each field can be marked required, reordered with up and down controls, or removed.
- Add GDPR consent text and a mandatory consent checkbox appears on the storefront form.
- Set your own success message shown after submission.
- Assign a form to a product, a collection, or all products. The most specific assignment wins: product beats collection, collection beats store-wide.
- All custom field answers are stored with the registration and visible in the admin.
Serial validation on registration
When a customer enters a serial number, WarrantyHub checks it and reacts in one of four ways:
| Result | What the app does |
|---|---|
| Valid | Registration accepted and the serial is marked registered. |
| Already registered | Rejected, with a clear message to the customer — prevents duplicate coverage on one unit. |
| Voided | Rejected as not valid. |
| Not recognised | Accepted but flagged Pending review. This is your offline-sale and grey-market signal: you approve genuine retail purchases and reject the rest. Rejecting also voids any warranty that was issued. |
4. Serial numbers & unit tracking
Serial numbers in WarrantyHub are a real inventory of units, not a text field on a form.
Serial pools
A pool is a source of serial numbers. It can cover a single variant, a single product, or your whole store. Pools come in two kinds:
- Generated — built from a prefix and a pattern. In the pattern,
#becomes a zero-padded counter digit andAbecomes a letter; any other character is used literally. So prefixEB-with pattern######producesEB-000318. You can generate between 1 and 10,000 serials at a time. - Imported — paste your manufacturer's serials, separated by new lines, commas, or semicolons. Duplicates are skipped and reported, and values must be 3 to 64 characters.
Automatic assignment on fulfillment
When an order is fulfilled, WarrantyHub assigns one serial per unit of quantity. It looks for a variant-specific pool first, then a product pool, then a store-wide pool. Every serial assigned to the order is also written into an order metafield, so your Order Printer template can print serial numbers directly on packing slips and invoices.
The unit ledger
Every serial has its own page showing its current status, its pool, the order it shipped on, who registered it, and a complete event history. Recorded events include:
sold assigned registered claimed replaced replacement for refurbished voided
When a claim is resolved with a replacement, the ledger records which new unit replaced which old one — so a unit that comes back twice is immediately visible.
QR code sheets
From any pool you can generate a printable A4 PDF containing 24 QR codes per page (four columns by six rows) with the serial number printed under each code, sized for standard label sheets. Each code links to registration with that serial pre-filled. Your five most recent sheets stay available for re-download.
5. Warranty coverage & certificates
You define coverage once as a template. Every registration then receives its warranty automatically.
Template options
| Setting | Options and effect |
|---|---|
| Duration | Any number of months, or tick Lifetime warranty for coverage with no end date. |
| Coverage starts on | Purchase date, registration date, or delivery date. |
| Covered faults | A comma-separated list, for example battery, motor, frame, electronics. These become the fault choices your customer sees when filing a claim. |
| Excluded faults | For example water damage, accident, wear and tear. |
| Claim handling | Review every claim manually, or auto-approve and auto-deny by fault — covered faults are approved instantly, excluded faults are denied instantly with the reason, and anything unrecognised comes to you. |
| Expiry reminder | How many days before expiry the customer is emailed. Default is 30 days. |
| Terms & conditions | Free text, printed in full on the warranty certificate. |
| Applies to | Assign to specific products, collections, or all products. Product assignments beat collection assignments, which beat store-wide. |
Automatic coverage management
- A warranty is created the moment a registration is created.
- Coverage is checked every 15 minutes and flipped to expired when it ends.
- Expiry reminder emails are queued according to each template's lead time.
- The Warranties page shows how many warranties are active and how many expire in the next 30 days.
- Deleting a template does not cancel warranties already issued from it — existing customers keep their coverage dates.
The warranty certificate
Every registration produces an A4 PDF certificate in your brand colour, with your brand name in the header. It contains:
- Who the product is registered to, and their email
- The serial number, when there is one
- The coverage name, start date, and end date (or “Lifetime”)
- A unique certificate ID
- Your full terms and conditions
It is attached to the registration confirmation email and can be re-downloaded from the admin at any time. For customers who lose receipts, this becomes their proof of purchase.
6. The customer experience
My products portal
Link customers to your portal page. They enter the email they used at purchase or registration and receive a secure link that is valid for 24 hours. The portal then shows every unit they own with:
- The serial number, when there is one
- Coverage status — Covered until [date], Lifetime coverage, or Expired
- The date they registered
- A File a claim button on covered units, or a link straight to any claim already in progress
For privacy, the response is identical whether or not the email is known to the store, so the page cannot be used to discover who your customers are.
Filing a claim
The claim form is short by design: choose the fault from the covered list, describe the problem, and attach up to three photos or videos (up to 20 MB each). On submission the coverage check runs immediately:
| Situation | Outcome |
|---|---|
| Coverage expired, or no warranty | Denied immediately with the reason shown to the customer. It never reaches your inbox, but it is still recorded. |
| Excluded fault, auto mode on | Denied immediately, naming the fault that isn't covered. |
| Covered fault, auto mode on | Approved instantly. You just pick the resolution. |
| Anything else | Queued for your review, with the SLA clock started. |
Claim tracker
Every claim gets a bookmarkable status page with a five-step progress bar:
Submitted In review Approved Resolution shipped Closed
The tracker also shows the resolution type, the replacement serial number when one has been issued, the denial reason if the claim was denied, and a timestamped history. The customer is emailed at every status change, so most of them never need to ask “any update?”
7. Claims workspace
Claims arrive with coverage already verified, so your job is the decision, not the research.
The inbox
- Every claim gets a sequential reference like
CLM-2026-00042. - Filter by status, including a combined Open (needs action) view.
- SLA timers. Set your SLA in hours — 48 by default. Claims past due are badged overdue in the list, announced in a red banner on the dashboard, and flagged on the claim itself.
- A second banner warns you about registrations waiting for review because of unrecognised serials.
Working a claim
Opening a claim shows the customer, the serial, which coverage applies, the description in their words, and the photos they uploaded. You can move it to In review, approve it, close it, or deny it. Internal notes are staff-only and kept separate from the customer-facing timeline, and the timeline records every action with who did it and when.
The four resolutions
| Resolution | What happens in Shopify |
|---|---|
| Replacement | Creates a draft order at $0 for the same variant — a 100% discount titled with the claim number, the customer's email prefilled, and a warrantyhub-replacement tag. It also rotates serials: the old unit becomes replaced and the next available serial is assigned to the replacement, linked back to the claim. You complete the draft order in Shopify as normal. |
| Store credit | Enter an amount and WarrantyHub creates a Shopify gift card noted against the claim and the customer, stores its masked code, and closes the claim in the same step. |
| Repair | Issues an RMA number derived from the claim number, so the returning unit can be matched when it arrives. |
| Refund | Marks the claim for refund. You issue the money back on the Shopify order page, so refunds always follow your normal accounting process. |
Denials and canned responses
Denying a claim requires a reason, which is sent to the customer and shown on their tracker. Because the same few reasons come up constantly, you can build a library of canned responses in Settings and reuse them — their titles appear as a reference list on the denial form.
8. Dashboard & analytics
The dashboard answers two questions: what needs attention today, and what is failing in the field.
| Metric | What it tells you |
|---|---|
| Registrations this month | Usage against your plan allowance. |
| Total registrations | The size of your owner database — the asset you keep building. |
| Active warranties | How many units are currently under coverage. |
| Open claims | Everything still needing action, with overdue ones called out separately. |
| Units sold → registered | Your registration conversion rate. If it's low, change the channel — add QR codes or switch on automatic registration. |
| Claim rate | Claims as a percentage of registrations — your field failure rate. |
| Average resolution time | Averaged over your last 50 closed claims, shown in hours or days. |
| Top fault categories | Your five most common faults by claim count — the quality signal to send to your product team or supplier. |
9. Emails
WarrantyHub sends six transactional emails. All of them carry your brand name and your primary colour, and all are sent through your own SMTP so they come from your domain.
| Goes to | Sent when | |
|---|---|---|
| Registration confirmation | Customer | A product is registered. The warranty certificate PDF is attached. |
| Register in one click | Customer | An order is fulfilled and magic links are enabled. |
| Your registered products | Customer | They request access to the portal. |
| Claim status update | Customer | Any claim status changes, including automatic decisions. |
| Warranty expiring soon | Customer | The template's lead time before coverage ends. |
| Weekly digest | You | Once a week: registrations, claims filed, claims closed, and claims still open over the last 7 days. |
Every send is logged with its delivery status, so a failed email is visible rather than silently lost.
10. Integrations & automation
Shopify Flow
WarrantyHub adds three triggers to Flow, so you can build automations with no code:
- Registration created — carries customer email, serial number, product, and registration channel.
- Warranty claim filed — carries customer email, claim number, fault category, and status.
- Warranty claim approved — same fields, fired only on approval.
Typical uses: tag customers who registered, notify a Slack channel when a high-value claim is filed, or add owners of a specific product to a segment.
Klaviyo
Paste your Klaviyo private API key in Settings and four event metrics start flowing, ready to trigger flows:
WarrantyHub Product Registered WarrantyHub Claim Filed WarrantyHub Claim Approved WarrantyHub Claim Status Changed
Shopify data
- Order metafields — assigned serial numbers are written back to the order, so themes, Flow, and Order Printer templates can read them.
- Draft orders — used for $0 replacements.
- Gift cards — used for store credit.
- Product and collection pickers — the native Shopify selector is used everywhere you assign forms, templates, or pools.
Reliability
Emails, PDFs, webhooks, and integration events are processed by a background worker rather than during a web request, so nothing blocks your storefront or the admin. Every webhook is recorded and retried on failure, and a job runs every 15 minutes to replay anything that was dropped — the most common failure mode of Shopify apps, handled by design.
11. Settings reference
| Setting | Default | What it does |
|---|---|---|
| Auto-register every order | Off | Creates a registration and warranty for each fulfilled item, with no customer action needed. |
| Send magic-link email | On | Invites the customer to register in one click after fulfillment. Ignored when auto-registration is on. |
| Claim SLA (hours) | 48 | How long an open claim can sit before it is flagged overdue everywhere in the app. |
| Klaviyo private API key | Empty | When set, registration and claim events are pushed to Klaviyo. |
| Weekly digest email | Empty | Where to send the weekly summary. Leave blank for no digest. |
| Sender / brand name | Store name | Appears in the header of every email and on every certificate. |
| Primary colour | #0E7C66 | Brand colour for email headers, buttons, and the certificate header band. |
| Logo URL | Empty | Optional logo for branded documents. |
| Canned responses | None | Reusable denial texts, each with a title and body, available on the claim denial form. |
12. Plans & limits
Billing runs through Shopify, so it appears on your normal Shopify invoice. Plans are limited by monthly registration volume — the core features are available on every tier.
| Free | Growth | Scale | |
|---|---|---|---|
| Price | $0/mo | $29/mo | $99/mo |
| Best for | New and small stores | Most durable-goods brands | High-volume brands |
| Registrations / month | 50 | 1,000 | 10,000 |
| Forms | 1 form + QR codes | Unlimited forms + serial engine | Everything in Growth |
| Claims | Basic claims inbox | Full claims workflows + SLA | Priority support |
| Also includes | WarrantyHub branding on forms | Certificates, magic links, no branding | Batch & recall tools (coming soon) |
You can change plan at any time; downgrades are prorated. Historical CSV imports are never blocked by your monthly limit, so migrating your existing data is always possible regardless of tier.
13. Security, privacy & compliance
GDPR and CCPA
All three of Shopify's mandatory privacy webhooks are implemented. A customer data request produces a complete export of that person's registrations, warranties, and claims. A customer redaction anonymises their personal data while keeping the unit and claim history, which is product data rather than personal data. A shop redaction, which Shopify sends 48 hours after uninstall, erases everything the app holds for your store.
Secure customer links
Portal links are cryptographically signed and expire after 24 hours; registration magic links after 60 days. Claim trackers use unguessable tokens. The portal never reveals whether an email address belongs to one of your customers.
Abuse protection
Every public endpoint is rate limited per visitor per hour, and registration forms include a hidden honeypot field to absorb bots. Claim uploads are capped at three files of up to 20 MB each.
Store isolation and audit trail
Every record belongs to exactly one store, and any attempt to reach another store's data returns “not found” by design. Sensitive actions — approving or rejecting a registration, creating a serial pool, and every privacy request — are written to an audit log with the actor and timestamp. Uploaded files are only ever served through authenticated, store-scoped links.
Shopify platform standards
The app is embedded in the Shopify admin using session-token authentication, requests only the permissions its features need, and bills exclusively through Shopify's Billing API. The storefront form is dependency-free JavaScript loaded after your page, and it renders nothing at all when no form is assigned — it cannot break your theme.
14. Use cases by product category
The same building blocks configure very differently depending on what you sell.
E-bikes & scooters
Battery and motor failures are expensive and serial numbers matter for safety records. Create a pool per frame model with check characters, a 24-month template starting on delivery, covered faults for battery, motor, and controller, and exclusions for crash damage. Auto-approve battery claims so customers aren't waiting on you.
Consumer electronics & audio
Customers expect to register and they lose receipts. Rely on magic links so registration is one click, and let the certificate PDF act as their proof of purchase. The fault table will tell you which SKU has a failing component before your reviews do.
Power tools & outdoor equipment
Claims usually mean repair, not replacement. Use the repair resolution to issue RMA numbers, keep wear-and-tear exclusions explicit to settle disputes, and check the unit ledger when the same tool comes back a second time.
Small appliances
High claim rates on lower-value units mean replacement is usually cheapest. A one-click $0 draft order with automatic serial rotation takes seconds, and store credit is a single field when shipping again doesn't make sense.
Furniture
Long or lifetime warranties with no expiry date. Use lifetime templates with coverage starting on delivery, and point customers at the portal so they can prove coverage years later without emailing you.
Watches & jewellery
Here the serial number is authenticity. Import your manufacturer serials, put QR codes in the box, and give every buyer a branded certificate showing the serial and coverage — which also supports resale value.
Solar, batteries & energy storage
Multi-year coverage with documentation requirements. Use long or lifetime templates, put full terms on every certificate, and rely on the per-unit ledger and audit log when installers or regulators ask for history.
Brands with a grey-market problem
Unknown serials are never silently accepted. Any registration using a serial you didn't sell lands in a review queue with the customer's details attached — effectively a distributor-leakage report you didn't have to build.
Brands preparing for recalls or compliance
To reach the owners of specific units, you first need to know who they are. Registration builds that owner database against real serial numbers, and every unit carries a complete event history.
15. Reference tables
Statuses
| Record | Possible statuses |
|---|---|
| Serial | available · assigned · registered · claimed · replaced · void |
| Registration | active · pending review · rejected |
| Warranty | active · expired · voided |
| Claim | submitted · in review · approved · denied · resolution shipped · closed |
| Resolution | replacement · repair · refund · credit · denied |
| Form | draft · active |
Limits
| Item | Limit |
|---|---|
| Serials generated per batch | 1 to 10,000 |
| Imported serial length | 3 to 64 characters |
| QR codes per printed page | 24 (4 × 6, A4) |
| Claim attachments | 3 files, 20 MB each |
| Portal link validity | 24 hours |
| Magic link validity | 60 days |
| Default claim SLA | 48 hours |
| Default expiry reminder | 30 days before expiry |
| Coverage and maintenance checks | Every 15 minutes |
16. FAQ
Do my customers need a Shopify account?
No. Registration, the products portal, claim filing, and claim tracking all work for guests using a secure emailed link.
Do I have to use serial numbers?
No. Everything else works without them. Serials add per-unit tracking, replacement chains, and grey-market detection when you want those things.
Can I import serial numbers I already have?
Yes. Create an imported pool and paste them in, separated by new lines, commas, or semicolons. Duplicates are skipped and counted.
What happens if someone registers a serial I never sold?
The registration is accepted but held as pending review, and you're alerted. Approve it if it was a legitimate retail or offline sale, or reject it — rejecting also voids any warranty that was created.
Will it work with my theme?
Yes. The registration form is a standard theme block you add in the Shopify theme editor — no code and no file edits. It inherits your theme's fonts and, if no form is assigned to a product, it renders nothing at all.
Can coverage start on delivery rather than purchase?
Yes. Each template can start coverage on the purchase date, the registration date, or the delivery date.
Can I offer lifetime warranties?
Yes — tick Lifetime warranty and the coverage has no end date. Customers see “Lifetime coverage” in the portal and on the certificate.
Can claims be approved without me?
Yes, per template. In auto mode, faults on your covered list are approved instantly and faults on your excluded list are denied instantly with the reason. Anything unrecognised still comes to you.
What exactly happens when I approve a replacement?
A $0 draft order is created in Shopify for the same variant, tagged and noted with the claim number, with the customer's email prefilled. The old serial is marked replaced, and the next available serial is assigned to the replacement unit. You then complete the draft order in Shopify as usual.
Why are refunds not issued automatically?
Refunds move real money, so the claim is marked for refund and you complete it on the Shopify order page. That keeps refunds inside your normal Shopify and accounting process.
Do emails come from my brand?
Yes. Every email carries your sender name and brand colour and is delivered through your own SMTP configuration.
Is GDPR handled?
Yes. Data export, customer redaction, and full store erasure are implemented as Shopify's required privacy webhooks, and every privacy action is written to the audit log.
Will it slow down my storefront?
No. The form script has no dependencies, loads after your page content, and does nothing when there's no form to show. Heavy work — PDFs, emails, webhooks — runs on a background worker, never during a page load.
What happens to my data if I uninstall?
Shopify sends a store-redaction request 48 hours after uninstall and all of your data is deleted. Export anything you want to keep before uninstalling.
Start with 50 free registrations a month
Install WarrantyHub, create one form, and see your first registered unit today. No credit card required.
Install on ShopifyWarrantyHub — warranty registration, serial tracking and claims for Shopify.