Webhook push

Cuándo envía Rankfender un artículo publicado a tu sitio: cabeceras, autenticación, campos enviados, respuesta esperada y pruebas.

Con el webhook push, Rankfender envía cada artículo a una dirección de tu sitio en el momento en que se publica. La dirección, la autenticación y las cabeceras extra se configuran en la tarjeta «Integración Web Moderna», pestaña «PUSH (Webhook)»: ver Integración Web Moderna.

Cuándo llama Rankfender a tu endpoint

  • Cada vez que se publica un artículo del proyecto: por ti desde Contenido, o por el piloto automático con la publicación automática activada.
  • Solo si «Enable Webhook» está activado y hay una Webhook URL guardada.
  • Si el proyecto también tiene WordPress conectado, los artículos van a WordPress.
  • Existe un solo evento: article.published. Las ediciones y los borrados no se envían.

Cabeceras

CabeceraValor
Content-Typeapplication/json
X-Rankfender-Eventarticle.published
X-Rankfender-DomainLa dirección del sitio del proyecto
X-Rankfender-Testtrue, solo en las pruebas
Tus cabeceras personalizadasCada cabecera de «Custom Headers (Optional)», tal como la escribiste

Opciones de autenticación

«Authentication Method»Qué envía Rankfender
NoneNinguna credencial.
API Keyx-api-key: <tu clave>
Bearer TokenAuthorization: Bearer <tu token>
Basic AuthAuthorization: Basic <el valor introducido>. Introduce el valor ya codificado en base64 (usuario:contraseña).
Webhook Secretx-webhook-secret: <tu secreto>

El contenido enviado

Un cuerpo JSON con el artículo en el primer nivel y de nuevo bajo article, más el proyecto bajo domain. content es HTML, limpiado antes del envío; un artículo con menos de 100 caracteres de contenido no se envía. author es «Rankfender» salvo que el artículo tenga uno.

{
  "event": "article.published",
  "title": "…",
  "slug": "…",
  "content": "<h2>…</h2><p>…</p>",
  "excerpt": "…",
  "meta_description": "…",
  "meta_title": "…",
  "keywords": ["…"],
  "featured_image": "https://…",
  "author": "Rankfender",
  "published_at": "2026-10-14T09:12:00.000Z",
  "seo_data": { "title_tag": "…", "meta_keywords": "…", "canonical_url": "" },
  "custom_data": { "article_id": "…", "generated_by": "Rankfender", "word_count": 1850 },
  "article": {
    "id": "…", "title": "…", "slug": "…", "content": "…", "excerpt": "…",
    "meta_description": "…", "featured_image": "https://…", "cover_image_url": "https://…",
    "scheduled_date": null, "published_at": "…", "target_keyword": "…"
  },
  "domain": { "id": "…", "url": "https://your-site.com", "name": "…" }
}

Qué debe responder tu endpoint

  • Cualquier estado de 200 a 299 cuenta como entregado. Cualquier otro marca la publicación como fallida, con «Webhook returned <estado>» y el inicio de tu respuesta.
  • Opcional: responde con JSON que incluya id (o post_id) y url (o permalink, external_url). Rankfender guarda la URL como dirección publicada del artículo. Sin ella, la dirección es la URL de tu sitio más el slug.
  • Guarda el artículo en tu CMS o base de datos: Rankfender no guarda nada en tu lado.
HTTP/1.1 200 OK
Content-Type: application/json

{ "id": "123", "url": "https://your-site.com/blog/your-article" }

Probar

«Test Webhook» envía un artículo de ejemplo titulado «Rankfender Webhook Test» con X-Rankfender-Test: true y custom_data.test en true, para que tu endpoint pueda ignorarlo. Si funciona: «Webhook test successful! Endpoint responded with 2xx.»; tras envíos reales, «Last successful call:» muestra la fecha.

Importante

La prueba sale de tu navegador: tu endpoint debe aceptar peticiones de otro origen (CORS) desde app.rankfender.com para que pase. Los envíos reales salen de los servidores de Rankfender y no se ven afectados.