Entérate en cuanto una publicación llega, o no llega
Registra una URL una vez y FoPost la llamará cada vez que se resuelva una entrega. Cada evento incluye el id de la publicación, la cuenta, la plataforma, el enlace permanente o el texto del error, para que tu sistema reaccione sin hacer sondeos.
curl -X POST https://api.fopost.com/v1/webhooks \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"workspaceId": "9b2f6c1e-...",
"url": "https://yourbrand.com/hooks/social",
"events": ["delivery.published", "delivery.failed", "post.published", "post.failed"]
}'Se dispara al resolverse
Un evento por cada entrega en una cuenta, enviado en cuanto la red confirma o rechaza.
Firmados
Cada solicitud lleva un encabezado de firma para que verifiques que viene de nosotros.
Con reintentos
Una respuesta que no sea 2xx se reintenta con espera progresiva antes de descartar el evento.
Los eventos cubren todo el ciclo de publicación
delivery.published se dispara cuando una red acepta la entrega de una cuenta e incluye el enlace permanente. delivery.failed se dispara cuando no se va a publicar e incluye el texto del error de la plataforma. post.published y post.failed se disparan una vez por publicación, cuando todas las cuentas se han resuelto.
Leer la referencia de webhooks{
"event": "delivery.published",
"data": {
"postId": "7d3e0a52-...",
"postAccountId": "a3c5e7f9-...",
"accountId": "4a71d80b-...",
"platform": "linkedin",
"externalUrl": "https://linkedin.com/feed/update/..."
},
"timestamp": "2026-09-01T09:00:07Z"
}delivery.published
El enlace permanente, listo para guardarlo o enlazarlo desde tu CMS.
delivery.failed
El mensaje de error de la propia red, para que corrijas la causa sin adivinar.
Por espacio de trabajo
Un webhook pertenece a un espacio de trabajo y solo ve las publicaciones de ese espacio.
Comprueba el payload antes de actuar
Cada solicitud se firma con el secreto que recibes al crear el webhook. Calcula la firma sobre el cuerpo sin procesar, compárala con el encabezado y rechaza lo que no coincida. Responde 2xx rápido y haz el trabajo después.
Ver la verificación de firmasapp.post('/hooks/social', async (req, res) => {
const signature = req.header(SIGNATURE_HEADER) // header name is in the docs;
if (!verify(req.rawBody, signature, process.env.WEBHOOK_SECRET)) {
return res.status(401).end();
}
const { event, data } = req.body;
await queue.add(event, data);
res.status(200).end();
});Encabezado de firma
Verifica con el secreto que recibiste al crearlo. Para rotarlo, vuelve a crearlo.
Con marca de tiempo
timestamp te permite ignorar repeticiones antiguas y ordenar los eventos correctamente.
Idempotente por id
Los reintentos llevan el mismo id de evento, así que es fácil descartar una entrega doble.
Crea, lista y elimina endpoints desde el código
Los webhooks son objetos normales de la API. Crea uno por entorno, lístalos para auditar qué hay registrado y borra los que ya no necesites. Apúntalos a una URL de staging durante el desarrollo y cambia a producción con una sola llamada.
Empieza a construir
Listar endpoints
GET /v1/webhooks muestra cada URL y los eventos a los que está suscrita.
Por entorno
Registra una URL aparte para staging, así las publicaciones de prueba nunca llegan a producción.
Scope webhooks
Gestionar endpoints requiere su propio scope. Una clave solo de publicación no puede añadir ninguno.
Preguntas sobre Webhooks, respondidas
¿Qué eventos hay disponibles?
¿Cómo verifico un webhook?
¿Qué pasa si mi endpoint está caído?
¿Puedo recibir eventos de una sola cuenta?
¿Puedo probar sin publicar de verdad?
¿De verdad necesito webhooks?
Empieza hoy a construir con la Webhooks
Empezar es gratis y la API completa está incluida. Crea una clave y haz tu primera llamada en minutos.
Consigue tu clave de API