Search code examples
api-designfacebook-ads-api

Why does facebook's conversion pixel load multiple JavaScript files?


If I visit a website with the facebook conversion pixel installed (such as https://www.walmart.com/), I notice that several different JavaScript files are loaded by the pixel.

The first one is https://connect.facebook.net/en_US/fbevents.js.

The second one is https://connect.facebook.net/signals/config/168539446845503?v=2.9.2&r=stable. This one seems to have some user specific configuration data baked into the file.

The third one is https://connect.facebook.net/signals/plugins/inferredEvents.js?v=2.9.2

What I don't understand is, why doesn't Facebook simply consolidate all of these into one request, like https://connect.facebook.net/en_US/168539446845503/fbevents.js?v=2.9.2&r=stable, and then simply return one file with everything in it? This would be able to do everything the conversion pixel does now, but with 1 request instead of 3.


Solution

  • As the page makes more than a hundred requests for its loading, loading 1 javascript file instead of 3 would not be a significant improvement.

    Facebook chose to divide in 3 files for a better design, probably :

    • 1 generic library : fbevents.js
    • 1 more specific : inferredEvents.js, that uses the first one
    • 1 file that contains generated code, probably specific to the merchant 168539446845503 (Walmart?)

    This fragmentation makes code maintenance easier (test, reusability, bug fix).

    And finally, the generic files fbevents.js and inferredEvents.js can be cached by the browser and reused on other web sites. This is a kind of optimization, possibly better than the one you suggest.