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: /c/:slug - for searches like "what they eat at..."
  • Reservations: /r/: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