Este navegador no puede mostrar la página correctamente. Actualiza tu navegador a la última versión.

Miharu

Guía de integración de Webhook

Si configuras un Webhook, Miharu envía sus resultados de monitoreo (alertas del sistema) a la URL que indiques mediante un POST HTTP con cuerpo JSON. Así puedes conectarlo con Zapier, Make, n8n, tu propio servidor y más, y procesar las notificaciones como quieras.

Esta función está pensada para desarrolladores y usuarios avanzados. Hace falta un endpoint receptor de tu lado.

1. Configuración

  1. 1En la app, abre “Notificaciones externas” → “Webhook”.
  2. 2Escribe la URL del Webhook de destino (debe empezar por https://).
  3. 3Si lo necesitas, define el filtro de notificaciones (por ejemplo, solo un grupo de monitoreo concreto).
  4. 4Al guardar se envía una notificación de prueba que confirma la configuración.

2. Especificación HTTP

Método
POST
Cuerpo
JSON (UTF-8)
Encabezados principales
Content-Type: application/json; charset=utf-8 User-Agent: Miharu-Webhook/1.0 X-Miharu-Event: <event> (tipo de evento) X-Miharu-Notification-Id: <id> (ID único de la notificación)
Tiempo de espera
10 segundos
Condición de éxito
Devolver un estado HTTP 2xx
Devuelve 2xx cuanto antes. Si se producen 10 respuestas seguidas distintas de 2xx, el envío a ese Webhook se detiene automáticamente (se reactiva volviéndolo a configurar en la app). Haz el procesamiento pesado de forma asíncrona, después de responder.

No se envía ningún encabezado de firma (HMAC u otro). La propia URL del Webhook es el secreto (consulta Seguridad más abajo).

3. Payload (campos comunes)

source stringValor fijo "miharu"
version stringVersión de la especificación del payload (actualmente "1")
id stringID único de la notificación (UUID). Un mismo evento conserva el mismo id en los reintentos (úsalo para descartar duplicados).
timestamp stringMomento del evento (ISO 8601, UTC)
language stringCódigo de idioma (en/ja/de/pt/es/fr/ko)
event stringTipo de evento (tabla siguiente)
monitor object / nullPágina monitoreada {id, name, url}. null en los eventos system.
message objectTexto para mostrar {body, label}. label es null si no aplica.
detail objectDetalles según el tipo de evento (abajo)

4. Tipos de evento y detail

page_changedDetección de cambios (el contenido de la página cambió desde la última revisión){ diff: [...], truncated: bool }
keyword_hitDetección de palabras clave{ hits: [{ keywords: [...], excerpts: [...] }] }
new_linkDetección de nuevos enlaces{ links: [{ text, url }] }
price_changedCambio de precio o valor{ target_name, before, after }
text_changedCambio de texto{ target_name, before, after }
systemNotificación del sistema (configuración completada, monitoreo en pausa, etc.){ kind: string } (cadena que indica el tipo)

El diff de page_changed

diff es un arreglo con los cambios. Cada elemento es uno de estos:

Si truncated es true, la diferencia era grande y se omitió una parte.

5. Ejemplos

Detección de cambios (page_changed)

JSON
{
  "source": "miharu",
  "version": "1",
  "id": "5c2e1b7a-9f3d-5a6b-8c4e-1d2f3a4b5c6d",
  "timestamp": "2026-05-22T01:23:45Z",
  "language": "es",
  "event": "page_changed",
  "monitor": { "id": "abc123", "name": "Página de producto", "url": "https://example.com/item" },
  "message": { "body": "La página se ha actualizado.", "label": "Actualización" },
  "detail": {
    "diff": [
      { "op": "replaced", "before": "Agotado", "after": "Disponible" },
      { "op": "added", "text": "Repuesto hoy" }
    ],
    "truncated": false
  }
}

Detección de palabras clave (keyword_hit)

JSON
{
  "source": "miharu", "version": "1", "id": "…",
  "timestamp": "2026-05-22T01:23:45Z", "language": "es",
  "event": "keyword_hit",
  "monitor": { "id": "abc123", "name": "Página de disponibilidad", "url": "https://example.com/stock" },
  "message": { "body": "Se ha detectado una palabra clave.", "label": "Palabra clave" },
  "detail": { "hits": [ { "keywords": ["repuesto"], "excerpts": ["…repuesto hoy…"] } ] }
}

Detección de nuevos enlaces (new_link)

JSON
{
  "…": "…",
  "event": "new_link",
  "message": { "body": "Se ha detectado un enlace nuevo.", "label": "Enlace nuevo" },
  "detail": { "links": [ { "text": "Anuncio de un producto nuevo", "url": "https://example.com/news/123" } ] }
}

Cambio de precio o valor (price_changed)

JSON
{
  "…": "…",
  "event": "price_changed",
  "message": { "body": "“Precio” ha cambiado.\n\n1980 → 1480", "label": "Precio/Valor" },
  "detail": { "target_name": "Precio", "before": "1980", "after": "1480" }
}

6. Idempotencia (descarte de duplicados)

Un mismo evento llega siempre con el mismo id, incluso en los reintentos (ese mismo valor está también en el encabezado X-Miharu-Notification-Id). Usa id de tu lado para no procesar dos veces la misma notificación.

7. Seguridad

8. Integraciones

Genera una URL de recepción en tu servicio y regístrala en Miharu como URL del Webhook.

9. Limitaciones

10. Resolución de problemas


Si tienes alguna observación o sugerencia, escríbenos desde “Comentarios y sugerencias” en la app.

Todos los canales de notificación se configuran desde la app.Obtener la app