Tally UI

Connectors

Available backend connectors for Tally UI

Available Connectors

WooCommerce

pnpm add @tallyui/connector-woocommerce

Connects to WooCommerce stores via the REST API. Supports WooCommerce v3 API and the WCPOS API extension.

Auth: Consumer Key + Consumer Secret (Basic Auth)

MedusaJS

pnpm add @tallyui/connector-medusa

Connects to MedusaJS v2 backends via the Admin API. Fetches products with variants, pricing, categories, and images.

Auth: Admin API Token (Bearer)

Built on it: Medusa POS · live demo

Shopify

pnpm add @tallyui/connector-shopify

Connects to Shopify stores via the Admin API. Fetches products with variants, images, and inventory data.

Auth: Admin API Access Token

Vendure

pnpm add @tallyui/connector-vendure

Connects to Vendure backends via the GraphQL Admin API. Supports products with variants, facets, and assets.

Auth: Bearer Token

Built on it: Vendure POS · live demo

Coming Soon

  • Square — Square APIs for retail
  • Vend/Lightspeed — Lightspeed Retail

One connector per store session

Build each connector with its factory, anew on each sign-in or store change, and never share one instance between two stores: an instance owns the reconcile feed that carries corrections into its own database.

import { useMemo, type ReactNode } from 'react';
import { ConnectorProvider } from '@tallyui/core';
import { createWooCommerceConnector } from '@tallyui/connector-woocommerce';
// Likewise createMedusaConnector() or createMedusaAdminUserConnector() from '@tallyui/connector-medusa',
// and createVendureConnector({ pricesIncludeTax }) from '@tallyui/connector-vendure'.

// `session` is a new object on each sign-in or store change, so each session gets its own connector.
function StoreSession({ session, children }: { session: object; children: ReactNode }) {
  const connector = useMemo(() => createWooCommerceConnector(), [session]);
  return <ConnectorProvider connector={connector}>{children}</ConnectorProvider>;
}

The static exports woocommerceConnector, medusaConnector, medusaAdminUserConnector and vendureConnector are deprecated, because one shared instance can leak queued reconcile work across stores; they are removed in 4.0.

Replication

All four connectors ship with pull-only product replication adapters. Each adapter knows how to pull changes from its API using checkpoint-based pagination. The POS never writes catalogue data back. See the Replication guide for setup and usage.

Building a Custom Connector

Implement the TallyConnector interface from @tallyui/core:

import type { TallyConnector } from '@tallyui/core';

export const myConnector: TallyConnector = {
  id: 'my-backend',
  name: 'My Backend',
  description: 'Custom connector for My Backend API',

  auth: { /* ... */ },
  schemas: { products: myProductSchema },
  traits: { product: myProductTraits },
  replication: { products: myProductReplication },
};

See the Replication guide for how to implement a ReplicationAdapter, and the WooCommerce connector for a complete example.

On this page