Integrations overview
Provider code lives in src/integrations. Feature modules must not import provider SDKs. The architecture check enforces that.
Registration
| Kind | How it is discovered |
|---|---|
| Marketplace | Class names {Provider}OrderService and {Provider}CatalogService. Optional: Customer, Settlement, OutboundOrder, Inventory, WebhookHealth. Prefix must be Shopify, WooCommerce, Amazon, Flipkart, BigCommerce, or Meesho |
| Courier | Duck typing: integrationCode, ship, cancel, track |
Not this regex. Agent module plus meta-commerce | |
CUSTOM | Seed only. Scheduler skips it |
Registry seed: src/migrations/seed/integration-registry.seed.ts. Runtime: IntegrationAutoRegistrationService.
Direction
| Flow | Direction |
|---|---|
| Order, product, customer, settlement pull | Channel → PointNXT on the scheduler |
| Inventory publish | PointNXT → channel |
| Order status push | PointNXT → channel when Channel.manageState is true (schema comment) |
| Price push | channel-price-push.adapter.ts exists. Call sites were not fully traced |
| Labels and tracking | PointNXT → courier, then courier → PointNXT by webhook or poll |
Shared failure behavior
sync_queue attempts 3, exponential backoff 5 seconds. Circuit breaker writes SUSPENDED, not INACTIVE. Outbox retries then DEAD, with no replay API identified. Inventory feed poll reaper runs every 10 minutes. Stale outbox PROCESSING locks return to PENDING after 5 minutes.
Credentials
Encrypted on IntegrationConnection with CREDENTIAL_VAULT_KEY_V1. Not stored in Channel.config.
Pages
Shopify, WooCommerce, Amazon, Flipkart, BigCommerce, Meesho, WhatsApp, Couriers, Payments, Platform services.