Square Booking flow loses URL parameters (e.g., gclid) on redirect, making reliable cross-domain conversion attribution impossible

Hi Square team,

I’m both a business owner and a developer running a bar booking flow using Square Appointments, and I’ve hit a fundamental limitation that makes real conversion tracking impossible.

Because Square-hosted booking pages run on a different domain and strip query parameters during redirects, there is currently no reliable way to persist attribution data (such as gclid or any custom tracking ID) into the final Appointment object.

This means:

• I cannot associate a booking with its ad source
• I cannot measure real CPA
• I cannot use smart bidding
• I cannot optimize marketing spend
• I cannot scale ads with confidence

From what I can tell, the only way to solve this today is to completely rebuild my own booking system and call the Square API directly, which defeats the purpose of using Square-hosted Appointments in the first place.

So I have two questions:

  1. Is building my own appointments app really the only way to achieve proper conversion tracking today?

  2. Are there any plans to address this cross-domain attribution issue by supporting metadata, custom fields, or preserved URL parameters on Appointments?

This is a critical blocker for businesses that rely on paid advertising, and I believe many merchants are running into the same limitation.

Thanks for your time.

At this time the only way to track this would be for the customer to add some sort of tracking to the note of an appointment from our first party booking site. Otherwise you would need to build a custom bookings site with Square APIs. :slight_smile:

Hi Bryan, thanks for the response.

I understand that I can build a custom booking site with Square APIs (which I already did), but I’m now facing another issue:

When I create a booking via the Bookings API, the confirmation email is only sent to the customer, not to the business owner. And I think someone else have this issue too

On Square’s first-party booking site, the owner normally receives a “new booking” notification. However, for API-created bookings, this doesn’t seem to happen.

This is important for us operationally, since we need to be notified immediately when a new appointment is created.

Thanks!

I think I’ve identified the root cause:

Bookings created via POST /v2/bookings appear to be attributed to the seller/owner (system) as the creator, not the selected team_member_id as the actor.

However, the Dashboard notification setting explicitly says:

“Notify owner of appointment activity When this staff member creates or modifies an appointment, the owner will receive a notification.”

So even if the booking is assigned to a staff member (team_member_id), it doesn’t count as that staff member creating/modifying the appointment, therefore no owner notification is sent.