SocialHook
Documentación/Inicio rápido
Primeros pasos

Guía de inicio rápido

Pon SocialHook en marcha en 5 minutos. Conecta tu primera cuenta de plataforma Meta y empieza a recibir webhooks con unas pocas líneas de código.

Tiempo estimado: 5 minutos
1

Crea tu cuenta de SocialHook

Regístrate en socialhook.io — no se requiere tarjeta de crédito

Tras registrarte, llegarás a tu panel. Desde aquí puedes conectar tus cuentas de Meta, configurar la URL de tu webhook y ver los registros de entrega. Tu cuenta incluye una clave secreta para firmar todas las cargas útiles de webhook.

2

Conecta una cuenta de plataforma Meta

Inicia sesión con OAuth en Facebook, Instagram o WhatsApp

Haz clic en Conectar junto a la plataforma que quieras usar. Serás redirigido al flujo OAuth de Meta. SocialHook nunca almacena tu contraseña de Meta.

Facebook: conecta una página que administres
Instagram: requiere una cuenta de Instagram Business
WhatsApp: requiere un número de WhatsApp Business
3

Configura la URL de tu webhook

Pega tu endpoint y genera una clave secreta

En tu panel, ve a Ajustes del webhook y pega la URL del endpoint POST de tu servidor. Genera una clave secreta: la usarás para verificar las firmas de las cargas útiles.

Para desarrollo local, usa ngrok para exponer tu localhost:

shell
npx ngrok http 3000
4

Configura la verificación de firma

Verifica cada carga útil antes de procesarla

Cada entrega incluye una cabecera X-SocialHook-Signature. Verifícala antes de procesar cualquier carga útil:

node.js
const crypto = require('crypto')

function verifySignature(rawBody, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(rawBody)
    .digest('hex')
  return signature === expected
}

app.post('/webhook', express.raw({ type: '*/*' }), (req, res) => {
  const sig = req.headers['x-socialhook-signature']

  if (!verifySignature(req.body, sig, process.env.SOCIALHOOK_SECRET)) {
    return res.status(401).send('Unauthorized')
  }

  const payload = JSON.parse(req.body)
  // ... handle payload
  res.sendStatus(200)
})
5

Gestiona los eventos entrantes

Analiza y actúa sobre las cargas útiles del webhook

Una vez verificado, analiza el JSON y enruta según el campo event:

node.js
const { platform, event, message, from } = payload

switch (event) {
  case 'message.received':
    console.log(`[${platform}] Message from ${from}: ${message.body}`)
    // Route to AI, CRM, n8n, etc.
    await handleInboundMessage(payload)
    break

  case 'conversation.started':
    // New conversation — create a CRM lead, send welcome message
    await createLead({ platform, from, timestamp: payload.timestamp })
    break

  default:
    console.log('Unhandled event:', event)
}

res.sendStatus(200) // Always respond 200
Importante: devuelve siempre un estado 200 de inmediato. Si tu servidor tarda más de 10 segundos en responder, SocialHook considerará la entrega como fallida y la reintentará.

¡Ya estás en vivo! 🎉

Envía un mensaje de prueba a tu número de WhatsApp conectado, a tu página de Facebook o a tu cuenta de Instagram. Deberías ver la entrega en los registros de tu panel de SocialHook y un POST en tu servidor en menos de 50 ms.