What broke · Meta Conversions API · 4 September 2026

Why a moved appointment counts as two bookings.

When a homeowner moves an appointment, the ad platform can count it as a second booking. Your report says one estimate. Ads Manager says two. The ads learn that a no-show who rebooked is worth double.

What Meta does

When two events arrive with the same event name and the same event id (the fields Meta calls event_name and event_id), Meta keeps one and drops the other. That is what lets a browser pixel and a server send report the same purchase, without counting it twice. The window is 48 hours. After it, the same id is a new event.

Meta also accepts a website event whose time, the field event_time, is up to 7 days in the past. Those windows differ, and people tend to remember only the second.

What broke

A booking system sends a booking event (Meta calls it Schedule) when a homeowner confirms an appointment, with the lead's own id as the event_id. Reasonable: one lead, one appointment, one id. Then the homeowner no-shows and rebooks eight days later, or moves the visit from a manage link. The confirm path runs again, sends Schedule again, same id. Meta's 48 hours have passed. Two conversions.

The report the client reads counts distinct leads, so it says one. You tell the client the spend reconciles with Ads Manager. It does not. The gap is the number of moves. Worse than the report: Meta learns from whatever you tell it. To the bidding, a homeowner who no-showed and rebooked is now worth two bookings. That is the opposite of what a booking signal is for.

What to do

What this does not cover