Google Ads conversion tracking for restaurants
A restaurant's conversions are scattered across systems it mostly doesn't own: reservations through a booking platform, delivery orders through a marketplace, and a large share of bookings still arriving by phone. What Google Ads adds on top of that is a mechanical requirement: gclid, gbraid and wbraid have to reach the record that holds the money, because Google Ads can only credit a conversion it can tie back to a click it recognizes. This page covers both halves — what a conversion is in restaurants, and what Google Ads specifically needs to accept it.
Free30 minutesNo obligation
Specific to Google Ads × Restaurants
Google Ads for restaurants: reservations, calls and seated covers
On Google Ads, a restaurant should import seated covers as an offline conversion keyed on the gclid, gbraid or wbraid carried into the reservation platform, sent from the reservation system with cover count as value. Track calls from ads and location assets as their own action, and keep marketplace orders out of conversion actions entirely.
Most restaurant searches on Google end without a website visit. People tap call on a location asset, open directions, or book through a reservation button on the Business Profile. Bookings made through that profile button run through a booking partner, and no gclid is created for your records, so they cannot be imported against a click. Treat them as a separate channel and report them from the reservation system rather than expecting them in conversion actions.
For the web path, the build depends on whether your reservation widget accepts URL parameters or passes them to a webhook. If it does, carry the gclid through and import seated covers with the party size as value, counted one per click. If it does not, Enhanced Conversions using the email collected at booking is the fallback, but confirm the platform will hand you that email before planning on it.
Restaurants serving alcohol hit Google's alcohol advertising policy, which limits where and how drinks can be promoted, so check the policy for your state before featuring a bar or happy hour in ads. Store visit conversions exist for some accounts with physical locations, but eligibility depends on volume and data thresholds; if your account shows them, report them as modeled and never as a bid target alongside covers.
Google Ads · Restaurants · what breaks
Why Google Ads under-reports for restaurants
- 01
Reservations on a third-party platform
Off-domain, unattributed.
- 02
Delivery marketplace orders invisible
A large revenue channel with no ad attribution.
- 03
Phone bookings untracked
Still a major channel for most restaurants.
- 04
Gclid, gbraid and wbraid never reaches the record
Three parameters, not one. gclid is the long-standing identifier; gbraid and wbraid arrive on iOS traffic where privacy constraints prevent the usual one. Capture code that names only gclid loses a growing share, silently, and the loss is invisible until you audit how many records carry an identifier.
Google Ads · Restaurants · the fix
What working looks like — Google Ads · Restaurants
Each booking path measured separately
Web, platform, phone.
Cover value rather than booking count
A table of two and a table of ten differ.
Calls attributed to campaigns
The channel most restaurants ignore.
Google Ads · Restaurants · architecture
How Google Ads and restaurants actually connect
- 1
The conversion in restaurants
Reservation made, reservation honoured, order placed, order value. No-show rates in hospitality make the second stage matter as much as the first.
- 2
Google Ads needs a click to match
A click identifier inside the 90-day window, a conversion action name that matches one configured in the account, a conversion timestamp for when the outcome happened, and a value. Read the match rate after uploading — a file can upload perfectly and match nothing.
- 3
The identifier: gclid, gbraid and wbraid
Three parameters, not one. gclid is the long-standing identifier; gbraid and wbraid arrive on iOS traffic where privacy constraints prevent the usual one. Capture code that names only gclid loses a growing share, silently, and the loss is invisible until you audit how many records carry an identifier.
- 4
Where it gets sent from
your reservation and ordering systems' records.
- 5
Deduplication and window
There's no shared event ID mechanism like Meta's. What matters instead is the counting setting on each conversion action — 'one' for lead-type conversions so a repeat submitter doesn't count three times, 'every' for ecommerce where a second purchase is a second sale. This is the single most common misconfiguration we find in Google Ads accounts. Google's offline import window is 90 days from the click. Anything older can't be matched, and rows outside it fail as unmatched without much explanation. Measure your median click-to-outcome time against that before designing anything.
Google Ads · Restaurants · events
The conversion map for restaurants
Four stages spread across systems you mostly don't own.
| Event | What it means here |
|---|---|
| Reservation made | Server-side from the reservation platform where it exposes a webhook. |
| Reservation honoured | Server-side. Covers seated is the real conversion. |
| Phone booking | Call tracking plus the reservation system's record. |
| Online order | Server-side from your own ordering system, with order value. |
| Marketplace order | Reported separately. Usually not attributable to your ads at all. |
Google Ads · Restaurants · diagnose
Diagnostic order — Google Ads · Restaurants
- 01
Count records carrying gclid, gbraid and wbraid
- 02
Reservation platform on another domain
The click ID doesn't cross unless carried, so bookings look like direct traffic.
- 03
No-shows counted as conversions
Restaurant no-show rates make booked-only reporting optimistic.
- 04
Phone bookings untracked
Hard-coded numbers, and no click-to-call event on mobile.
- 05
Read the match rate on the upload, not the success message
A conversion action that stops receiving hits is flagged as inactive 30 days later — by which point a month of budget has already run against a missing signal. Check the last-received date on every action monthly; it takes two minutes and it's the cheapest monitoring available.
Google Ads · Restaurants · prove
How it gets proven — Google Ads · Restaurants
Source of truth
your reservation and ordering systems' records
- Click ID confirmed reaching the reservation platform, or the limitation documented.
- Number insertion and click-to-call confirmed on a real mobile device.
- Covers seated reconciled against the reservation system for a closed month.
- Marketplace orders reported separately and explicitly.
- The match rate on the upload, not the success message read directly, not inferred from an upload succeeding.
Google Ads · Restaurants · free audit
What we check in the free audit
- Count records carrying gclid, gbraid and wbraid
- Reservation platform on another domain
- No-shows counted as conversions
- Phone bookings untracked
- Read the match rate on the upload, not the success message
Checked against
your reservation and ordering systems' records
Free30 minutesNo obligation
Google Ads · Restaurants · when not to buy
When you don't need this — Google Ads · Restaurants
- If Google Ads already reports conversions that reconcile against your reservation and ordering systems' records within a few percent, this is working and there is nothing to buy.
- Measure identifier coverage yourself first — pull your last hundred records and count how many carry gclid, gbraid and wbraid.
- If you're running Performance Max exclusively and haven't separated your conversion actions, the import will work and the reporting won't tell you much. Worth sorting the account structure first.
Google Ads · Restaurants · what we deliver
What gets built — Google Ads · Restaurants
Click ID carried into the reservation platform
Where it supports parameters.
Call tracking with number insertion
On every template and the sticky mobile bar.
Reservation system as the source of truth
Covers seated, not bookings made.
Delivery marketplace reported as its own channel
Honestly, including what can't be attributed.
Dispatch via Google's offline conversion import
Uploaded against the click identifier, either through the Google Ads API or as a file. The upload is the easy part; what limits it is how many of your records carry an identifier at all. Verify the current column format against Google's own template — it has changed before.
Written guarantee
95%+ tracking accuracy
Measured against your reservation and ordering systems' records. Miss it and we keep working at no cost.
From $400 · See packages
FAQ
Google Ads · Restaurants questions, answered
Not against a gclid in your own records, because the booking happens through Google's partner flow rather than your site. Count those from the reservation platform's source reporting and keep them separate from imported conversions.
Yes, but with a minimum call length so wrong numbers and hours enquiries don't train bidding. Calls placed from a location asset are a separate action from calls placed after a website visit, and both should be set to count one per click.
Where the platform supports link parameters or a webhook, yes. Where it doesn't, we say so rather than reporting a number we can't stand behind.
Seated covers. No-show rates are high enough that booking-only reporting will consistently overstate what your ads produced.
Report them, don't claim them. The marketplace owns that customer journey and attributing it to your ads corrupts every other number in the report.
Three parameters, not one. gclid is the long-standing identifier; gbraid and wbraid arrive on iOS traffic where privacy constraints prevent the usual one. Capture code that names only gclid loses a growing share, silently, and the loss is invisible until you audit how many records carry an identifier.
Uploaded against the click identifier, either through the Google Ads API or as a file. The upload is the easy part; what limits it is how many of your records carry an identifier at all. Verify the current column format against Google's own template — it has changed before.
By reading the match rate on the upload, not the success message and reconciling against your reservation and ordering systems' records. An upload that succeeds is not an upload that matched.
More on Google Ads · Restaurants
- Enhanced ConversionsEnhanced Conversions enrich the conversions that already fire. First we make sur…
- Google Ads trackingGoogle Ads conversion tracking, rebuilt so Smart Bidding sees real orders and re…
- GTM consultingA tag manager container someone can actually maintain
RELATED GUIDES
More for restaurants: other angles on the same outcome
- RestaurantsConversion tracking for restaurants, across reservations, orders and calls
- Google Ads · Car washGoogle Ads conversion tracking for car wash businesses
- Google Ads · TowingGoogle Ads conversion tracking for towing companies
- Google Ads · Reactivation → repeat purchaseHow to track lapsed customer reactivation to repeat purchase for Google Ads
- Google Ads × POS SystemHow to reconcile Google Ads against your point-of-sale system
- LoyaltyLion → Google AdsConnecting LoyaltyLion to Google Ads
- HostmeConversion tracking for Hostme restaurant reservations
- Google Ads · Auto glassGoogle Ads conversion tracking for auto glass companies
Free · 30 min
Get Google Ads reporting what restaurants actually earn
Free30 minutesNo obligation
