Sappi subito se un post è andato a buon fine oppure no
Registra un URL una volta e FoPost lo chiama ogni volta che una consegna si conclude. Ogni evento contiene l'id del post, l'account, la piattaforma, il permalink o il testo dell'errore, così il tuo sistema reagisce senza polling.
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"]
}'Parte a consegna conclusa
Un evento per ogni consegna su un account, inviato non appena la rete conferma o rifiuta.
Firmati
Ogni richiesta contiene un header di firma, così puoi verificare che arrivi da noi.
Nuovi tentativi
Una risposta non 2xx viene ritentata con backoff prima che l'evento venga scartato.
Gli eventi coprono l'intero ciclo di pubblicazione
delivery.published parte quando una rete accetta la consegna per un account e include il permalink. delivery.failed parte quando la pubblicazione non avverrà e include il testo di errore della piattaforma. post.published e post.failed partono una sola volta per post, dopo che tutti gli account si sono conclusi.
Leggi il riferimento webhook{
"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
Il permalink, pronto da salvare o da linkare dal tuo CMS.
delivery.failed
Il messaggio di errore della rete, così risolvi la causa invece di tirare a indovinare.
Per workspace
Un webhook appartiene a un solo workspace e vede solo i post di quel workspace.
Verifica il payload prima di agire
Ogni richiesta è firmata con il secret restituito alla creazione del webhook. Calcola la firma sul corpo grezzo, confrontala con l'header e rifiuta tutto ciò che non corrisponde. Rispondi subito con 2xx ed esegui il lavoro dopo.
Vedi la verifica della firmaapp.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();
});Header di firma
Verifica con il secret ricevuto alla creazione. Per ruotarlo, ricrea il webhook.
Con timestamp
timestamp ti permette di ignorare i replay obsoleti e ordinare correttamente gli eventi.
Idempotente per id
I nuovi tentativi hanno lo stesso id evento, quindi una doppia consegna è facile da scartare.
Crea, elenca e rimuovi endpoint dal codice
I webhook sono semplici oggetti API. Creane uno per ambiente, elencali per controllare cosa è registrato ed elimina quelli che non ti servono più. Puntali a un URL di staging durante lo sviluppo e passa alla produzione con una sola chiamata.
Inizia a sviluppare
Elenca gli endpoint
GET /v1/webhooks mostra ogni URL e gli eventi a cui è iscritto.
Per ambiente
Registra un URL separato per lo staging, così i post di prova non arrivano mai in produzione.
scope webhooks
La gestione degli endpoint richiede un proprio scope. Una chiave di sola pubblicazione non può aggiungerne.
Webhook: le risposte alle tue domande
Quali eventi sono disponibili?
Come verifico un webhook?
E se il mio endpoint non è raggiungibile?
Posso ricevere eventi per un solo account?
Posso fare test senza pubblicare davvero?
Mi servono davvero i webhook?
Sviluppa oggi con Webhook
Iniziare è gratis e l'API completa è inclusa. Crea una chiave e fai la tua prima chiamata in pochi minuti.
Ottieni la tua chiave API