Endpoint
Fetch up to 50 SKUs per request:
GET https://app.buildmyonlinestore.com/api/embed/offers/STOREFRONT_ID?products=SKU1,SKU2
The response includes sellable offers that BMOS buy buttons and static storefront hydrators can trust.
Inventory Fields
availability:in_stockorout_of_stock.inventory_tracking: true when source quantity should be treated as hard stock truth.inventory_quantity_known: true when BMOS has a real quantity to show.inventory_quantity: numeric stock quantity when known, otherwise null.
When inventory is unknown, generated static JSON-LD should default to https://schema.org/InStock and the visible UI should hydrate from public offers.
Optional Hydrator Script
Static sites can patch price, availability, and inventory elements with one script:
<script
src="https://app.buildmyonlinestore.com/bmos-offers-hydrator.js"
data-storefront-id="STOREFRONT_ID"
defer></script>
Add product-aware targets to the page:
<strong data-bmos-offer-price data-product-id="SKU">$9.99</strong>
<span data-bmos-offer-availability data-product-id="SKU">In Stock</span>
<span data-bmos-offer-inventory data-product-id="SKU" hidden></span>
The script batches SKUs, calls the public offers endpoint, and updates matching elements without blocking the initial page render.
Static Store Rule
Static storefronts should keep title, image, description, and product pages static for speed and SEO, but live commerce state should either hydrate from public offers or be refreshed by a Distribution Webhook rebuild.