Set Up Your Integrations
Enable GA4, Google Ads, Meta, TikTok, ChatGPT Ads, or GTM in your Restoo account.
Event Mappings
How each Restoo event maps to each platform.
The recommendations below are general defaults, not absolute rules. Where a
guideline depends on account volume or campaign goals, it is marked as such.
Always validate against the account’s own data.
Diagnostic events vs. optimization conversions
Not every event should become a conversion. Split them into two groups. Diagnostic events tell you where people drop off. Use them for reporting, funnels, and audiences — but do not let a bidding strategy optimize toward them. Optimizing toward an early step teaches the algorithm to find people who complete that step, not people who book. Optimization conversions are the small set of events you deliberately feed to Smart Bidding, Meta’s optimization, TikTok’s optimization goal, or the conversion event of a ChatGPT Ads campaign. Restoo models a reservation as a lead, not an ecommerce purchase (see Acquisition model), so these events carry novalue or currency — optimize for conversion volume, not value/ROAS.
The table maps each funnel stage to the event Restoo Connect sends to each platform. A dash means it does not send that stage to that platform.
The Google Ads destination sends only three conversion actions —
booking_lead, booking_confirmed, and contact — which are exactly the
three optimization conversions. It never sends diagnostic events to
Google Ads. GA4, Meta, and TikTok receive the wider set for measurement and
audiences; ChatGPT Ads, for measurement.The three optimization conversions
Everything you optimize toward comes from just three events:Booking
booking_created with status CONFIRMED. The real outcome. Maps to
booking_confirmed / Schedule / qualify_lead / appointment_scheduled.Lead
booking_created pending confirmation or on a waiting list. Maps to
booking_lead / Lead / SubmitForm / generate_lead / lead_created.Contact
action_taken with a concrete channel (phone, email, WhatsApp…). Maps to
contact / Contact / select_content.Recommendation: the booking as the primary conversion
As a general default, make the booking your primary optimization conversion and the metric campaigns bid toward. It is the closest signal to revenue, and it is the one outcome the business actually cares about. Which of the two booking conversions plays that role depends on how the venue works:
In the third case, marking both counts nothing twice: they are mutually exclusive, and added together they are exactly the bookings created. Track confirmations separately as a reporting metric if you care about the ratio between the two.
When a visitor edits an existing booking, Restoo Connect suppresses funnel and
conversion events, so edits never inflate your booking or lead counts.
Recommendation: contact as a secondary conversion
Use Contact as a secondary conversion: it is reported and informs bidding without becoming the goal. It captures demand that never enters the online funnel — guests who call or message instead of booking — and that matters for venues that take many reservations by phone. Keeping it secondary means the algorithm still learns from it, but it does not chase phone taps at the expense of bookings. Keep as secondary the booking conversion your venue barely produces too — the Lead if you confirm instantly, or the confirmed booking if you work by request — so it is measured without distorting bidding along with a handful of cases.Low-volume accounts
Automated bidding needs a steady flow of the event it optimizes toward. As a rule of thumb — not a hard rule:- Google Ads Smart Bidding works best with roughly 15–30 conversions in the last 30 days on the optimization action. Target CPA/ROAS strategies need more than Maximize Conversions.
- Meta ad sets exit the learning phase near ~50 optimization events per week per ad set.
- TikTok similarly stabilizes around ~50 conversions in 7 days for the chosen optimization event.
Restoo custom events are no use here: neither Meta, TikTok nor ChatGPT Ads accepts them as an optimization goal, however late their stage sits in the funnel. And on Google Ads, if booking volume does not clear the threshold, the only room left is in what goes with the switch:
- Consolidate campaigns and ad sets so conversions are not split across many small groups.
- Broaden targeting and use broad match / Advantage+ audiences to give the algorithm room.
- Enable Enhanced Conversions, Advanced Matching,
identify, and the OpenAI Pixel’suser(viacustomer_identified) so every conversion is matched to more clicks — this recovers signal that would otherwise be lost.
Google Ads: primary and secondary conversions
Google Ads lets you mark each conversion action as Primary (used for bidding) or Secondary (observed only).1
Create the three conversion actions
Create
booking_lead, booking_confirmed, and contact in Google Ads and
paste the conversion ID of the account, plus the label of each action, into
your Restoo account. The step by step is in
set up conversion
destinations.2
Mark your venue's booking conversion as Primary
Set
booking_confirmed as the Primary action if the venue confirms
instantly, booking_lead if it works by request or with a waiting list, or
both if it does both. They are mutually exclusive, so marking both counts no
booking twice.3
Mark contact as Secondary
Set
contact as Secondary so it is reported and can inform bidding
without becoming the goal. Keep the booking conversion your venue barely
produces as Secondary too.4
Use conversion goals
Group the primary action into the campaign’s conversion goal. Keep account
default goals aligned so campaigns do not silently bid on the wrong action.
Because Restoo conversions carry no
value, use Maximize Conversions
(optionally with a Target CPA) rather than value-based Maximize Conversion
Value / Target ROAS.Meta, TikTok, and ChatGPT Ads: an equivalent strategy
Meta, TikTok, and ChatGPT Ads do not have a Primary/Secondary label, but you get the same effect by choosing the optimization event / optimization goal per campaign, while the other events keep flowing for measurement.- Meta
- TikTok
- ChatGPT Ads
- Default optimization event:
Schedule(confirmed booking), orLeadif the venue works by request or with a waiting list. They are mutually exclusive: every booking fires one of the two. - Ramp-up or low volume: optimize for
ViewContentorSearch, then move back toSchedule. Switching fromScheduletoLeadbuys no volume, they are the same funnel step. - Phone-heavy venues: a dedicated campaign optimizing for
Contact. - Do not also send these events from your server. Meta’s deduplication relies on an event ID, and Restoo Connect sends none, so the same booking reported through the Conversions API is counted a second time. Send each conversion from one source — see Avoiding duplicate conversions.
- Advanced Matching is always on — the pixel ID held in your Restoo account is required to enable Meta at all, so match rates and attribution come configured.
Abandonment and remarketing audiences
Audiences are built from the diagnostic events, which mark the stage each visitor reached, and exclude people who already converted. Which event marks each stage on each platform, how to set the audience up in GA4 and Google Ads, in GTM, in Meta and in TikTok, and what is particular about the cancellation policy is in Remarketing to guests who did not complete their booking. Suppression of guests who already booked, lookalikes and remarketing by experience are there too. ChatGPT Ads does not build audiences from pixel events — its audiences are uploaded lists — so it does not apply there.Worked examples
Independent venue
Independent venue
Steady but modest volume, some phone reservations.
- Primary:
booking_confirmed(confirmed booking). - Secondary:
contact, since many guests still call, andbooking_leadfor the time slots that fill up and switch to a waiting list. - Single consolidated Search + Performance Max / Advantage+ setup to keep conversions together.
- Remarketing to “started but did not book”; suppress confirmed bookers.
Venue group
Venue group
Multiple venues under one or several Restoo accounts.
- Optimize each campaign toward its venue’s
booking_confirmed; usesource.account_id/booking_account_idto keep venues separate in reports and audiences. - Pool low-volume venues into a shared campaign optimizing for
booking_confirmedacross the group until each clears the volume threshold, then split. - Use the
search_alternative_venuesfallback (action_taken) to route demand from a full venue to a sister venue.
Venue with experiences
Venue with experiences
Tasting menus, events, add-ons.
- Primary:
booking_confirmed. Keep it experience-agnostic so bidding is not starved. - Use
view_item_list,view_item, andselect_item(withitem_category=experience/add_on) to build per-experience audiences and report on which experiences convert. Items are identified by ID, not by name —best_burger:experience:7rather than “Tasting menu” — so keep a mapping if your reports need readable labels. - Restoo omits those names on purpose: a free-text experience name can reveal special-category data by inference, which the ad platforms’ own terms prohibit receiving. See What Restoo deliberately omits for more information.
- Retarget guests who viewed a high-margin experience but did not select it.
- Note: item and booking events carry
price, but conversions still send novalue— optimize for volume and analyze value in GA4.
Venue with a cancellation policy
Venue with a cancellation policy
Signing the cancellation policy, with a card guarantee or a prepayment, is
required to confirm the booking.
- Primary:
booking_confirmed. It only fires once the card is validated, so it already excludes anyone who abandoned at payment. - The cancellation policy breaks down into three events, which together show exactly
where guests abandon:
booking_cp_viewed(they saw the terms) →booking_cp_acknowledged(they ticked “I have read and accept”) →booking_cp_accepted(the card validated). - A large gap between acknowledged and signed points at the payment step itself, not at the terms — worth raising with the business before spending more on traffic.
- Retarget guests who acknowledged but never confirmed. The step-by-step for each platform is in Remarketing to guests who did not complete their booking.
- There is no conversion here before the card. The form submission does not convert, and the booking does not exist until the signature completes, so whoever abandons at payment counts as neither conversion. What they leave behind are the diagnostic events above.
Single-date campaign (e.g. Valentine's, NYE)
Single-date campaign (e.g. Valentine's, NYE)
Short push for one date or weekend.
- Too little time to accumulate confirmed bookings, so optimize toward
ViewContentorSearchfor most of the flight, watchingbooking_confirmedas the success metric. TheLeadis no use here: it requires the booking to exist, just like the confirmed-booking conversion. - Build the audience from
booking_start_submitted/booking_no_availability_viewedfor that date (thebooking_date/search_term=pax_..._day_..._shift_...identifies the target date). - Retarget no-availability visitors with the next available slot.
- Switch the target back to
booking_confirmedif volume allows before the date.
Avoiding duplicate conversions across GA4, Google Ads, and GTM
Double-counting is the most common setup error. It inflates conversions and misleads bidding. Pick one path to each destination. Rules of thumb:-
Choose one routing model. Either enable the direct destinations
(
ga4,googleAds,metaPixel,tiktokPixel,openaiPixel) or route everything through GTM (thegtmdestination) and build the tags there. Do not do both for the same destination. -
Google Ads: one source of truth. Send the booking conversion to Google
Ads through exactly one of these:
- the direct
googleAdsdestination, or - a Google Ads conversion tag in GTM, or
- a GA4 key event imported into Google Ads.
- the direct
- Browser vs. server (CAPI, Events API, Conversions API). Restoo Connect sends no event IDs, which is what Meta CAPI, TikTok Events API, and OpenAI Conversions API deduplication rely on. A booking reported from the browser and again from your server is counted twice, so send each conversion from one source only. The identifier that would link them is the booking’s own reference, and that reference opens the guest’s personal data, so it never leaves the widget.
-
Enhanced Conversions ≠ a conversion.
gtag("set", "user_data", …),fbq("init", …),ttq.identify(…), and theuserofoaiq("init", …)only enrich matching. They never fire a conversion, so they cannot double-count.
How consent affects your numbers
Restoo Connect forwards nothing until it knows the visitor’s consent, and each destination requires its own signals — see Consent. Two consequences shape what you will see in the platforms. Your advertising destinations will not match GA4. Google Ads, Meta Pixel, TikTok Pixel and OpenAI Pixel each require all three advertising signals —ad_storage, ad_user_data and ad_personalization — for every event. GA4 requires only analytics_storage. A visitor who accepts analytics but declines advertising is measured in GA4 and invisible to the other four.
That gap is structural, not a setup error, and it shows up as the advertising platforms consistently under-reporting against GA4.
The exception is a GA4 property that feeds advertising itself — Google signals, a Google Ads link, or audiences exported to Ads. Which one yours is, your account declares, and declaring that it does makes GA4 require the advertising signals too. That closes the gap by lowering GA4 to the same volume rather than raising the others.
Matching data needs its own permission. Enhanced Conversions, Advanced Matching, ttq.identify and the OpenAI Pixel’s user all depend on customer_identified, which the widget only emits once the visitor grants ad_user_data. On your advertising destinations this is the same requirement as any other event, so identity arrives whenever conversions do.
On GA4 it is a stricter requirement than the events themselves: a visitor can be measured there without ever being matched.
If the numbers do not add up and you want to go from symptom to cause, the table is in Troubleshooting.
Wiring consent is the business’s job, not yours — but it sets the limit on
what you can measure and optimize toward. Confirm it before concluding that a
campaign is underperforming.
Production checklist
1
Consent
Consent actually reaches the widget: a
cmp is declared, or the site
calls setConsent()
from its cookie notice. Without it nothing is forwarded to any destination —
see how consent affects your numbers.2
Load order
Platform libraries (
gtag.js, fbq, ttq, oaiq, GTM) load before the Restoo
widget, so no early events are skipped.3
One routing model
Direct destinations or GTM per destination — not both. No destination
receives the same event twice.
4
Google Ads actions
booking_lead, booking_confirmed, and contact created and mapped, with
the booking conversion the venue produces marked Primary and contact
Secondary.5
ChatGPT Ads conversion event
appointment_scheduled or lead_created created as a conversion event on
the account’s pixel in Ads Manager, and chosen as the campaign’s event if
conversion optimization is enabled.6
Primary conversion verified
Confirmed a real confirmed booking fires
booking_confirmed / Schedule /
qualify_lead / appointment_scheduled once, and does not also fire the
lead conversion. For request/wait-list accounts, confirmed the same with
booking_lead / Lead / generate_lead / lead_created.7
Deduplication
Each conversion reaches each platform from exactly one source. Confirmed no
server-side CAPI / Events API is reporting the same bookings as Restoo
Connect, which cannot deduplicate against it. Google Ads has a single source
of truth.
8
Matching data
Enhanced Conversions (Google), Advanced Matching (
pixelId set for Meta),
TikTok identify, and the OpenAI Pixel’s user are on. GA4 user-provided data collection enabled if
used.9
Attribution transfer
Restoo Attribution Transfer installed as its guide describes, on
every page.
10
Audiences
Abandonment and remarketing audiences built as their guide
describes; confirmed bookers
excluded from prospecting.
11
Bidding sanity check
Campaigns bid toward the confirmed booking (or the temporary intermediate event),
not toward forms or contacts. Volume clears the learning thresholds.
Official references
Google Ads- Primary and secondary conversion actions
- About conversion actions
- About Smart Bidding
- Enhanced Conversions
Next steps
Restoo Connect
What it sends to each platform and what it needs to receive it.
Event Mappings
The exact payload sent to each platform.