Our scenario: customer initiates conversation with our business page within Facebook Messenger and then he possibly makes a purchase. We are interested to send this event to Facebook Conversions API from our backend. According to Facebook documentation and recommendations high-quality user_data
parameters to help Facebook understand what was the actual user are:
- email address (
em
) - IP address (
client_ip_address
) - name (
fn
andln
) - phone number (
ph
)
Sounds nice, we should just pass email and that's it, but the problem is following: in incoming webhook from Facebook (when message from user arrives) we can fetch only user's PSID
(see this doc section), using this PSID
we can query some more user data (see this doc section). By default we can fetch only following fields:
first_name
last_name
middle_name
name
name_format
picture
short_name
Yes, we can pass first_name
and last_name
to Conversions API, but there are a lot of namesakes on the Earth, so this data is totally not unique and Facebook will hardly understand the actual user, who we want to mention in event. To fetch user's email or other data we have to ask him for a permission, but we don't have an app for that permission, we use just a Facebook Messenger, so this is not a case (correct me, please, if I'm wrong).
What is the best way to fill user_data
for such a scenario? As for me, it looks strange that they can not accept user's PSID
.
We even tried to play around with external_id
(passed PSID
as the value of this field), but Facebook has no chance to guess the actual user.