Aftersale Module
Manage warranty registrations, claims, and post-purchase customer care with a branded self-service portal.
Base URL: https://app.proign.com/[tenant]/aftersale/api
Overview
The Aftersale module handles the complete post-purchase lifecycle:
- Product warranty registration with serial number validation
- Customer self-service portal for claims and status tracking
- Warranty period management per product category
- Claims processing with admin review workflow
- Integration with Shopify for purchase verification
- Integration with Inventory for returns processing
Key Features
Warranty Registration
Customers register their products for warranty coverage through a public-facing portal or QR code scan:
- Customer scans product QR code or visits the registration page
- Enters product serial number and purchase details
- System validates the serial number against known product database
- Optionally uploads proof of purchase (receipt photo)
- Receives warranty confirmation with coverage details and expiry
Warranty Periods
Configure warranty coverage per product category:
| Setting | Description |
|---|---|
| Standard Period | Default warranty duration (e.g., 12 months from purchase) |
| Extended Period | Optional extended coverage (e.g., 24 months with registration) |
| Coverage Type | Full replacement, repair, or limited coverage |
| Transferable | Whether warranty transfers with product ownership |
Claims Workflow
When a customer experiences an issue with a warranted product:
submitted → under_review → approved / denied → resolved- Submit Claim — Customer describes the issue, uploads photos, and selects the warranted product
- Admin Review — Support team reviews the claim, verifies warranty status, and may request additional information
- Resolution — Claim is approved (replacement, repair, or refund) or denied with explanation
- Fulfillment — If approved, a replacement order or repair ticket is created in the appropriate module
Customer Portal
A branded self-service portal where customers can:
- Register new products for warranty
- View all registered products and warranty status
- Submit warranty claims with photo evidence
- Track claim status in real-time
- Access product documentation and support resources
- Update their contact information
Serial Number Validation
Configurable validation rules to ensure only legitimate products are registered:
- Format Rules — Regex patterns for valid serial number formats (e.g.,
SN-[A-Z]{2}-[0-9]{6}) - Uniqueness Check — Prevent duplicate registrations for the same serial
- Product Lookup — Match serial to product SKU and category for automatic warranty period assignment
- Shopify Verification — Cross-reference with Shopify order data to verify legitimate purchases
API Endpoints
Authentication
POST /api/[tenant]/auth/login # Customer login
POST /api/[tenant]/auth/register # Customer registration
GET /api/[tenant]/auth/me # Get current user
POST /api/[tenant]/auth/logout # Customer logout
POST /api/[tenant]/auth/forgot-password # Request password reset
POST /api/[tenant]/auth/reset-password # Reset with token
Warranties
POST /api/p/[tenant]/warranties # Register warranty (public)
GET /api/[tenant]/warranties # List customer warranties
GET /api/[tenant]/warranties/[id] # Get warranty details
GET /api/[tenant]/admin/warranties # List all warranties (admin)
PATCH /api/[tenant]/admin/warranties/[id] # Update warranty (admin)
Claims
POST /api/[tenant]/claims # Submit claim
GET /api/[tenant]/claims # List customer claims
GET /api/[tenant]/claims/[id] # Get claim details
GET /api/[tenant]/admin/claims # List all claims (admin)
PATCH /api/[tenant]/admin/claims/[id] # Review/resolve claim (admin)
Products & Configuration
GET /api/[tenant]/products # List products
GET /api/config # Public configuration
GET /api/health # Health check
Media
POST /api/[tenant]/upload # Upload claim photos
GET /api/[tenant]/media/[id] # Get uploaded media
Request Examples
Register Warranty
POST /api/p/[tenant]/warranties
Content-Type: application/json
{
"serial_number": "SN-CA-20250115",
"purchase_date": "2026-01-15",
"retailer": "Outdoor Pro Shop",
"customer": {
"email": "customer@example.com",
"name": "John Smith",
"phone": "+1-555-0123",
"address": {
"street": "123 Main St",
"city": "Miami",
"state": "FL",
"zip": "33101"
}
}
}
// Response (201 Created)
{
"data": {
"id": "wty_abc123",
"serial_number": "SN-CA-20250115",
"product": {
"name": "TP9 Elite SC",
"category": "Handguns"
},
"warranty_start": "2026-01-15",
"warranty_end": "2028-01-15",
"coverage": "full_replacement",
"status": "active"
}
}Submit Claim
POST /api/[tenant]/claims
Content-Type: application/json
Authorization: Bearer <customer-jwt>
{
"warranty_id": "wty_abc123",
"issue_type": "malfunction",
"description": "Slide release is stiff and does not engage properly",
"photos": ["media_xyz789"],
"preferred_resolution": "repair"
}
// Response (201 Created)
{
"data": {
"id": "clm_def456",
"warranty_id": "wty_abc123",
"status": "submitted",
"created_at": "2026-02-21T10:00:00Z"
}
}Resolve Claim (Admin)
PATCH /api/[tenant]/admin/claims/clm_def456
Content-Type: application/json
Authorization: Bearer <admin-jwt>
{
"status": "approved",
"resolution": "repair",
"admin_notes": "Issue confirmed — forwarding to service center",
"notify_customer": true
}Configuration
- Warranty Periods — Define default and extended periods per product category
- Required Fields — Configure which fields are required during registration (phone, address, proof of purchase)
- Serial Validation — Set regex patterns and product lookup rules
- Claim Types — Define available issue types and resolution options
- Notifications — Email templates for registration confirmation, claim updates, and resolution
- Shopify Connection — Link Shopify store for purchase verification