Skip to main content

Visibility on Google

Your menu and reservations page are indexable by Google. RestaPro handles 80% of the SEO work automatically; you bring the carefully crafted content.

Indexable pages

  • Menu: /r/:slug - for searches like "what they eat at..."
  • Reservations: /c/:slug - for "reserve at..."

Each ranks independently.

Dynamic meta tags

The public-meta-tags edge function (which nginx calls when it detects a crawler) serves HTML with:

<title>La Trattoria menu - RestaPro</title>
<meta name="description" content="Authentic Italian cooking...">
<meta property="og:title" content="La Trattoria menu">
<meta property="og:image" content="https://cdn.../cover.jpg">
<link rel="canonical" href="https://www.restapro.es/c/la-trattoria">

This means Google and non-rendering crawlers see the correct title and description without needing to execute JavaScript.

Open Graph (sharing on social)

When someone shares your URL on WhatsApp, Facebook, or Instagram, they see:

  • Large image (your cover or logo)
  • Title "Reserve at [your restaurant]"
  • Description from the first part of your description

The og:* meta tags are dynamic per restaurant. If you don't share your own image, the placeholder shows up.

JSON-LD: schema.org/Restaurant

RestaPro injects structured data Google understands:

{
"@type": "Restaurant",
"name": "La Trattoria",
"telephone": "+34 ...",
"address": {...},
"geo": {"latitude": 40.4, "longitude": -3.6},
"aggregateRating": {"ratingValue": 4.7, "reviewCount": 215},
"openingHoursSpecification": [...],
"acceptsReservations": true,
"hasMenu": "https://www.restapro.es/c/la-trattoria"
}

Google shows the rating star, hours, and the "reserve" button right in the search results.

For /c/:slug, RestaPro also injects a Menu schema with all categories and dishes:

{
"@type": "Menu",
"name": "La Trattoria menu",
"hasMenuSection": [
{
"@type": "MenuSection",
"name": "Antipasti",
"hasMenuItem": [
{"@type": "MenuItem", "name": "Burrata", "offers": {"price": "8.50", "priceCurrency": "EUR"}}
]
}
]
}

Google sees this before executing JS: it shows up in Rich Results with enriched snippets.

Automatic sitemap

https://www.restapro.es/sitemap.xml is regenerated periodically with every public URL of every active restaurant. Create or update a restaurant and it shows up automatically.

Submit it once to Google Search Console and you're done.

Robots.txt

Allows all crawlers on /, /c/, /r/ and blocks the backoffice (/app/, /setup/, /login). AI crawlers (GPTBot, ClaudeBot, PerplexityBot) are explicitly allowed.

Recommendations for restaurant owners

1. Cover photo

1200x630 minimum, real (not stock), of your food or interior. Google uses it as the card in results.

2. Rich description (200-300 characters)

Bad: "Italian restaurant in Madrid". Good: "Authentic Italian cooking since 1995. Fresh pasta, wood-fired pizzas, and Tuscan wines. Terrace with views. Direct reservations, no commission."

Natural keywords rank.

3. Correct hours

Google shows "Open until 23:00" based on opening_intervals. If it doesn't match reality, you lose customers.

4. Connect Google Places

Verify your listing in Google Business Profile. Syncing brings the real rating, review count, photos, and verified hours.

5. Photo on every dish

Google shows enriched menu snippets with photos. Boosts CTR.

How to check Google is indexing you

  1. Google Search Console → add https://www.restapro.es.
  2. Submit the sitemap.
  3. Wait 24-48h, look at "Coverage → Valid".
  4. Rich Results Test (search.google.com/test/rich-results): paste your /c/your-slug URL and confirm the schema validates.

Metrics

  • page_views records each visit with referrer (where the user came from).
  • In analytics you see visits to the menu vs to reservations.
  • In Search Console you see which queries bring traffic.
ESENCA