Documentación ›
Webhook entrante › Webhook entrante (Integraciones)
POST
Webhook entrante (Integraciones)
POSThttps://app.sendapp.ai/api/integrations/webhook/{token}
Recibe contactos de plataformas externas (Shopify, WooCommerce, HubSpot, Klaviyo, Pipedrive y otras). En cada evento extraemos el contacto (nombre / teléfono / email), lo creamos o actualizamos en SendApp y lo etiquetamos con la plataforma de origen (p. ej.
shopify). No se envía ningún mensaje: llega a esos contactos más tarde con una Campaña (por etiqueta) o vía API. El payload puede ser cualquier JSON: buscamos recursivamente las claves de teléfono, email y nombre a cualquier profundidad. Respuesta típica:
{ "status": "ok", "contact": { "id": 12345 } }.Si no encontramos ni teléfono ni email, respondemos
200 con status: ignored, para que la plataforma de origen mantenga el webhook activo.Parámetros
token
obligatorio
Token de la cuenta, en la ruta de la URL. Determina qué cuenta recibe los contactos.
source
opcional
Query string, p. ej.
?source=shopify. Se usa como etiqueta del contacto; en su defecto se usa el User-Agent. Solicitud
curl -X POST 'https://app.sendapp.ai/api/integrations/webhook/YOUR_ACCOUNT_TOKEN?source=shopify' \
-H 'Content-Type: application/json' \
-d '{
"email": "jon@example.com",
"customer": {
"first_name": "Jon",
"last_name": "Snow",
"phone": "+391234567890"
}
}'<?php
$ch = curl_init('https://app.sendapp.ai/api/integrations/webhook/YOUR_ACCOUNT_TOKEN?source=shopify');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'email' => 'jon@example.com',
'customer' => ['first_name' => 'Jon', 'last_name' => 'Snow', 'phone' => '+391234567890'],
]),
]);
echo curl_exec($ch);
curl_close($ch);const res = await fetch('https://app.sendapp.ai/api/integrations/webhook/YOUR_ACCOUNT_TOKEN?source=shopify', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
email: 'jon@example.com',
customer: { first_name: 'Jon', last_name: 'Snow', phone: '+391234567890' }
})
});
console.log(await res.json());Respuesta (200 OK)
{
"status": "ok",
"contact": {
"id": 4023
}
}Error
{
"status": "error",
"message": "Unknown webhook token"
}