Headless storefront
The usual paths are our storefront or widgets on your own site. But when the site is built by your own developer or agency and the frontend must be entirely yours, there is a third option: you take the data and the order flow from us and build everything else on any stack you like.
Reading the data needs no keys and no authentication: whatever is public on the storefront is public as JSON.
Where to enable and configure it: Marketing → “My Website” → the “Headless storefront” card. It also shows your location's manifest URL and the technical documentation.
The storefront.json manifest
The only address your developer needs:
https://cdn.masamenu.tr/{DOMAIN}/storefront.json
Everything else is inside it:
| Block | What it holds |
|---|---|
location |
Identifier, slug, vertical (restaurant, shop, hotel, salon) |
languages |
Default language and the list of enabled ones |
currency |
Currency code and symbol |
cdnBase + data |
Paths to the menu, profile, pages, collections and reviews |
catalog |
Catalogue mode: everything in files, or per-item files plus a catalogue API |
images |
Image base, path template and available sizes |
api |
Guest API endpoints, the OpenAPI spec and the MCP endpoint |
publishId, publishedAt |
Publication identifier, changed on every data regeneration |
digests |
File digests, so caches can be invalidated surgically |
The contract is versioned (contractVersion) and published with JSON schemas you can validate against and generate types from. Unknown fields must be ignored: the contract grows without breaking compatibility.
Data and images
Everything the storefront renders is available as files: menu and catalogue per language, the location profile (name, address, opening hours, contacts, settings), pages and articles, collections and reviews.
For large catalogues the manifest switches to api mode: the menu file holds a lightweight selection and full item cards are fetched per file or through the catalogue API with filters and subcategories.
Images come from our CDN in several sizes, following the template in the manifest; when a photo is replaced the path is versioned, so you can cache aggressively.
Orders and the guest API
Order placement, order status, search and bookings go through the guest API: no authentication, the address comes from the manifest, and the specification is OpenAPI 3.1. There is a separate commerce surface for coupons, delivery quotes, forms and subscriptions. See Guest API for AI agents — it is the same interface.
An order created by your site lands in the shared “Orders” section and follows the usual rules: statuses, kitchen, couriers, receipts, notifications.
Change webhooks
Instead of polling the CDN, subscribe to events:
menu.updated— the menu or catalogue has been regenerated;profile.updated— the location profile changed.
The payload carries the publishId, which is convenient for rebuilding static pages or busting an ISR cache. Every request is signed with HMAC-SHA256 using your secret — verify the signature before rebuilding anything. Up to five endpoints per location, with a retry on failure.
Webhooks are configured in the “Headless storefront” card and are available on paid plans; reading the data is always available.
Getting started
- Open Marketing → “My Website” → “Headless storefront” and copy the manifest URL.
- Fetch the manifest and, from it, the menu and profile data. No keys are needed at this stage.
- Build the pages with your framework of choice; use the guest API for orders.
- Add a webhook so the site rebuilds when data actually changes.
The full technical description is behind the “Documentation” link in the same card, together with a working storefront example and an llms.txt for your developer's AI assistants.
Related topics
- My Website — widgets, if rewriting the site is unnecessary
- Guest API for AI agents — the same guest API
- MCP API — AI agent access to the dashboard
- Online store — what the catalogue data actually contains
FAQ
Do I pay for reading the data? No. The public JSON is available on any plan — these are the same files our own storefront uses. Webhooks are the paid part.
What about SEO? It is entirely on your side: you build the pages and control the markup. The data needed for structured data (JSON-LD) is in the contract.
Can I combine this with your storefront? Yes. Our storefront, the widgets and your own site all work from the same data and the same order flow.