Digital menu widgets in Bangalore: why an embedded iframe keeps your dishes out of AI search

Digital menu widgets in Bangalore: why an embedded iframe keeps your dishes out of AI search

Digital menu widgets in Bangalore: why an embedded iframe keeps your dishes out of AI search

A menu widget pasted into your Bangalore restaurant's website as an iframe, the kind that pulls from Zomato, Swiggy, or a no-code embed tool, keeps your dishes out of ChatGPT, Claude, and Perplexity answers. The crawlers behind those tools do not run JavaScript, so if your dish names and prices only exist inside the widget rather than in your page's own HTML, those crawlers never see them. Google can sometimes render more of the page, but the dependable fix is a plain HTML menu that needs no widget at all.

What happens when your menu is a widget, not a page

A lot of Bangalore restaurant sites do not have a menu page. They have a "View Menu" button that opens a box pulling live content from a third-party service, often through an iframe, a document loaded inside your page from another domain. It looks like part of your site to a visitor. To a crawler reading your page's raw HTML, that box is often just an empty container with a script tag, and the dish names and prices only appear after that script runs.

Why AI answer engines miss what Google sometimes catches

Vercel's own crawler traffic research, published in December 2024 from a month of network data, found that none of the major AI crawlers, including the ones behind ChatGPT, Claude, and Perplexity, render JavaScript. ChatGPT's crawler fetched JavaScript files in about 11.5 percent of its requests, and Claude's in about 23.84 percent, but neither one executed what it fetched. A separate breakdown of the same behavior puts it plainly: if your content is injected by JavaScript after the page loads, an AI crawler sees the empty shell that loaded first, not the menu that eventually appears.

That is a different problem from what Google does. Googlebot can render JavaScript and sometimes picks up content injected this way, so a widget-based menu might still show up in a Google search result even while it stays invisible to an AI assistant reading the same page. A restaurant that only checks its Google ranking can miss that its dishes never reach ChatGPT or Perplexity at all.

What a no-code menu widget looks like, and why restaurants use it

Products built exactly for this exist and are easy to find. Elfsight's iframe restaurant menu widget, for one, is configured through an online editor and dropped onto a site as a single block of embed code, no HTML required. That convenience is the entire appeal: a restaurant owner without a developer can have a menu live in minutes, styled and synced without touching a line of code. The cost of that convenience is that the content lives on Elfsight's servers and is fetched by a script, not written into your page.

The same trade-off applies to a Zomato or Swiggy widget embedded for the same reason, to avoid maintaining a menu by hand. It solves the update problem. It does not solve the visibility problem, because the underlying delivery mechanism is the same: a script pulling content into an iframe after your page's HTML has already been sent to whatever is reading it.

The fix: an HTML menu page under your own domain

The workaround is not complicated, it is just a different starting point. Every dish name, price, and description needs to exist as real text in the HTML your server sends out, on a page that belongs to your own domain, not fetched afterward from someone else's. Studio Happens builds exactly this as a service, publishing each item as page text with structured categories rather than a widget, so the same menu that a diner scans by QR code is also the one an AI crawler can read on the first request.

This is a different failure mode from a PDF or scanned menu, which fails because the file format cannot be parsed as text at all. A widget-based menu can be perfectly readable text once it loads. The problem is that most AI crawlers never wait around long enough to see it load.

Frequently asked questions

Q: Does a Google Business Profile menu link avoid this problem?

Only if the link goes to a real HTML page. If your GBP menu link points to the same iframe widget or a Zomato listing, the same JavaScript gap applies there too. The fix is the destination page, not which button on Google points to it.

Q: Can I keep my Zomato or Swiggy widget and just add something for AI search?

Yes. Keep the widget for whatever it does well, ordering, live availability, and add a separate, plain HTML menu page on your own site that AI crawlers can read without it. The two do not have to be the same piece of code.

Q: How do I check if my current menu is a widget an AI crawler can't read?

View your menu page's source in a browser (right-click, view page source) rather than the rendered page. If the dish names and prices are missing from that raw HTML and only appear once the page finishes loading, they are being injected by a script, and an AI crawler will not wait for that.

Studio Happens, Bangalore's go-to affordable digital marketing partner, can help you get started today.

Key Takeaway

NT

Written by Niranjan M Theroth

Founder at Studio Happens. I'm obsessed with creating marketing systems that turn good businesses into brands people can't ignore.