Connectors

Publish products from UnoPim, ERPNext, metasfresh or Odoo to a GS1 Digital Link, a digital product passport and EPCIS events.

Your products already live in a PIM or an ERP. A connector publishes them to the OpenEPCIS catalog under a GS1 Digital Link, so a scan resolves to a passport without anyone re-typing the data.

Pick your system

SystemSetupPublishesPanel in the app
UnoPimNothing to install. Optional PHP package for the panelProducts, batchesYes
ERPNextAn API key, two custom fields, five webhooksProducts, batches, serials, partiesNo
metasfreshA read-only API tokenProducts, partiesNo
OdooSix addons from its repositoryProducts, contacts, lots, serials, movementsYes

Odoo publishes from inside Odoo, on a schedule. The other three are polled by a service we run.

Start with how a connector works, or follow a warehouse day in Odoo screen by screen.

What you get

One record from a source system flows through a connector into the catalog, from where the GS1 master-data document, the EN 18223 passport and EPCIS events are all served behind the GS1 Conformant ResolverOne record from a source system flows through a connector into the catalog, from where the GS1 master-data document, the EN 18223 passport and EPCIS events are all served behind the GS1 Conformant Resolver

A master-data document at /01/<gtin>, with /10/<lot> for a batch and /21/<serial> for a single item. JSON-LD over the GS1 Web Vocabulary, so it expands to RDF and validates against SHACL shapes. Add your own terms from the battery, textile, packaging or EUDR vocabularies.

An EN 18223:2026 passport, derived from that document when you read it. In JSON as compressed, full or gs1, and in XML, Turtle or N-Triples. Creation needs a Digital Link and an economic operator; without them it is refused.

EPCIS events for individual items. A batch travels as a class, a serial as a single unit, a pallet as an SSCC. The event ID is the CBV hash, so re-sending the same event changes nothing.

A linkset that a scanner reads: master data, passport, product page, events.

Who sees which fields

Three tiers: Public, AuthorizedOnly, Restricted. A caller sees Restricted fields with the restricted role in the owning tenant, AuthorizedOnly as any member of it, Public otherwise. Document-level access is live. Field-level filtering waits on dlr.field-access.enforce, off by default. Unmarked fields default to AuthorizedOnly.

Standards note: EN 18222 and EN 18223 are two of six parts CEN/CENELEC JTC 24 published in 2026 under request M/604. The series is not yet cited in the EU Official Journal, so implementing it gives no presumption of conformity with the ESPR. prEN 18239 and prEN 18246, which cover access rights and data authentication, are still in development.

Good to know

Mappings are YAML, one file per connection: source field, GS1 term, direction. Direction decides which side owns a field.

Every connection starts in dry-run. Turn it off when you mean it — the catalog writes to real registrars.

Webhooks only trigger a re-read; the payload is never trusted as data. Publishing the same record twice is a no-op.

Not there yet

  • A passport needs a manufacturer. Sync a product without one and you get a catalog entry, not a finished passport.
  • Deleting in the source does not delete in the catalog.
  • ERPNext and metasfresh have no panel in the host application.
  • The Java connectors only report commissioning. Odoo also reports movements, packing and production.
  • Fixes made in the platform reach your system on the next poll, not sooner.
  • The Java connector is not public yet. Odoo's addons are.
Last updated: