One registry. Four adapters. Zero leaf-table changes.
The generic MarketplaceAccount parent is the FK target for everything — orders, shipments, returns, payouts, schedules, listings. Each marketplace owns a 1:1 satellite table with its identity + encrypted credentials. Adding a new marketplace is a Marketplace row + a satellite + an adapter — no schema ripple.
- MarketplaceAccount is generic — orders, shipments, returns, payouts all FK to it.
- Per-marketplace satellite tables (ajio_account_details, meesho_account_details, amazon_account_details, flipkart_account_details) carry strongly-typed credentials.
- MarketplaceAdapter contract: syncOrders, syncReturns, syncPayouts, pushInventory, fullProcessing.
What you get.
Strongly-typed credentials
AJIO's four-blob credential set, Meesho's API key + secret, Amazon SP-API's refresh token, Flipkart's API key + secret — each lives in a typed satellite. No JSON blob abuse, no field collisions across marketplaces.
Generic FK target
Orders, shipments, returns, payouts, schedules, listings, inventory tasks all point at marketplace_account_id. The adapter resolves the satellite at call time. Leaf tables don't know which marketplace they're holding.
Validation status on the parent
last_validated_at, last_validation_status, needs_reconnect live on MarketplaceAccount because all marketplaces have the concept. Detail-level errors (AJIO 401, Meesho HMAC mismatch) flow into marketplace_credential_events.
Methods every adapter implements.
- code — the Marketplace.code dispatch key (e.g. 'AJIO', 'MEESHO', 'AMAZON_IN', 'FLIPKART').
- supportedTargets — subset of ScheduleTarget enum the adapter handles.
- syncOrders(ctx) — ingest open orders into the Order table.
- syncReturns(ctx) — ingest returns into OrderReturn + OrderReturnItem.
- syncPayouts(ctx) — ingest settlements into MarketplacePayout + PayoutLineItem.
- pushInventory(ctx) — push deductions to the marketplace.
- fullProcessing(ctx) — run the per-marketplace process pipeline (AJIO 11-stage on AJIO).
Practical answers.
Type safety and audit. JSON columns make it impossible to grant least-privilege access to a single marketplace's credentials. Satellites let IAM/RLS scope reads to one satellite at a time.
Three steps. (1) Insert a row into the marketplaces table. (2) Create the per-marketplace satellite migration. (3) Implement and register the adapter. No leaf-table migrations needed.
We don't publish dates. Meesho is the most-asked-for next; Amazon SP-API integration is HAR-investigation pending; Flipkart follows. See /roadmap for the live order.
Try it inside your own dashboard.
Free during early access. No card. Forever free under 25 orders/day.
