Full Answer
ROAS is a ratio — revenue attributed to a campaign divided by the amount spent on that campaign. The spend number is consistent across both platforms because it comes from a single source: the amount Facebook charged. The revenue number is where the disagreement lives, because it depends entirely on how many conversions each platform claims.
Facebook reports higher conversion counts for three structural reasons. First, it includes view-through conversions by default. A user who saw an ad impression but never clicked, then purchased within the 1-day view window, counts as a Facebook conversion. GA4 has no knowledge of that impression — it never saw a Facebook-attributed session — so it credits the conversion to whatever channel delivered the actual visit.
Second, Facebook can attribute the same conversion to multiple ad sets if the user interacted with ads from different campaigns. GA4 applies last-click logic and credits only one source per session. Third, Facebook's attribution window begins at the ad interaction, while GA4's window is tied to the session. A click on Tuesday that leads to a purchase on Friday is a Facebook conversion (within 7-day window) but may be a GA4 direct or organic conversion if the user returned without clicking another ad.
The result is that Facebook consistently reports more conversions and higher revenue for the same actual purchases, producing a ROAS that looks better than GA4's calculation. Neither number is wrong — they are measuring different definitions of attributed revenue. To reconcile, match transaction IDs from your warehouse against both platforms and calculate ROAS from verified revenue rather than from either platform's self-reported figures.