โ— Bidirectional ETL for commerce

One sync engine for Odoo & every shop you sell on.

Gateway NG keeps products, orders, customers, stock and prices in lockstep between Odoo and any webshop, marketplace, or vendor system โ€” driven by declarative JSON mappings and a battle-tested transform pipeline. No bespoke integration code per shop.

4+
production connectors
2-way
delta sync & conflict rules
JSON
declarative field mappings
Connect Odoo Shopify WooCommerce Magento 2 OpenCart Shopware 6 CSV / Excel
The platform

Everything a real integration needs โ€” built in.

Not a one-shot importer. A durable, observable sync platform with the guardrails you only notice when they're missing.

Bidirectional sync

Read and write both ways between Odoo and any shop. Products, orders, customers, stock, prices, categories โ€” round-tripped without data loss.

Declarative JSON mappings

Field-by-field mappings live as versioned JSON with a typed schema. Override per tenant in the DB โ€” no redeploy to change how a field maps.

MAPTO transform pipeline

The battle-tested transform engine from srmigration: compose, default, and lambda-transform source fields into target records with full type safety.

Incremental delta sync

Per-model watermarks track the last-seen timestamp so each run moves only what changed. Delete a watermark to trigger a full backfill.

Per-field conflict rules

fnmatch-style globs decide who wins when both sides change a field. First match wins, identity keys are always preserved โ€” no silent clobbering.

Cron scheduler & queues

APScheduler fires syncs on a cron schedule with stuck-job detection; an arq-backed queue runs them async so big catalogs never block the API.

Visual mapping editor

A React console to browse every connector's field tables, edit mappings, trigger and watch runs live, and inspect the raw per-record changelog.

Multi-tenant & RBAC

Tenant-scoped connectors, connections and mappings with a three-level role resolver (user โ€บ workspace โ€บ company) and per-tenant rate limits.

Lastloop SSO

OIDC Authorization-Code + PKCE against Lastloop. JWTs are validated server-side, every endpoint is auth-gated, and runs are fully audited.

Connector logic

A mapping, not a migration script.

Each connector ships a collection of JSON model mappings. The engine reads the source, runs every field through the MAPTO pipeline into typed Pydantic records, diffs against the target, applies conflict rules, and writes only what changed โ€” the same path for every shop.

  • 1
    Read & cursorSource connector pulls records since the last watermark โ€” REST, GraphQL bulk, or JSON-RPC.
  • 2
    MAPTO transformSource fields are composed, defaulted (MAPVALUE) and lambda-transformed into a typed record.
  • 3
    Diff & resolveThe record is matched by external id, diffed, and per-field conflict rules decide each winner.
  • 4
    Write & recordOnly changed fields are written; the run, changelog and new watermark are persisted for audit.
mappings/mapping_shopify/model_res_partner.json
// Shopify customer โ†’ Odoo res.partner โ€” declarative, versioned
{
  "model": "res.partner",
  "source_table": "shopify_customer",
  "source_id_field": "id",
  "record": {
    "name": {
      "MAPTO": ["firstName", "lastName",
        "lambda f, l: f'{f} {l}'.strip()"],
      "type": "char", "required": true
    },
    "email": { "MAPTO": "email", "type": "char" },
    "city": {
      "MAPTO": ["defaultAddress",
        "lambda a: a.get('city','') if a else ''"],
      "type": "char"
    },
    "customer_rank": { "MAPVALUE": 1, "type": "integer" }
  }
}
Coverage

Connectors, and what they can do today.

Every connector speaks the same internal contract, so adding a platform is a mapping + an API client โ€” never a rewrite of the engine.

PlatformDirectionStatusNotes
Odoo (JSON-RPC / XML-RPC)BidirectionalProductionIncremental watermarks
Shopify (Admin API)BidirectionalProductionREST + GraphQL bulk ops
WooCommerce (REST)BidirectionalProductionREST v3
Magento 2 (REST)BidirectionalProductionCatalog + stock
OpenCart (REST)BidirectionalBetaCode shipped, tests pending
Shopware 6 (REST)BidirectionalBetaCode shipped, tests pending
CSV / ExcelBidirectionalDesignedMinIO / S3 codecs
Get started

Sign in and watch your catalog sync.

Connect a shop, pick a mapping, hit run, and watch records round-trip live. The console hides nothing.