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.