← Blog

Connect Your Online Store to NodeDR POS: One Stock Count, Not Two

A shop that sells both at the counter and online usually ends up keeping stock twice — once in the POS, once in whatever runs the website — and the two drift apart the moment either one moves without the other knowing. NodeDR POS avoids that by letting your storefront talk to the same stock record the counter already uses.

One product, linked by SKU

The link is a plain field: open a product in Inventory and set its SKU to whatever identifier your storefront already uses for it. That’s the only setup step on the product side — there’s no second catalog to maintain, because the External Stock API always reads and writes the exact same row the register does.

A key-authenticated API, scoped to stock only

Create a key from Settings > Integrations, choose read-only or read + write, and hand it to your storefront’s backend. It authenticates with Authorization: Bearer <api key> — no session cookie, no browser involved — and can reach exactly one thing: the stock of the products you’ve linked. A write-scoped key can adjust stock with a relative delta (“3 units just sold”) or set an absolute count, and every write takes an idempotencyKey so a retried request can’t double-apply.

The other direction: stock pushed to you, not polled

Add a webhook URL to a key and the shop POSTs it — signed, so you can verify it actually came from your NodeDR POS instance — whenever a linked product’s stock changes at the counter: a sale, a return, or a manual correction. Your site can update its own displayed stock the moment it happens, instead of running a polling job against the API on a timer.

What this doesn’t require

No extra service, no message queue, no second database to keep in sync manually. The whole integration is one API key and, optionally, one webhook endpoint on your existing storefront backend — the same self-hosted NodeDR POS instance you already run at the counter is what your website talks to.

Full endpoint list, request/response examples, and the webhook payload format are on the External Stock API page.