P4 Software
/
NominaHQ
Aplica a: NominaHQ Roles: Acceso total y Administrador (crear, editar y eliminar suscripciones); todos los roles del personal pueden ver la página. Referencias regulatorias: ninguna
Los Webhooks permiten que NominaHQ avise a sus propios sistemas cada vez que ocurre un evento de planilla (por ejemplo, una planilla aprobada, pagada o contabilizada, o un Décimo contabilizado). NominaHQ envía una solicitud HTTP POST con los datos del evento a la URL que usted registre, firmada con HMAC-SHA256 para que su sistema pueda verificar el origen. La página también recibe webhooks de sistemas externos (Bancos, relojes de marcación) y muestra una bitácora de cada intento de entrega. Esta función la usa el personal técnico del proveedor que integra NominaHQ con otros sistemas.
Menú lateral: Configuración → Webhooks (ruta /settings/webhooks).
Las suscripciones y entregas son por empresa (cliente): la página muestra siempre las del cliente activo seleccionado.
payroll.run.posted).X-NominaHQ-Signature y permite a su sistema confirmar que el mensaje proviene de NominaHQ y no fue alterado./api/v1/webhooks/{source}. NominaHQ guarda el cuerpo para procesarlo y auditarlo.Antes de empezar: necesita el rol Acceso total. Seleccione en la barra superior la empresa cuyos eventos quiere recibir: los webhooks son por empresa. Tenga lista la URL https:// de su sistema receptor.
En el menú lateral, dentro de Configuración, haga clic en Webhooks.

Arriba están las suscripciones de la empresa activa (en el ejemplo, todavía ninguna: "Aún no hay webhooks"); más abajo, Entregas recientes.
Haga clic en Nuevo.

Se abre el cuadro Nuevo Webhook.
En Nombre, escriba un nombre que identifique al sistema receptor (en el ejemplo, Portal RRHH (demo)).

El nombre no se puede cambiar después de guardar.
En URL, escriba la dirección de su sistema que recibirá los eventos.

Debe ser una dirección pública https:// (o http://); NominaHQ no envía a direcciones internas.
En Secreto (HMAC), escriba un secreto de firma y compártalo con quien programa el sistema receptor.

Es opcional, pero sin secreto los mensajes no llevan firma y su sistema no puede comprobar que vienen de NominaHQ.
En Eventos, deje * para recibir todos, o escriba las claves separadas por comas (por ejemplo payroll.run.paid,payslips.issued).

Las claves disponibles están en la tabla Eventos salientes disponibles más abajo.
Deje marcada la casilla Activo y haga clic en Guardar.

Guardar se habilita cuando Nombre y URL tienen valor.
Revise la lista: aparece el aviso "Webhook guardado" y la nueva suscripción con su URL y sus eventos.

Para cambiar la URL, el secreto, los eventos o Activo, haga clic en el nombre. Al editar, el secreto aparece vacío: déjelo así para conservarlo o escriba uno nuevo para reemplazarlo.
Resultado: cada vez que ocurra uno de los eventos suscritos en esa empresa, NominaHQ envía un POST con los datos del evento a su URL.
Baje hasta Entregas recientes. Cada fila es un intento de envío, del más reciente al más antiguo. El historial se conserva aunque la suscripción que lo generó ya se haya eliminado.

En el ejemplo, OK sin marcar y HTTP 405: el sistema receptor rechazó el mensaje. Revise la columna Error y el registro de su sistema.
Resultado: usted sabe si su sistema recibió cada evento. Use el botón con la flecha circular, junto a Nuevo, para recargar las tablas.
En la lista de suscripciones, haga clic derecho sobre la fila y elija Eliminar.

Si solo quiere pausar los envíos, edite la suscripción y desmarque Activo.
En el cuadro Eliminar, confirme con Confirmar.

Con Cancelar se cierra sin eliminar.
Resultado: aparece "Webhook eliminado" y la suscripción deja de recibir envíos.
X-NominaHQ-Signature; su valor tiene el formato sha256=<hexadecimal>.X-NominaHQ-Event indica la clave del evento. El tipo de contenido es application/json.| Campo | Tipo | Obligatorio | Descripción | Validación |
|---|---|---|---|---|
| Nombre | Texto | Sí | Identifica la suscripción. No editable después de crearla. | Único por empresa; hasta 128 caracteres. |
| URL | Texto | Sí | Dirección de destino de los envíos. | Debe ser una URL absoluta http o https; hasta 1024 caracteres; debe resolver a una dirección pública (ver SSRF). |
| Secreto (HMAC) | Texto | No | Secreto compartido para firmar los mensajes. Si se define, cada envío incluye X-NominaHQ-Signature. |
Hasta 256 caracteres. |
| Eventos | Texto | No | Claves de eventos separadas por comas, o * para todos. |
Hasta 512 caracteres; vacío equivale a *; comparación sin distinguir mayúsculas. |
| Activo | Casilla | No | Solo las suscripciones activas reciben envíos. | Activa por defecto. |
El botón Guardar permanece deshabilitado mientras Nombre o URL estén vacíos.
| Columna | Descripción |
|---|---|
| Nombre | Nombre de la suscripción (enlace para editar). |
| URL | Dirección de destino. |
| Eventos | Eventos suscritos (* o lista). |
| Activo | Indicador de si está activa. |
| Columna | Descripción |
|---|---|
| Hora | Fecha y hora del intento. |
| Evento | Clave del evento entregado. |
| OK | Indica si el envío fue exitoso (respuesta HTTP 2xx). |
| HTTP | Código de estado HTTP devuelto por su sistema. |
| ms | Duración del intento en milisegundos. |
| URL | Dirección a la que se envió. |
| Error | Mensaje de error, si la entrega falló. |
| Clave del evento | Se dispara cuando… |
|---|---|
payroll.run.approved |
Se aprueba una planilla (Planilla). |
payroll.run.paid |
Se marca una planilla como pagada. |
payslips.issued |
Los recibos de una planilla quedan finales al marcarla como pagada. Se envía una sola vez por planilla con la lista de recibos (payslipId, employeeCode, employeeName, grossEarnings, totalDeductions, netPay); descargue cada PDF con GET /api/v1/payslips/{payslipId}/pdf. |
payroll.run.posted |
Se contabiliza una planilla regular. |
decimo.posted |
Se contabiliza una corrida de Décimo. |
employee.created |
Reservado: definido en el sistema, pero no se emite en esta versión. |
El cuerpo es JSON con esta estructura:
{
"event": "payroll.run.posted",
"sentAt": "fecha y hora UTC",
"data": {
"runId": "…",
"runType": "…",
"periodStart": "…",
"periodEnd": "…",
"payDate": "…",
"status": "…",
"entryCount": 0,
"totalGross": 0,
"totalNet": 0
}
}
Encabezados incluidos en cada envío:
| Encabezado | Contenido |
|---|---|
Content-Type |
application/json |
X-NominaHQ-Event |
La clave del evento (por ejemplo payroll.run.posted). |
X-NominaHQ-Signature |
sha256=<hexadecimal> — solo si la suscripción tiene Secreto (HMAC). |
NominaHQ acepta mensajes de sistemas externos por HTTP POST en /api/v1/webhooks/{source}, donde {source} identifica al remitente (por ejemplo un banco o un reloj de marcación). El cuerpo de la solicitud se guarda sin cambios para su procesamiento y auditoría. El encabezado opcional X-Event-Type se registra como tipo de evento. Se conserva también la dirección IP de origen y la fecha y hora de recepción. La respuesta confirma la recepción.
Estos mensajes no aparecen en las tablas de la página de Webhooks; se almacenan internamente para procesamiento posterior.
http o https.La gestión de webhooks es una tarea de configuración del sistema; solo el rol Acceso total y los Administradores pueden crear, editar o eliminar suscripciones. Todos los roles del personal pueden ver la página.
| Rol | Ver | Crear | Editar | Eliminar | Aprobar |
|---|---|---|---|---|---|
| Acceso total | Sí | Sí | Sí | Sí | N/A |
| Captura de datos | Sí | No | No | No | N/A |
| Aprobador | Sí | No | No | No | N/A |
| Solo lectura | Sí | No | No | No | N/A |
| Administrador | Sí | Sí | Sí | Sí | N/A |
| Síntoma | Causa probable | Solución |
|---|---|---|
| La suscripción no recibe envíos. | La casilla Activo está desmarcada, o los Eventos no incluyen el evento esperado. | Marque Activo y verifique que Eventos sea * o contenga la clave correcta. |
| En Entregas recientes aparece OK sin marcar con un Error de "SSRF". | La URL resuelve a una dirección interna o privada. | Use una URL pública accesible desde Internet. |
| El botón Guardar está deshabilitado. | Falta el Nombre o la URL. | Complete ambos campos obligatorios. |
| La columna HTTP muestra un código 4xx o 5xx. | Su sistema rechazó o falló al procesar el mensaje. | Revise el registro de su sistema receptor y la columna Error. |
| Su sistema no puede validar la firma. | El secreto no coincide o se firmó un cuerpo distinto al recibido. | Use el mismo Secreto (HMAC) y calcule el HMAC sobre el cuerpo exacto recibido. |
| No se pueden crear ni editar suscripciones. | El usuario no tiene rol Acceso total ni es Administrador. | Solicite a un Administrador que realice el cambio. |
¿Te resultó útil esta página?