Connectors
Available backend connectors for Tally UI
Available Connectors
WooCommerce
pnpm add @tallyui/connector-woocommerceConnects 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-medusaConnects 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-shopifyConnects 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-vendureConnects 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.