Para integraciones, un webhook nos envía los siguientes datos:
{
'leadgen_id': '1623900945330278',
'form_id': '1962848607672175',
'ad_id': '120242521228930087',
'adgroup_id': '120242521228930087',
'page_id': '105464935110715'
}
Primero necesitamos convertir el token de usuario a un token largo:
GET https://graph.facebook.com/v25.0/oauth/access_token
?grant_type=fb_exchange_token
&client_id=APP_ID
&client_secret=APP_SECRET
&fb_exchange_token=SHORT_LIVED_USER_TOKEN
Este token de usuario durará aproximadamente sesenta días
Obtenemos entonces el token de página
GET /me/accounts
{
"data": [
{
"access_token": "ACCESS_TOKEN",
"category": "Categoría",
"category_list": [
{
"id": "id_categoria",
"name": "Categoría"
}
],
"name": "Nombre empresa",
"id": "id_empresa",
"tasks": [
"ADVERTISE",
"ANALYZE",
"CREATE_CONTENT",
"MESSAGING",
"MODERATE",
"MANAGE"
]
}
],
"paging": {
"cursors": {
"before": "cursores__",
"after": "cursores__"
}
}
}
Guardaremos los datos en el modelo y obtendremos los datos desde el leadgen_id desde la api de META.
Primero necesitamos obtener un token de usuario:
GET https://graph.facebook.com/v25.0/{leadgen_id}?access_token=TU_TOKEN_DE_PAGINA
{
"created_time": "2026-04-25T01:30:53+0000",
"id": "ladgen_id",
"field_data": [
{
"name": "full_name",
"values": [
"Nombre persona"
]
},
{
"name": "city",
"values": [
"Ciudad"
]
},
{
"name": "phone_number",
"values": [
"numero_telefono"
]
}
]
}
Una vez tenemos esto podemos relacionarlos. Ahora bien, el webhook impacta antes que la conversación creada en chatwoot, así que debemos almacenarlo en una tabla y hacer reintentos.