Why doesn't Facebook attribute events to a specific campaign?
UTM campaign labels in PixelFlow are not Meta's attribution. PixelFlow labels events with UTM values for your event logs, while Meta decides which campaign gets credit for an event from the Facebook click ID (fbclid, sent as fbc), other matching signals, and its own attribution window. When Ads Manager credits no campaign — or a different one than your logs show — work through the checks below in order.
The usual causes are an event with no Meta click ID, an event that happened outside Meta's attribution window, or Meta's reporting that has not caught up yet.
UTM labels and Meta attribution are two different systems
UTM values label where the traffic came from; Meta decides which campaign gets credit for an event. The two systems are independent, so an event can carry a campaign label in your logs and be credited to a different campaign — or none — in Ads Manager.
PixelFlow reads UTM values from the landing URL and stores them on the event. The Traffic Source view in the event details shows Campaign Name (utm_campaign), Campaign ID (utm_id), Ad Set (utm_term), Ad Name (utm_content), and Medium (utm_medium). Meta's credit decision comes from fbclid/fbc and matching signals, as explained in How Meta Attributes Events to Ad Campaigns.
Paid traffic can also show as Organic in your logs when the landing URL carried no UTM values. That label only describes what PixelFlow captured in the URL — Meta can still credit the ad from the click ID.
To make sure your ads carry UTM values on every click, follow Add UTM parameters to your Meta ads.
Check the click ID in the event payload
An event without a Meta click ID cannot be matched to a specific ad click, which is why Ads Manager shows no campaign credit for it. Organic, direct, and other non-ad traffic legitimately has no click ID.
When someone clicks a Meta ad, the landing URL includes an fbclid parameter. PixelFlow converts it into Meta's click ID format (fbc) and persists it for the visit, including across subdomains, so later events still carry it. The click ID expires after 90 days.
Open the event logs for your site and click View on the event row to open the Event Details modal.
Open Payload > Advanced to see the data sent to Meta.
Look for
fbc. If it is present, Meta has a direct link between the event and an ad click. If it is missing, the visitor did not arrive from a captured Meta ad click.Check
fbpas well — it identifies the browser and helps Meta match the event even whenfbcis missing.
For how PixelFlow stores the click ID across pages and subdomains, see How does PixelFlow handle Facebook click IDs (fbclid)?.
Check the event timestamp against the attribution window
Meta's default attribution window is 7-day click / 1-day view: a conversion counts only if it happened within 7 days of an ad click (or 1 day of a view when view-through is enabled). Events outside the window are not credited to the campaign even when they carry a click ID.
Meta does not accept events with an event_time older than seven days. PixelFlow detects these and rewrites the timestamp to the current time before sending, instead of forwarding one Meta would reject — so an event_time that looks like "now" on an older action means the event was too old to credit to that click.
Meta reports conversions by click date, not conversion date. A click on Monday that converts on Friday is credited to Monday's campaign, so an older campaign day can keep gaining conversions for up to a week after it ran.
Your PixelFlow logs and Meta Events Manager show every event sent. Ads Manager shows only events credited to ads within the attribution window, so its counts will usually be lower. That difference is expected, not a sign of broken tracking.
Give Meta's reporting time to catch up
Events appear in your PixelFlow event logs within 2–3 minutes of being triggered, but Meta's reporting lags behind. Events can take minutes to appear in Meta Events Manager, and PixelFlow's guidance allows up to 48 hours for full visibility there, with Ads Manager and Events Manager reporting taking up to 3 days to update.
Compare the same date range in both tools, and remember that Ads Manager reports by attribution date. If an event is Sent in your logs but still absent from Meta Events Manager after 48 hours, work through Why are my events not showing in Meta Events Manager? and then contact support.
Verify the chain in the Events Log
The event details modal holds every field you need to confirm the chain in one place: status, payload, and traffic source. Open the event logs, click View on an event row, and check:
Status shows Sent. A Failed status means the event was not delivered to Meta.
Payload > Advanced includes
event_id,event_time, andfbp.fbcis present when the visitor arrived from a Meta ad click; its absence is normal for organic or direct traffic.Traffic Source shows the UTM labels PixelFlow captured (Campaign Name, Campaign ID, Ad Set, Ad Name, Medium). These label the traffic — they are not Meta's attribution decision.
For the full walkthrough of the event details views, see Event Logs.