Marrow Health
ES
Descargar

Automatizaciones: tus datos, enviados con una programación

Marrow puede hacer POST de un archivo con tus datos de salud a cualquier URL que elijas, con la frecuencia que elijas, directamente desde el teléfono. Esta página es la referencia: cómo configurar una, qué aspecto tiene cada payload y cómo escribir algo que lo reciba.

Las configuraciones listas para usar con n8n, Zapier, Make, Home Assistant, Google Sheets e InfluxDB están en conexiones.

Todas las guías de Marrow: MCP · Espejo autoalojado · Automatizaciones · Archivos · Soporte

Qué es una automatización

Un trabajo guardado en Exportar, Automatizado: un tipo de datos, un formato, un rango de fechas, una URL, una cadencia. Marrow genera el archivo a partir de su almacén verificado y hace POST a la URL con la app cerrada, después de cada confirmación de sincronización y en cada actualización en segundo plano, siempre que haya pasado la cadencia. Nada pasa por nosotros: el teléfono habla directamente con tu endpoint.

Configurar una

  1. Pestaña Exportar, Automatizado: actívalo y luego Nueva automatización. Si se crea desde la página de una herramienta (n8n, Zapier, Home Assistant y el resto en conexiones), la automatización lleva el nombre de esa herramienta e indica junto a cada campo lo que la herramienta quiere ahí.
  2. Dirección: la URL https a la que debe hacer POST. Encabezados: los que necesite tu receptor (un token bearer en Authorization, un X-Gitlab-Token, lo que sea). Cuando la herramienta no necesita ninguno, Añadir encabezado está en Más opciones.
  3. Datos: Métricas de salud, Entrenamientos, Registro de fuerza, Diario de nutrición, o Síntomas y estado de ánimo, como JSON o CSV. Una automatización lleva un solo tipo, así que crea una por cada tipo que quieras. Cada una que está activada cuenta como una conexión: el plan gratuito mantiene 1 conexión activa a la vez, Marrow Pro hasta 10, incluidas las IA y los servidores.
  4. Cadencia: cada tantos minutos, horas o días. El rango de fechas, la agregación y el tiempo de espera están en Más opciones.
  5. Ejecutar ahora envía un primer payload para que puedas comprobar el receptor antes de esperar a la programación.

Rangos de fechas

Formatos del payload

Métricas de salud (totales diarios, JSON)

La misma estructura que las métricas de Health Auto Export (una lista metrics de name, units y data con qty), así que un receptor escrito para esa app solo necesita pequeños cambios: aquí las fechas son días simples, no marcas de tiempo, y los payloads de entrenamientos y fuerza de abajo son propios de Marrow. Los valores están en la unidad almacenada que indica units (kg, m, mL, degC, kcal, count). La frecuencia cardiaca llega como el Avg, Min y Max de cada día en bpm, y el sueño como cada noche con sus fases en horas. Convierte en tu lado si quieres unidades imperiales.

{"data": {"metrics": [
  {"name": "body_mass", "units": "kg",
   "data": [{"date": "2026-09-11", "qty": 81.3}]},
  {"name": "step_count", "units": "count",
   "data": [{"date": "2026-09-11", "qty": 8746}]},
  {"name": "heart_rate", "units": "bpm",
   "data": [{"date": "2026-09-11", "Avg": 71, "Min": 52, "Max": 148}]},
  {"name": "sleep_analysis", "units": "h",
   "data": [{"date": "2026-09-11", "totalSleep": 7.2, "asleep": 7.2, "deep": 1.1, "rem": 1.6, "core": 4.3, "awake": 0.2,
             "sleepStart": "2026-09-10 23:36:00 -0400", "sleepEnd": "2026-09-11 07:02:00 -0400"}]}
]}}

Las muestras sin procesar (la agrupación Muestras sin procesar) envían cada muestra con su hora de inicio y de fin en lugar de un total diario. Las métricas en CSV llegan como la tabla ancha descrita en la página de archivos.

Entrenamientos

{"data": {"workouts": [
  {"activity": "Running", "start": "2026-09-11T18:43:41Z", "end": "2026-09-11T19:13:53Z",
   "duration_min": 30.2, "kcal": 512, "distance_mi": 3.06, "avg_hr": 174, "source": "Apple Watch"}
]}}

Registro de fuerza

Cada serie de trabajo (los calentamientos se dejan fuera), más el progreso por ejercicio y el volumen por grupo muscular. Los pesos están en la unidad que elegiste en Ajustes, Unidades. El campo unit indica cuál. El set_type de cada serie es work, failure o drop, y una serie también lleva rir cuando registraste repeticiones en reserva. set_credits cuenta las series acreditadas a un grupo muscular, en fracciones cuando un ejercicio trabaja varios grupos.

{"data": {"unit": "lb",
  "sets": [{"time": "2026-09-11T17:02:00Z", "session": "Push day", "exercise": "Bench Press",
            "set": 1, "weight": 185, "reps": 8, "est_1rm": 229.6, "set_type": "work"}],
  "exercises": [{"exercise": "Bench Press", "best_est_1rm": 229.6,
                 "sessions": [{"date": "2026-09-11T17:02:00Z", "sets": 3, "top_weight": 185, "top_reps": 8, "est_1rm": 229.6, "volume": 3885}]}],
  "muscle_groups": [{"group": "Chest", "volume": 3108.0, "set_credits": 2.4}]
}}

Diario de nutrición

{"data": {"days": [
  {"day": "2026-09-11", "entries": [
    {"meal": "breakfast", "name": "Oatmeal", "grams": 250, "kcal": 300,
     "protein_g": 10, "carbs_g": 54, "fat_g": 5, "logged_at": "2026-09-11T12:10:00Z",
     "nutrients": {"dietary_fiber": 8.0, "dietary_sugar": 1.2}}
  ]}
]}}

Escribir un receptor

Vale cualquier cosa que acepte un POST HTTPS y responda 2xx: un servicio de webhooks, una función sin servidor, un script en un servidor casero. Tres reglas lo mantienen robusto:

Un receptor en Python de doce líneas que archiva cada envío:

from http.server import BaseHTTPRequestHandler, HTTPServer
import time

class H(BaseHTTPRequestHandler):
    def do_POST(self):
        body = self.rfile.read(int(self.headers.get("Content-Length", 0)))
        with open(f"marrow-{int(time.time())}.json", "wb") as f:
            f.write(body)
        self.send_response(200)
        self.end_headers()

HTTPServer(("0.0.0.0", 8798), H).serve_forever()

Ponlo detrás de HTTPS (un Cloudflare Tunnel, Tailscale Funnel o cualquier proxy inverso) y apunta la automatización hacia él. Si lo que quieres es una copia consultable en lugar de una carpeta de archivos, el espejo autoalojado es ese receptor ya escrito.

Conviene saber

Solución de problemas

Prueba con Ejecutar ahora. La línea de debajo dice qué pasó, y Más opciones, Registro de actividad guarda las últimas 30 ejecuciones con la misma línea. Activa Notificar al ejecutarse (Más opciones) para recibir una notificación en cada ejecución mientras compruebas.

Lo que muestra MarrowQué hacer
Un resumen de lo que se envió, como 12 diary entriesEntregado: el receptor respondió 2xx. Si no aparece nada en su lado, mira las últimas filas de abajo.
Server answered 401 o 403El receptor quiere un encabezado, o el que añadiste es incorrecto. Comprueba su nombre y valor, incluido Bearer y el espacio que va después.
Server answered 404Dirección incorrecta, o el receptor no está escuchando. En n8n, usa la Production URL y activa el flujo de trabajo. Comprueba que no falte una ruta al final.
Server answered 405La dirección no admite un POST. Apunta al endpoint pensado para recibir datos.
Server answered 413El payload es demasiado grande para el receptor. Elige un rango de fechas más corto, menos métricas, o Totales diarios en lugar de Muestras sin procesar.
Server answered 500 u otro 5xxEl receptor falló al procesarlo. Mira su propio registro. Archiva primero el cuerpo sin procesar y luego analízalo.
Se ha agotado el tiempo de espera de la solicitudEl receptor tardó más que el tiempo de espera. Responde primero y trabaja después, o sube el Tiempo de espera en Más opciones (hasta 300 s).
La política de seguridad de transporte de la app requiere el uso de una conexión seguraLa dirección es http sin cifrar en internet. Usa https. iOS deja que Marrow use http sin cifrar solo en tu propia red.
No se pudo encontrar un servidor con el nombre de host especificadoUna errata en la dirección, o un nombre que solo conoce tu red doméstica. Compruébalo en Safari en el teléfono.
No valid URL - set an https endpoint firstLa dirección está vacía o no empieza por https:// (o http:// en tu propia red).
Nothing to export in this rangeNo hay datos de ese tipo en el rango de fechas. Elige un rango más largo en Más opciones, o registra algo primero.

Las soluciones para cada herramienta están en su página: n8n, Zapier, Make, Home Assistant, Google Sheets, InfluxDB, cualquier URL.