Skip to content

Facebook organic traffic incorrectly classified as "Paid Ads" due to fbclid in PAID_AD_PARAMS #4297

@aleezamo

Description

@aleezamo

Describe the Bug

When a visitor clicks a link from a normal, organic Facebook post (not an ad), Umami classifies that visit as "Paid Ads" instead of "Social". This happens because the PAID_AD_PARAMS array treats the fbclid parameter as a paid signal, but Facebook appends fbclid to all outbound links — paid and organic alike.

To Reproduce

Post a link to your website on your personal Facebook profile or a Facebook group (not a paid ad).

Click that link yourself, or have someone else click it.

Wait a few minutes, then check your Umami dashboard under "Channels".

See the visit listed under "Paid Ads".

Expected behavior
Organic Facebook traffic should be classified as "Social" (or at least not as "Paid Ads"). Only traffic from actual Facebook ads (with utm_medium=cpc or similar paid UTM parameters) should be labelled as paid.

Actual behavior
The visit appears under "Paid Ads".

Possible cause
The PAID_AD_PARAMS array in src/queries/analytics/event/getChannel.ts (or getChannels.ts) includes 'fbclid='.
Because fbclid is present on all Facebook outbound clicks regardless of payment, this entry incorrectly marks organic social traffic as paid.

I believe this is related to the ordering issue acknowledged in #3264, but the root cause here is the presence of fbclid in the paid‑params list itself.

Suggested fix
Remove 'fbclid=' from the PAID_AD_PARAMS array.
If you still want to detect paid Facebook traffic, rely on utm_medium=cpc, utm_medium=paid, or utm_medium=paid_social, which are the correct paid indicators.
Optionally, keep fbclid but only treat it as paid when it appears alongside one of those UTM parameters.

Thank you for a great open‑source project! I'm not submitting a PR at this time, but I wanted to report the bug clearly so it can be tracked. Happy to provide more details or help test a fix if needed.

Database

PostgreSQL

Relevant log output

Which Umami version are you using?

3.1.0

How are you deploying your application?

Docker

Which browser are you using?

Chrome

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions