Sviluppatori

Webhooks

Ricevi una callback HTTP con JSON in chiaro appena un articolo è pronto e ogni volta che cambia stato.

Eventi

Due eventi, ciascuno attivato in una fase precisa della pipeline delle campagne.

article.readyAl termine della scrittura

Inviato quando un articolo è stato scritto e supera la revisione automatica: il segnale per pubblicarlo.

article.status_changedAl cambio di stato

Inviato quando lo stato di un articolo cambia in TrafficWins, ad esempio quando lo pubblichi o lo archivi.

Payload

Ogni evento invia questo corpo JSON tramite POST. Entrambi gli eventi hanno la stessa struttura.

{
  "event": "article.ready",
  "orgId": "org_8c2f1a…",
  "timestamp": "2026-06-15T12:34:56.000Z",
  "article": {
    "id": "art_3b9a7d…",
    "campaignId": "cmp_71d4e0…",
    "campaign": {
      "id": "cmp_71d4e0…",
      "name": "Office ergonomics",
      "language": "en",
      "websiteId": "site_8142…"
    },
    "contentPlan": {
      "id": "plan_f40a…",
      "itemId": "item_901c…",
      "topicClusterId": "cluster_ba52…",
      "topicClusterTitle": "Standing desk buyer fit",
      "role": "pillar",
      "contentRole": "buyer guide",
      "funnelStage": "mofu",
      "primaryKeyword": "standing desk",
      "plannedForDate": "2026-06-15"
    },
    "title": "How to Choose a Standing Desk",
    "slug": "how-to-choose-a-standing-desk",
    "status": "draft",
    "description": "A practical buyer's guide to height, stability, and budget.",
    "content": "# How to Choose a Standing Desk\n\n## Check the fit first\n\nStart with…",
    "tldr": "Choose by fit, stability, and budget.",
    "keyTakeaways": ["Check height range", "Check stability"],
    "keywords": ["standing desk", "ergonomics"],
    "language": "en",
    "articleType": "pillar",
    "category": "office-ergonomics",
    "tags": ["standing desk", "ergonomics"],
    "frontmatterDate": "2026-06-15",
    "author": "TrafficWins Team",
    "wordCount": 1840,
    "readingTimeMinutes": 10,
    "readingTimeText": "10 min read",
    "reviewScore": null,
    "reviewVerdict": "PASS",
    "qualitySummary": "No hard failures remain.",
    "qualityFailedChecks": [],
    "heroImageUrl": "https://cdn.trafficwins.com/articles/3b9a/hero.png",
    "heroImageAlt": "A height-adjustable standing desk in a bright office",
    "images": [
      {
        "kind": "hero",
        "url": "https://cdn.trafficwins.com/articles/3b9a/hero.png",
        "alt": "A height-adjustable standing desk in a bright office",
        "caption": null,
        "contentType": "image/png",
        "byteSize": 102400,
        "base64": "iVBORw0KGgo…",
        "dataUrl": "data:image/png;base64,iVBORw0KGgo…"
      }
    ],
    "files": {
      "llmTxt": {
        "fileName": "how-to-choose-a-standing-desk.llm.txt",
        "contentType": "text/plain",
        "encoding": "utf-8",
        "content": "# How to Choose a Standing Desk\n\nDescription: …"
      },
      "jsonLd": {
        "contentType": "application/ld+json",
        "encoding": "utf-8",
        "content": "{\"@context\":\"https://schema.org\",\"@graph\":[…]}"
      }
    },
    "createdAt": "2026-06-15T12:00:00.000Z",
    "updatedAt": "2026-06-15T12:34:55.000Z"
  }
}

Intestazioni richiesta

TrafficWins invia JSON in chiaro via HTTPS con queste intestazioni.

POST /your-endpoint  HTTP/1.1
Content-Type: application/json
User-Agent: TrafficWins-Webhooks/1.0

Configuralo

Aggiungi l’URL del tuo endpoint in TrafficWins, nelle impostazioni di pubblicazione del sito. Invieremo ogni evento come JSON in chiaro.

Apri TrafficWins

Inizia con un solo sito

Indicalo al tuo sito. Leggi le prime bozze domani.

Avvia un abbonamento, collega un sito e lascia che TrafficWins ricerchi, pianifichi, scriva e revisioni la tua prima campagna — prima gli articoli, poi i social. Nessuna chiave API di IA separata richiesta.

Apri TrafficWins

Prova gratuita di 3 giorni · annulli quando vuoi