API
Iniciar sesión
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"
}