Facebook Audiences On Huge Scale
Tech Stack: php, mongo On our system we tracked and stored thousands of actions for our users. With all of that useful info we could easily segment the users to groups. For example:
- Users with items in their cart
- Users that didn’t purchase in the last 30 days
- Users who visited a specific page that live in the US The above lists can easily get too tens of millions of users. And we need to upload those to “Facebook Custom Audiences” with their API. ** Facebook API has some limitations (more to come…)
What is Facebook Custom Audience? Its Facebook tool for advertisers to pinpoint their ads to a specific audience or advertise to “look alike” audience (by Facebook algorithms)
So what is the problem? We wanted to make sure our “custom audience” list are up to date. That means that every week/day/hour the list has the proper users inside it. As an example we want to make sure to not have users with nothing in their cart and deliver them an add with click to complete their purchase. Facebook API has some limitations as you can only: remove and delete users in a list. When you delete you cant truncate (delete all) because you need to tell them who to delete. And on our system the lists are dynamic so its not like we now who got added to a list or got removed.
What did we do?
- On each upload to Facebook, we saved a snapshot of the upload
- On the next upload we will compare the snapshots and will only call facebook with the differentiations. example:
first upload: user1, user2, user3
the second upload needed: user1, user4
That means we now have these actions:
add to Facebook: user4
remove from Facebook: user2, user3