Guía de integración WorkMeter · Odoo (API key) 🔗


Para quién es esta guía: administradores que quieren conectar su Odoo con WorkMeter para recibir automáticamente las ausencias y los festivos de la plantilla y, si lo desean, enviar a Odoo los fichajes que registra WorkMeter.

1. Qué hace la integración 🔗


Odoo gestiona RRHH (empleados, ausencias, festivos, asistencias) y WorkMeter mide la actividad y el tiempo de trabajo. Conectarlos evita la doble entrada de datos y mejora el cálculo del tiempo esperado.



DirecciónDatoDetalle
Odoo → WorkMeter🌴 AusenciasVacaciones, bajas, permisos… aprobadas en la app Ausencias de Odoo, medios días incluidos. Es clave para que WorkMeter calcule correctamente el tiempo esperado.
Odoo → WorkMeter📅 FestivosLos Días festivos configurados en Odoo, aplicados a cada empleado según su compañía y su horario de trabajo.
WorkMeter → Odoo⏱️ Fichajes (opcional)Los tramos de presencia de cada día registrados por WorkMeter se escriben en la app Asistencias de Odoo. Se activa con una casilla en la tarjeta.

La integración no crea ni elimina empleados: enlaza cada empleado de WorkMeter con su ficha de Odoo (WorkMeter propone los enlaces automáticamente por email).


La sincronización es nocturna: cada noche WorkMeter lee Odoo y aplica los cambios en los calendarios; también puedes lanzarla a mano con Sincronizar ahora.


🔒 Seguridad. WorkMeter se conecta con una API key de un usuario de Odoo creado para la integración, con los permisos mínimos necesarios. La clave se guarda cifrada, no se vuelve a mostrar y puedes revocarla en cualquier momento desde Odoo o desconectar la integración desde WorkMeter. Solo se admiten direcciones https.

2. Antes de empezar (requisitos) 🔗


En WorkMeter:


  • Tu cuenta tiene la función time@work (control horario). La tarjeta de Odoo solo aparece en cuentas con esta función.
  • Eres administrador en WorkMeter.
  • No tienes otra integración de RRHH conectada (por ejemplo, Factorial). Solo puede haber una activa a la vez.

En Odoo:


  • Tu versión de Odoo es compatible (ver la tabla siguiente) y la instancia es accesible por https (Odoo Online, Odoo.sh o instalación propia).
  • Si usas Odoo Online, tu plan es Custom (ver la tabla siguiente).
  • Tienes instaladas las apps Empleados y Ausencias (Time Off). Para enviar fichajes, también Asistencias (Attendances).
  • Puedes crear usuarios y asignar permisos (eres administrador de Odoo).

Modalidades y versiones de Odoo compatibles


Por modalidad de Odoo:



ModalidadCompatibilidad
Odoo Online (el Odoo en la nube de Odoo S.A., `*.odoo.com`)✅ Compatible. Es la modalidad con la que WorkMeter ha validado la integración. Requiere el plan Custom: los planes One App Free y Standard no incluyen acceso por API.
Odoo.sh✅ Compatible. Misma API que Odoo Online, sin restricción de plan.
Instalación propia (on-premise o en tu propio proveedor cloud)✅ Compatible si la instancia es accesible desde Internet por https con un dominio público. No se admiten `http` ni direcciones internas de red.

Por versión de Odoo:



Versión de OdooCompatibilidad
18✅ Compatible. Es la versión con la que WorkMeter ha validado la integración de extremo a extremo (Odoo 18 Enterprise, en Odoo Online).
16 y 17✅ Compatible. El conector usa la misma API y tiene en cuenta las diferencias del módulo de ausencias entre versiones.
19 o superior⚠️ Compatible, con aviso. Funciona con normalidad, pero Odoo ha anunciado la retirada de la API que usa WorkMeter hoy (en Odoo Online, prevista para el invierno de 2027). La tarjeta te lo recuerda para planificar la migración con soporte.
15 o anterior❌ No soportada.

Vale tanto la edición Enterprise como Community: la integración solo usa los módulos estándar Empleados, Ausencias y Asistencias. WorkMeter detecta la versión al conectar y en cada sincronización nocturna, así que no tienes que indicarla ni reconfigurar nada cuando Odoo actualice tu instancia.


Durante el proceso vas a manejar cuatro datos. Anótalos en un sitio seguro:



DatoDe dónde saleEjemplo
URL de OdooLa dirección con la que entras en Odoo`https://miempresa.odoo.com`
Base de datosEn Odoo Online suele coincidir con el subdominio. En Odoo.sh o instalación propia, te lo indica tu administrador`miempresa`
Usuario (login)El login del usuario de integración (Paso 1)`workmeter@miempresa.com`
API keyLa generas en Odoo (Paso 2). Se muestra una sola vez

3. Resumen del proceso 🔗

  1. Prepara el usuario de integración en Odoo (en Odoo), con los permisos que necesite:
  • para sincronizar el calendario (ausencias y festivos): Empleados y Ausencias
  • para enviar además los fichajes: Empleados, Ausencias y Asistencias
  1. Genera su API key (en Odoo)
  2. Conecta desde WorkMeter → Configuración → Integraciones (en WorkMeter)
  3. Enlaza los empleados (en WorkMeter)
  4. Enlaza los tipos de día (en WorkMeter, si sincronizas ausencias)
  5. Activa el envío de fichajes a Odoo (en WorkMeter, si sincronizas fichajes)

Los pasos 1 y 2 se hacen en Odoo; el resto, en WorkMeter. Recomendamos tener abiertas las dos pestañas a la vez.

4. Paso 1 · Prepara el usuario de integración en Odoo 🔗


La API key va ligada a un usuario de Odoo: lo que ese usuario pueda ver es lo que WorkMeter podrá leer. Recomendamos un usuario dedicado (por ejemplo, `WorkMeter`) en lugar de la cuenta personal de un administrador.

  1. En Odoo, ve a Ajustes → Usuarios y compañías → Usuarios y crea (o elige) el usuario de integración, de tipo Usuario interno.
  2. En la pestaña Permisos de acceso, asígnale:


AppPermiso mínimoPara qué
EmpleadosOficial: gestionar todos los empleadosLeer la lista de empleados (nombre, email, horario y zona horaria)
AusenciasOficial: gestionar todas las solicitudesLeer las ausencias aprobadas de toda la plantilla y los días festivos
AsistenciasAdministradorSolo si vas a enviar fichajes: crear y reemplazar asistencias de cualquier empleado
  1. Guarda.

⚠️ Con permisos insuficientes, Odoo no devuelve un error: devuelve datos incompletos (por ejemplo, solo las ausencias del propio usuario). Si más adelante faltan empleados o ausencias en WorkMeter, revisa primero estos permisos.

ℹ️ Multiempresa. El usuario debe tener acceso a todas las compañías cuyos empleados quieras sincronizar.

Odoo: permisos de acceso del usuario de integración

ℹ️ En la captura el usuario tiene Administrador en las tres apps; para leer empleados y ausencias basta con el nivel Oficial indicado en la tabla.

5. Paso 2 · Genera la API key en Odoo 🔗


Las claves API se crean desde las preferencias del propio usuario, así que inicia sesión en Odoo con el usuario de integración.

  1. Pulsa tu avatar (arriba a la derecha) → Preferencias (en algunas versiones, Mi perfil).
  2. Abre la pestaña Seguridad de la cuenta y, en el bloque Claves API, pulsa Nueva clave de API.
  3. Odoo te pedirá confirmar tu contraseña.
  4. En el diálogo New API Key, escribe una descripción (por ejemplo, `WorkMeter`) y elige la duración de validez. Elige la más larga que permita tu política de seguridad (Persistent Key si está disponible): cuando la clave caduque, la sincronización se detiene hasta que introduzcas una nueva en WorkMeter (ver sección 12).
  5. Pulsa Generar clave y cópiala en ese momento: Odoo no la volverá a mostrar. A partir de entonces la clave figura en la lista Claves API con su fecha de expiración, desde donde también puedes eliminarla.

⚠️ La clave equivale a la contraseña de ese usuario. No la compartas ni la pegues en ningún sitio que no sea el asistente de WorkMeter.

Odoo: Preferencias, pestaña Seguridad de la cuenta, bloque Claves API

Odoo: diálogo de nueva clave API con descripción y duración

Odoo: la clave creada aparece en la lista Claves API con su fecha de expiración

6. Paso 3 · Conecta Odoo desde WorkMeter 🔗

  1. Entra en tu consola de WorkMeter: https://timework.workmeter.com
  2. Pulsa el icono de engranaje ⚙️ (Configuración) arriba a la derecha y, en el menú lateral, selecciona Integraciones.
  3. Localiza la tarjeta Odoo. Sin configurar muestra el texto «Sincroniza las ausencias y festivos desde Odoo. Conecta tu instancia con una API key para empezar».

Tarjeta de Odoo sin configurar en el panel de Integraciones
  1. Pulsa el interruptor de la tarjeta (o su engranaje ⚙️). Se abre el asistente Integración con Odoo, que tiene dos pasos: Credenciales → Conectado.

6.1 · Credenciales


Rellena los cuatro campos con los datos que anotaste:



CampoQué poner
URL de OdooLa dirección de tu instancia, siempre con `https://` (por ejemplo, `https://miempresa.odoo.com`). Vale cualquier dominio: Odoo Online, Odoo.sh o propio.
Base de datosEl nombre de la base de datos. En Odoo Online suele coincidir con el subdominio (`miempresa`).
Usuario (login)El login del usuario de integración (Paso 1).
API keyLa clave que generaste en Odoo (Paso 2). Se guarda cifrada y no se vuelve a mostrar.

Pulsa Conectar con Odoo. WorkMeter comprueba, en este orden, que la URL responde, que las credenciales son válidas y que el usuario puede leer Empleados y Ausencias. Si algo falla, verás el motivo concreto (sección 13) y no se guarda nada.


Asistente de Odoo — paso Credenciales

6.2 · Conectado


Si todo es correcto, el asistente muestra «Odoo está conectado», con la fecha de conexión, la última sincronización (Pendiente al principio), el estado de la credencial (Correcto), los errores de los últimos 7 días y la versión de Odoo detectada.


Asistente de Odoo — paso Conectado

En ese momento WorkMeter lanza una carga inicial en segundo plano: lee los empleados y los tipos de ausencia de Odoo y prepara las propuestas de enlace de los pasos siguientes.


⚠️ Si tu Odoo es la versión 19 o superior, verás un aviso permanente en la tarjeta: esa versión retirará la API que usa WorkMeter hoy. La integración funciona con normalidad; avisa a soporte para planificar la migración.

7. Paso 4 · Enlaza los empleados 🔗


Desde Configuración → Integraciones, pulsa el engranaje ⚙️ de la tarjeta de Odoo para abrir Configuración de Odoo. En la pestaña Empleados:


Mapeo de empleados WorkMeter ↔ Odoo
  • WorkMeter propone para cada empleado su ficha de Odoo cuando coincide el email (o el login). La propuesta aparece en el desplegable con su porcentaje de confianza; pulsa Confirmar para aceptarla.
  • Para aceptar varias de golpe, marca las filas y pulsa Confirmar seleccionados (N).
  • Si no hay propuesta («Sin sugerencia automática — selecciona manualmente»), elige el empleado de Odoo en el desplegable y pulsa Mapear.
  • El contador «N por confirmar» indica cuántos quedan. Un enlace confirmado se deshace con Desenlazar.
ℹ️ Un empleado de Odoo ya enlazado a otro usuario aparece deshabilitado con la nota «Ya enlazado a …». Solo se sincronizan los empleados enlazados.

8. Paso 5 (si sincronizas ausencias) · Enlaza los tipos de día 🔗


Este paso solo es necesario si quieres recibir las ausencias de Odoo; los festivos se sincronizan sin él. En la pestaña Tipos de día se emparejan los tipos de ausencia de Odoo (vacaciones, baja médica, permiso…) con los tipos de día de WorkMeter:


Mapeo de tipos de día WorkMeter ↔ ausencias de Odoo
  • Para cada tipo de día de WorkMeter, elige en el desplegable el tipo de ausencia de Odoo y pulsa Confirmar. Si los nombres coinciden, WorkMeter lo indica («Coincidencia por nombre: …»).
  • Si un tipo de ausencia de Odoo no tiene equivalente en WorkMeter, usa Añadir tipo de día externo: al elegirlo se abre Crear tipo de día en WorkMeter, donde indicas el nombre, un color y las horas esperadas por día (por ejemplo, `0` para vacaciones). Pulsa Crear y enlazar.
  • El contador «N por mapear» indica los tipos de Odoo aún sin enlazar. Un enlace se deshace con Desenlazar.
Modal para crear un tipo de día en WorkMeter

⚠️ Las ausencias de un tipo sin enlazar no se sincronizan. Revisa que todos los tipos que uses estén confirmados.

ℹ️ Los tipos de día de WorkMeter que no cambian las horas esperadas (por ejemplo, teletrabajo) no pueden recibir ausencias y aparecen como Ignorado. Los tipos de Odoo configurados como Tiempo trabajado (en lugar de Ausencia) tampoco se ofrecen.

9. Paso 6 (si sincronizas fichajes) · Envía los fichajes de WorkMeter a Odoo 🔗


Con la integración conectada, la tarjeta de Odoo muestra dos casillas:

  • Sincronizar calendario: Odoo → WorkMeter — marcada al conectar. Desmárcala si no quieres recibir ausencias ni festivos de Odoo.
  • Sincronizar fichajes: WorkMeter → Odoo — desmarcada al conectar. Márcala para activar el envío.

Los cambios en las casillas se guardan al instante y se aplican en la siguiente sincronización nocturna.


Tarjeta de Odoo conectada con las dos casillas de sincronización

Antes de activarla, comprueba en Odoo que:

  • La app Asistencias está instalada.
  • El usuario de integración es Administrador de Asistencias (Paso 1).
  • Cada empleado enlazado tiene su zona horaria informada en su ficha de Odoo: WorkMeter la usa para escribir las horas correctas.

Cómo funciona:

  • Cada noche, WorkMeter envía los días ya cerrados (hasta ayer) de los empleados enlazados: un registro de asistencia por cada tramo de presencia, con su entrada y su salida. El día de hoy nunca se envía.
  • Si un día cambia en WorkMeter (por ejemplo, una corrección de actividad), la noche siguiente se reescribe entero en Odoo. Si un día se queda sin presencia en WorkMeter, sus asistencias se eliminan de Odoo.
  • Si alguien borra en Odoo todas las asistencias de un día que WorkMeter sí tiene (dentro de la última semana), se reponen. Una asistencia retocada a mano en Odoo se respeta mientras ese día no cambie en WorkMeter.
  • Al desmarcar la casilla, las asistencias ya escritas se quedan en Odoo.
ℹ️ WorkMeter no registra marcajes de reloj: los tramos que envía son la presencia derivada de la actividad medida (y de los reportes manuales). Tenlo en cuenta si usas las asistencias de Odoo con fines de cumplimiento horario.

ℹ️ ¿Necesitas cargar en Odoo un histórico anterior a la última semana? Contacta con soporte: puede hacerse bajo petición.

10. Sincronización: qué, cuándo y cómo forzarla 🔗

  • Cada noche, WorkMeter lee de Odoo las ausencias aprobadas y los festivos de los empleados enlazados y actualiza sus calendarios; si activaste los fichajes, también los envía. No hay sincronización en tiempo real: un cambio hecho hoy en Odoo se ve en WorkMeter mañana.
  • Sincronización manual: en Configuración de Odoo, pulsa Sincronizar ahora para no esperar a la noche (por ejemplo, tras enlazar empleados o tipos de día). Solo afecta al calendario de los empleados ya enlazados y puede tardar unos minutos. Los fichajes se envían únicamente en el proceso nocturno.

Qué llega exactamente de Odoo:

  • Solo las ausencias en estado Aprobado. Las pendientes, rechazadas o canceladas no se sincronizan; si una aprobada se cancela, desaparece del calendario en la siguiente sincronización.
  • Una asignación de ausencias (el saldo que concedes: «20 días de vacaciones») no es una ausencia: solo llegan las solicitudes aprobadas con fechas.
  • Los medios días (mañana / tarde) se respetan.
  • Los festivos son los Días festivos de la app Ausencias, aplicados a cada empleado según su compañía y su horario de trabajo.
  • Los días que en WorkMeter no son laborables para ese empleado (fin de semana, etc.) no se tocan.
🛡️ Tus ediciones manuales se respetan. Si un administrador ha marcado a mano una ausencia en el calendario de un empleado en WorkMeter, la sincronización no la sobrescribe: solo gestiona los días que provienen de Odoo.

11. Verificar que todo funciona 🔗


En Configuración → Integraciones, la tarjeta de Odoo debe mostrar Conectado, Estado: Correcto, Errores (7d): 0 y la versión de Odoo. Tras la primera noche (o un Sincronizar ahora), las ausencias aprobadas en Odoo aparecen en el calendario de los empleados enlazados.


Si el estado muestra otra cosa, consulta la sección 13.

12. Gestionar o desconectar la integración 🔗


Desde Configuración de Odoo dispones de:

  • Reemplazar credenciales — para introducir una API key nueva (porque caducó, la revocaste o cambiaste de usuario de integración). WorkMeter desconecta y vuelve a abrir el paso Credenciales; los enlaces de empleados y tipos de día se conservan.
  • Desconectar — corta la integración: WorkMeter deja de leer Odoo y de enviar fichajes, y elimina la API key guardada.
ℹ️ Al desconectar, los datos ya sincronizados y los enlaces de empleados y tipos de día se conservan en WorkMeter; simplemente dejan de intercambiarse datos nuevos. Si más adelante vuelves a conectar, tendrás que introducir de nuevo la URL, la base de datos, el usuario y una API key.

Caducidad de la API key. Si en Odoo le pusiste una duración, apunta la fecha. Al caducar (o si la revocas), la tarjeta pasa a Estado: Inválido o expirado, la sincronización se detiene y en Configuración de Odoo verás el aviso «La conexión con Odoo ha caducado». Genera una clave nueva en Odoo (Paso 2) y usa Reemplazar credenciales.

Para revocar el acceso desde Odoo: Preferencias → Seguridad de la cuenta → Claves API, pulsa Eliminar clave API (o desactiva el usuario de integración).

13. Resolución de problemas 🔗



Mensaje / síntomaCausaSolución
«La URL no es válida: debe empezar por https y apuntar a un servidor público.»La URL no usa `https://` o apunta a una dirección interna.Usa la dirección pública de tu Odoo con `https://` (por ejemplo, `https://miempresa.odoo.com`).
«No se ha podido contactar con Odoo en esa URL. Revisa la dirección y que la instancia esté accesible.»Error tipográfico en la URL, o la instancia no es accesible desde Internet.Comprueba que la URL abre en el navegador y que no hay un cortafuegos que la bloquee.
«Base de datos, usuario o API key incorrectos.»Alguno de los tres datos no es correcto, o la clave ya caducó.Revisa el nombre de la base de datos (en Odoo Online, el subdominio) y el login. Si dudas de la clave, genera una nueva (Paso 2).
«El usuario no tiene permisos suficientes: necesita leer Empleados y Ausencias (Time Off).»Al usuario de integración le faltan permisos.Asigna los permisos del Paso 1 y vuelve a conectar.
«La aplicación Ausencias (Time Off) no está instalada en tu Odoo.»La app Ausencias no está instalada.Instálala desde el menú Aplicaciones de Odoo.
«Esta instancia no expone la API JSON-RPC (/jsonrpc) que usa WorkMeter. Contacta con soporte.»Tu Odoo no responde por el canal que usa WorkMeter (por ejemplo, en Odoo 19 sin el módulo rpc, o un proxy que lo bloquea).Contacta con el soporte de WorkMeter.
«Odoo ya está conectado. Desconecta primero para volver a conectar.»Ya existe una conexión activa para tu cuenta.Desconecta la integración actual antes de iniciar una nueva.
«Desconecta Factorial para poder activar Odoo.»Hay otra integración de RRHH conectada.Desconéctala desde su tarjeta; la de Odoo se desbloquea al instante.
«Hay una conexión de Factorial en curso…»Un asistente de Factorial quedó a medias.Espera 10 minutos: caduca sola.
Estado: «Inválido o expirado» / aviso «La conexión con Odoo ha caducado»La API key caducó o se revocó, el usuario se desactivó, perdió permisos o se desinstaló una app.Corrige la causa en Odoo, genera una clave nueva si hace falta y usa Reemplazar credenciales.
Faltan empleados o ausenciasPermisos insuficientes en Odoo (datos parciales, sin error); tipo de ausencia sin enlazar; ausencia no aprobada; o es una asignación de saldo, no una solicitud.Revisa el Paso 1, la pestaña Tipos de día y el estado de la ausencia en Odoo.
Los fichajes no llegan a OdooCasilla sin marcar; app Asistencias no instalada; el usuario no es Administrador de Asistencias; el empleado no está enlazado; es el día de hoy.Revisa la sección 9. Los días se envían la noche siguiente.
Las horas en Odoo aparecen desplazadasLa zona horaria del empleado en su ficha de Odoo no es la correcta.Corrígela en Odoo. El día se reescribe la próxima vez que cambie en WorkMeter.
La tarjeta de Odoo no apareceLa cuenta no tiene la función time@work.Contacta con tu responsable de cuenta de WorkMeter.

Si el problema persiste, contacta con el soporte de WorkMeter en https://help.workmeter.com.

14. Preguntas frecuentes 🔗


¿WorkMeter puede modificar datos en Odoo?
Solo si activas el envío de fichajes: entonces crea y reemplaza las asistencias de los empleados enlazados. Nunca modifica empleados, ausencias ni festivos.


¿Puedo tener Odoo y Factorial conectados a la vez?
No. Solo puede haber una integración de RRHH activa por cuenta.


¿Qué pasa con las contraseñas de mis usuarios?
WorkMeter no las conoce. Solo guarda, cifrada, la API key del usuario de integración, que puedes revocar en cualquier momento desde Odoo.


¿Con qué modalidades y versiones de Odoo es compatible?
Con Odoo Online (plan Custom), Odoo.sh e instalaciones propias accesibles por https. Versiones 16, 17 y 18 (validada en la 18); con Odoo 19 o superior funciona, pero con un aviso: Odoo retirará la API actual y habrá que migrar. Versiones anteriores a la 16 no están soportadas. Ver las tablas de la sección 2.


¿Tengo que reconfigurar algo cuando Odoo se actualiza de versión?
No. WorkMeter detecta la versión en cada conexión y cada noche. Si tu Odoo pasa a la versión 19 o superior, la tarjeta te lo avisa para planificar la migración con soporte.


¿Cada cuánto se sincroniza?
Una vez cada noche, en ambas direcciones. Si no quieres esperar, usa Sincronizar ahora (solo calendario).


¿Afecta a los datos de actividad que ya mide WorkMeter?
No. La integración solo aporta ausencias y festivos para que el cálculo del tiempo esperado sea más preciso; la medición de actividad sigue funcionando igual.