Facebook Pixel and Conversions API
If you run ads on Facebook or Instagram, you can connect your Meta Pixel to online booking. Meta then sees which visitors look at your location and which of them book, and can show your ads to people who are likely to book. This page explains what is sent to the Pixel, when it is sent, and how to turn on sending from the server as well (Conversions API).
Who this page is for
- Owners and managers who run ads on Meta (Facebook and Instagram).
- The people who manage the business's Events Manager.
Before you start
- Online booking must be enabled for the location. The location's "Options" button only appears then.
- You need your Pixel ID. You find it in Meta's Events Manager; it is a number such as
123456789012345. - For the Conversions API you also need a token from Events Manager. How to get it is described below.
How to connect the Pixel
- Open "Online bookings".
- On the location, press "Options" and choose "Integrations".
- In the "Facebook pixel" section, turn on "Enable".
- Fill in "Facebook pixel ID".
- If you will use the Conversions API, fill in "Conversions API token".
- Press "Save".
"Facebook pixel ID" accepts digits only — that is what the ID in Events Manager looks like. With any other value, "Invalid value for this field" appears under the field and nothing is saved. The field is checked only while "Enable" is on.
The setting is per location. If several locations use the same Pixel, enter the ID and the token in each of them.
What is sent to the Pixel
| Event in Events Manager | When it is sent | What it carries |
|---|---|---|
PageView | the visitor opens the location's profile or a page in it (a service, classes, reviews, memberships), as well as any page of the location in the web component | — |
AddToCart | the visitor adds a service to the cart | price and currency |
Contact | the visitor presses the call button on the profile | — |
Schedule | the client sends a booking or joins a class | amount and currency |
Purchase | at the same moment as Schedule | amount and currency |
The amount is the price of the chosen services multiplied by the number of seats.
Service names are not sent — only the amount and the currency.
When it is sent and when it is not
Nothing is sent until the visitor accepts cookies. On the first visit they see the message “We use cookies for analytics and ads.” with the buttons "Decline", "Settings" and "Accept". Events are sent only after "Accept", or if the visitor allows marketing cookies in "Settings".
The Pixel receives events from:
- the location's profile on reservation.studio;
- your own domain, if you have set one up;
- the web component on your website;
- the Reservation.Studio mobile app. There only the browser events are sent, without the Conversions API, and on iPhone only if the client has allowed tracking.
The cookie message also appears in the web component. If your website has its own cookie banner, the visitor sees two: first on your website, then in the booking window, and a booking reaches the Pixel only if the visitor also accepts our message. Below the content of the booking window there is a "Cookie settings" link where the visitor can change their choice.
You can connect your website's banner to the web component with one line of code. Our message is then not shown, and the choice the visitor makes in your website's banner also applies to the Pixel in the booking window. How to do it is described in JavaScript integration.
If the visitor came to your website from an ad on Facebook or Instagram, the web component takes the recorded click from the page address. This lets Meta connect the booking to the ad the visitor came from. The same applies to the booking page embedded in an iframe on your website, when the web component script is on the page.
Conversions API
The Pixel runs in the visitor's browser, and from there it does not always reach Meta: ad blockers and some browsers stop it. The Conversions API sends booked appointments to your Pixel from our server as well, so Meta receives them even then.
- The server sends
ScheduleandPurchase, the same as the browser. Meta recognises that it is the same booking and counts it once. - To recognise the person, Meta receives the client's email, phone, first name, last name and Reservation.Studio client number in hashed form: not as text, but as a code that Meta compares with its own profiles. It also receives their IP address and browser, the address of the page they booked from, Meta's cookies from their browser, and the ad click if they came from an ad.
- Only bookings where the client accepted cookies are sent.
- Every booking is sent on its own, including a client joining again a class they had left. Meta counts each one.
- A booking of a client you deleted before it was sent is not sent.
How to get the token
- Open Events Manager in Meta and choose your Pixel.
- Open the "Settings" tab and find the "Conversions API" section.
- Under "Set up manually", press "Generate access token" and copy the token.
- Paste it into "Conversions API token" and press "Save".
After saving, the token is shown as stars. Leave them to keep it, or clear the field to remove it.
How to check that it works
- In Events Manager, open "Test events" and copy the test code, for example
TEST12345. - Paste it into "Test event code" and press "Save".
- Open the location's profile or your website, accept cookies, and only then make a test booking. A booking made before accepting is not sent.
- In "Test events" you should see
ScheduleandPurchasesent by the server. - In "Reports" → "Integrations" → "Sending history" the booking has the status "Sent" and the mark "Test".
- After the check, clear "Test event code" and press "Save". Meta does not drop test events — it counts them as real ones, so the code should not stay.
What was sent to Meta
Every send is listed in "Reports" → "Integrations" → "Sending history". The "What was sent to Meta" button in the "Integration" window leads there as well.
For each row the report shows:
- "Date" — when it was sent;
- "Integration" — Meta Conversions API and what was sent, for example a booking;
- "Location";
- "Appointment" — the client and the time of the booking;
- "Status" — "Sent", "Rejected", "Failed" (Meta did not respond even after the retries) or "Waiting" (we will try again);
- "Details" — the events sent and the amount, or what to do about a rejection. Test sends carry the mark "Test".
Press the row to open "Sending details". It shows the direction, the endpoint, the HTTP response, the duration, the attempts, the error code, the trace ID and the provider ID. The button next to the code and the identifiers copies them in case support asks for them. "Open the booking" opens the booking the send is about.
You can filter by date range, location, integration, action, status, problem, HTTP response, direction, test sends and client. The "Error code, trace ID or provider ID" field finds a send by its exact code or identifier. The sends are sorted by date. The report keeps the sends from the last 14 days.
The business owner always sees the report. An employee sees it if their role has "View list" ticked under "Reports / Integrations". The same permission shows the rejection message and the "What was sent to Meta" button in the "Integration" window.
If a booking does not reach Meta
When Meta rejects a booking, the "Integration" window shows "The last booking did not reach Meta" with the date and time of the rejection and what to do:
- "The token is invalid or has expired." — create a new token in Events Manager, paste it into "Conversions API token" and press "Save".
- "The token has no access to this Pixel." — the token was created for another Pixel. Create it in the settings of the Pixel whose ID is filled in, and save it.
- "Meta did not accept the booking data." — most often the problem is in the data we send, and we are notified about it. You do not need to do anything.
The message is shown while the last send for the location is a rejection: the next send hides it, and a new rejection shows it again with the new date. The window only shows a rejection from the last 14 days. If Meta is temporarily unavailable, the booking is sent again automatically and no message is shown.
Important
Purchaseis sent when the booking is made, not when it is paid. If your ad is optimised forPurchase, Meta's report also includes bookings where the client did not show up.- If you created custom conversions on the old events
AddToCardorCallNow, they are no longer filled. Create them again onAddToCartandContact. - The Pixel and the data collected in it are yours, and you are responsible for them towards your clients. Describe them in your website's privacy policy.