Conversion tracking setup for outdoor recreation bookings
If you’re running paid ads for your outdoor recreation business and can’t say with confidence which campaigns are producing real bookings, your conversion tracking is broken. That’s not a small problem - it means your ad platform is optimizing toward the wrong signal, you’re cutting budgets on campaigns that are actually working, and you’re scaling ones that aren’t.
Conversion tracking setup for outdoor recreation bookings has a few specific wrinkles that generic guides miss. Booking platforms like FareHarbor, Peek Pro, and Xola behave differently from standard e-commerce checkouts. Phone calls drive a meaningful chunk of revenue. And the iframe-based widgets many operators use can silently drop conversion data if you configure things the standard way.
Here’s how to set it up correctly.
Why most outdoor operators have bad conversion data
The most common mistake: tracking the booking calendar page as a conversion instead of the booking confirmation page.
It sounds obvious, but it’s everywhere. Someone clicks your ad, lands on your rafting trip page, opens the booking calendar to check availability, then leaves. Your ad platform records a conversion. Your ROAS looks great. Your account manager is happy. You’re actually losing money.
A real conversion fires once - and only once - when the customer has paid and the booking is confirmed. That’s the thank-you page, the confirmation screen, the receipt email trigger. Any earlier touchpoint is just a step in the funnel, not a result.
The second-most-common mistake is double-counting. If you import a purchase event from GA4 into Google Ads and separately deploy a Google Ads conversion tag on the same confirmation page, you’re measuring the same booking twice. Smart Bidding sees inflated conversion data, bids too aggressively, and your CPAs spiral.
Pick one method. Import from GA4 or use a direct Google Ads tag - not both.
Start with GA4, then link to Google Ads
For most outdoor operators, the cleanest setup runs through Google Analytics 4, then pipes data into Google Ads via the linked account.
The steps:
Make sure GA4 is installed site-wide, including on any pages hosted on your booking platform’s subdomain. FareHarbor’s widget loads inside your site, but if you’re using a flow that redirects to
book.fareharbor.com, your standard GA4 tag won’t fire there. You’ll need FareHarbor’s built-in Google Analytics integration, configured from your FareHarbor dashboard under Settings → Integrations.In GA4, verify that a
purchaseevent orbooking_completeevent is firing on the confirmation page. You can check this in GA4’s DebugView (Admin → DebugView) while going through a test booking.Link your GA4 property to Google Ads: in GA4 Admin, go to Product Links → Google Ads Links, then add your account.
In Google Ads, go to Tools → Conversions → New conversion action → Import → Google Analytics 4. Select the
purchase(or equivalent booking) event and import it.Remove or pause any existing Google Ads tag-based Purchase conversion actions so you’re not double-counting.
This setup gives you clean booking data in Google Ads, lets you run value-based bidding if you’re passing revenue amounts through the purchase event, and keeps GA4 as your source of truth.
Platform-specific notes for FareHarbor, Peek Pro, and Xola
Each booking platform has its own behavior, and the differences matter.
FareHarbor uses a JavaScript widget embedded on your website. When the flow stays on your domain, standard GA4 tracking works. When customers are redirected to FareHarbor’s hosted checkout (which happens for some configurations and mobile flows), your standard GA4 tag won’t fire on that external domain. You need FareHarbor’s native GA4 integration
enabled in your dashboard. FareHarbor documents this in their help center - it pushes a purchase event to your GA4 data layer on booking confirmation.
Peek Pro supports Google Tag Manager natively. Add your GTM container ID in Peek Pro’s settings, and it’ll fire events on the confirmation step. You can then trigger your GA4 purchase event through GTM using Peek’s data layer variables.
Xola and Rezdy both support custom tracking scripts on confirmation pages. Rezdy’s help docs walk through a GA4 event trigger; Xola lets you drop scripts into the confirmation page template. If you’re using Rezdy, pass the transaction_id and value parameters so GA4 records revenue alongside the event - that’s what enables value-based bidding in
Google Ads later.
One universal note: always test with a real (or test) transaction. Don’t trust the integration docs alone. Go through the full booking flow, check DebugView in GA4 in real time, and confirm the event fires on the confirmation screen - not the payment screen, not the calendar.
Tracking phone bookings: the gap most operators miss
A rafting company in Colorado runs Google Ads, sees low conversion volume, cuts its branded campaign. Bookings drop 30% the following month. The campaign wasn’t underperforming - it was driving phone calls that never got counted.
Phone calls drive a real share of outdoor recreation bookings. People want to ask about group discounts, trip difficulty, what to bring. They click your ad, read your trip page, then call you. If you’re not tracking those calls as conversions, your search campaigns look worse than they are.
Google Ads has a built-in call tracking option. For businesses with a phone number on their website, you can enable call conversion tracking in Tools → Conversions → Phone calls. Google substitutes a forwarding number on your site; calls that last longer than a threshold you set (typically 60–90 seconds for bookings) count as conversions.
This won’t capture every booking - someone who calls from a number they wrote down three days ago won’t match - but it closes a meaningful chunk of the gap. A Colorado whitewater outfitter we’re aware of saw their measured conversion rate nearly double after adding call tracking to a campaign that had been running for six months without it.
For FareHarbor operators who take phone deposits, you can also send offline conversions to Google Ads via Zapier: when a new booking appears in FareHarbor, Zapier pushes a conversion event to Google Ads with the booking value. This is particularly useful when you take a deposit by phone and enter the booking manually.
Enhanced conversions for privacy-resilient tracking
Ad blockers, Safari’s Intelligent Tracking Prevention, and Firefox’s cookie restrictions all chip away at standard browser-based conversion tracking. Depending on your audience, you might be losing 15–30% of measurable conversions before they ever reach Google Ads.
Enhanced Conversions is Google’s answer. When a customer completes a booking and submits their email address, Google hashes that email with SHA-256 and matches it against Google account data to attribute the conversion even when the tracking pixel got blocked. Setup happens in Google Ads under Tools → Conversions → select a conversion action → Enhanced Conversions.
The implementation requires passing first-party customer data (typically email) through your conversion tag or GTM. FareHarbor’s confirmation page doesn’t expose this automatically - you’ll need to use their API or a server-side setup to capture it. For operators on Peek Pro or Xola, check whether your platform can push the customer’s email to the data layer on confirmation. Several can, with some configuration.
Server-side tracking through Google Tag Manager’s server container takes this further. Rather than relying on a browser-side pixel, conversion calls go from your server to Google’s API directly. Implementations of server-side tracking typically recover 10–30% of conversion volume compared to browser-only setups, which compounds significantly when you’re running significant ad spend.
For operators spending under $3,000/month on paid search, browser-side Enhanced Conversions is probably sufficient. Above that threshold, server-side is worth the investment - the recovered conversion data improves Smart Bidding enough to justify the setup cost.
What to actually use as your conversion goal
Once tracking is working, you have a decision: optimize campaigns toward booking completions, or use an earlier signal like “booking started” or “calendar opened.”
Use booking completions. Every time. This is the one thing we see operators get wrong even when everything else is configured correctly.
Earlier signals - clicks on “book now,” calendar opens, payment page loads - have value for funnel analysis but terrible value as bidding targets. Google’s Smart Bidding will find users who open calendars and never pay. Your CPA will look great. Your calendar will be empty.
If you have low booking volume (fewer than 30–40 conversions per month per campaign), Smart Bidding struggles to optimize. In that case, use a slightly earlier but still committed signal - like reaching the payment/checkout page, or a form submission with deposit. These are closer to real bookings than calendar views, and they give Smart Bidding enough signal to work with.
The GA4 setup guide for outdoor operators covers how to build a proper funnel view in GA4 that lets you see where bookings fall out. That’s useful context for deciding which conversion events to feed back into Google Ads.
Connecting conversion data to revenue
Counting conversions is step one. Counting revenue is where the real optimization happens.
If you’re passing a value parameter with your booking event - the actual dollar amount of the reservation - you can switch from target CPA bidding (cost per acquisition) to target ROAS bidding (return on ad spend). For an operation with high variance in trip prices, this matters: a $2,400 multi-day rafting booking isn’t the same as a $89 single-day float,
and you should bid accordingly.
FareHarbor passes booking totals through its GA4 integration. Peek Pro and Xola support revenue parameters in their GTM data layer. If your platform supports it, enable it - the transition from tCPA to tROAS typically takes 3–4 weeks for Smart Bidding to adjust, but operators who make the switch often see 20–40% improvement in return on ad spend within a quarter.
If you haven’t set up conversion tracking yet, the Google Ads guide for outdoor recreation and the GA4 setup walkthrough are good starting points before you touch campaign structure. Clean data first, then optimize.
The one thing to do this week
Pull up your Google Ads conversion actions right now (Tools → Summary → Conversions). Look at the column labeled “Conversion source.” If you see “Website” listed for a conversion that fires on anything other than your booking confirmation page, that’s broken data driving your campaigns.
Fix the conversion window before you touch bids, budgets, or creative. Everything else is secondary. Ad spend optimized against the wrong signal doesn’t get better - it gets more efficiently wrong.


