An 8-table vegan cafe in Bornova, Izmir ranks third in ChatGPT's "Izmir vegan brunch where" query — not from social media, but because thMenu silently emits a combined schema markup the owner doesn't even know exists. Here's how we fuse Restaurant, Menu, and Review types into one JSON-LD block.
Why One Block, Three Schemas?
Google, Bing, and especially ChatGPT and Perplexity often struggle when Restaurant, Menu, and Review live in separate script tags. The LLM frequently parses only the first block and drops the rest. Our solution: a single @graph array with three nodes cross-referenced via @id.
That layout lets an LLM pick up the address, three brunch dishes, vegan flag, and the 4.7-star aggregate rating in one pass. Split into separate blocks, only the Restaurant snippet usually survives the cut.
The JSON-LD Skeleton
thMenu's auto-generated template follows this order:
- Restaurant node:
name,address,servesCuisine,priceRange,image,aggregateRating, andhasMenu: { @id: "..." }. - Menu node:
@type: "Menu"withhasMenuSectionarrays, each section listingMenuItemobjects (name, description, offers.price, suitableForDiet). - Review node:
@type: "Review",itemReviewed: { @id: "the restaurant id" }, with 3-5 recent reviews (author, reviewRating, datePublished).
Validation for LLMs and Classic SEO
After deployment, verify in three places: Google Rich Results Test (Restaurant + Menu), Schema.org Validator for type errors, and finally ChatGPT itself — query your restaurant by name plus city and see how the markup data lands in the answer.
thMenu computes the aggregate rating only from the last 90 days of customer feedback; older or flagged reviews are excluded. This keeps you safely on the right side of Google's review-spam policy.
FAQ
How long until schema updates show in AI search? Around 1-3 weeks for Google; 7-21 days for ChatGPT and Perplexity, gated by Bing's crawl cycle.
Will I get a fake-rating penalty? Not if your AggregateRating is built from real feedback and reviewCount is honest. Inventing numbers is what triggers the penalty.
Should I list every menu item? No — the top 20-30 are enough. Beyond that you bloat page size and waste crawl budget.
Found this helpful? Share it.
Related articles
The Complete Guide to Running a Multilingual Restaurant Menu
Serving international guests? Learn how to set up a menu that automatically spea…
What Is a QR Code Menu? The Complete Guide for Restaurants
A QR code menu lets customers access your full restaurant menu instantly on thei…
Understanding Your Restaurant's Data: A Practical Analytics Guide
Your menu generates data every day. Learn how to read it, act on it, and use it …