A phone-first inventory system that stays private by default
A product catalog can't tell you what's actually in the room
Physical inventory isn't the same problem as a product catalog. The business needed to know what exact item exists, where it physically is, what condition it's in, whether it can be demoed or sold, and - separately - what subset of that should ever appear on the public website.
Give staff a phone-first tool, not a spreadsheet
Implement an installable Cloudflare Worker app backed by D1 that supports product lookup, missing-product capture, inventory item create/edit flows, listing profiles, Webflow payload previews, sync jobs, and a control room for D1, SureCart, Webflow, jobs, and diagnostics.
A D1-backed inventory system with reviewed, dry-run Webflow sync
The inventory scanner gives demo products, secondhand listings, and stock review a safer operational foundation, with public sync always staged behind a review step.
Our other projects
The brief was a practical inventory tool staff could run from a phone, keeping public listings in Webflow and commerce data in the shop stack rather than mixing all three together.
Physical inventory isn't the same as a product catalog. The business needed to know what exact item exists, where it is, what condition it's in, whether it can be demoed or sold, and what subset of that data should ever reach the public website.
The system had to keep private operational data separate from public listing data, support barcode-style workflows from a phone, default Webflow sync to reviewable dry-runs, and never send serial numbers, private notes, holder names, or client identity to Webflow.
SoFlow implemented an installable Cloudflare Worker app backed by D1, supporting product lookup, missing-product capture, inventory item create/edit flows, listing profiles, Webflow payload previews, sync jobs, and a control room covering D1, SureCart, Webflow, jobs, and diagnostics.
D1 owns physical inventory records and sync job state. The Worker's UI lets staff scan or enter product codes, create inventory items, prepare listing profiles, and review Webflow payloads before any staged or live CMS write happens.
- Phone-first inventory and barcode-style workflow
- D1-backed physical item records and product references
- Missing-catalog-product review flow
- Quick stock scanner with review JSON for stock adjustments
- Dry-run Webflow sync jobs for demo and secondhand listings
- Control room for D1, Webflow schema, sync jobs, and diagnostics

The inventory scanner gives demo products, secondhand listings, and stock review a safer operational foundation, with room to extend into public request workflows later.
- D1 is the operational source of truth for every physical item
- Webflow sync defaults to dry-run and staged targets, never live-first
- Public listing payloads intentionally exclude serial numbers, private notes, holder names, and client identity
- Control room exposes health, schema, payload, and sync job state for staff review
Why not just manage all of this inside Webflow CMS?
Webflow is good at presenting products, but physical inventory carries private fields - serial numbers, condition, holder names, lifecycle state - that shouldn't live in a public CMS. Keeping that in D1 lets Webflow stay a clean, reviewed public listing surface.
Can this support secondhand or demo listings?
Yes. Separating physical item state from public listing profiles makes it suitable for demo gear, used stock, secondhand listings, trade-ins, and consignment flows without extra rework.
Does the app write directly to Webflow?
No, not by default. The safe posture is review-first - sync jobs and dry-run payloads can be inspected before any live Webflow write is ever enabled.
This proves SoFlow can design operational systems where Webflow stays the public presentation layer while Cloudflare Workers and D1 own private workflow state, review gates, and integration safety.
Why not just manage all of this inside Webflow CMS?
Webflow is good at presenting products, but physical inventory carries private fields - serial numbers, condition, holder names, lifecycle state - that shouldn't live in a public CMS. Keeping that in D1 lets Webflow stay a clean, reviewed public listing surface.
Can this support secondhand or demo listings?
Heading 1
Heading 2
Heading 3
Heading 4
Heading 5
Heading 6
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Block quote
Ordered list
- Item 1
- Item 2
- Item 3
Unordered list
- Item A
- Item B
- Item C
Bold text
Emphasis
Superscript
Subscript
Heading 1
Heading 2
Heading 3
Heading 4
Heading 5
Heading 6
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Block quote
Ordered list
- Item 1
- Item 2
- Item 3
Unordered list
- Item A
- Item B
- Item C
Bold text
Emphasis
Superscript
Subscript
Public listing content, stock visibility, and physical item state risked being mixed together across the CMS, commerce tools, and manual processes.
Physical inventory now lives in D1, and Webflow receives only reviewed public listing fields through controlled sync jobs.
Webflow CMS can display public items well, but it has no business being the operational source of truth for serial numbers, staff state, private notes, lifecycle events, or sync retries.
A dedicated backend is what makes it possible to validate, review, queue, and retry public listing syncs safely.






