Marrow Health
DE
Download

Automationen: deine Daten, nach Zeitplan gesendet

Marrow kann eine Datei mit deinen Gesundheitsdaten per POST an eine beliebige URL senden, in dem Takt, den du wählst, direkt vom Handy aus. Diese Seite ist die Referenz: wie du eine einrichtest, wie jede Payload aussieht und wie du etwas schreibst, das sie empfängt.

Fertige Einrichtungen für n8n, Zapier, Make, Home Assistant, Google Sheets und InfluxDB findest du unter Verbindungen.

Alle Marrow-Anleitungen: MCP · Selbst gehosteter Spiegel · Automationen · Dateien · Support

Was eine Automation ist

Ein gespeicherter Auftrag unter Exportieren, Automatisiert: eine Art von Daten, ein Format, ein Zeitraum, eine URL, ein Takt. Marrow baut die Datei aus seinem geprüften Speicher und sendet sie bei geschlossener App per POST an die URL, nach jeder Synchronisierung und bei jeder Hintergrundaktualisierung, sobald der Takt abgelaufen ist. Nichts läuft über uns: Das Handy spricht direkt mit deinem Endpunkt.

Eine einrichten

  1. Tab „Exportieren“, Automatisiert: Schalte es ein und tippe dann auf Neue Automation. Wenn du sie von der Seite eines Tools aus anlegst (n8n, Zapier, Home Assistant und die übrigen unter Verbindungen), trägt die Automation den Namen dieses Tools und sagt bei jedem Feld, was das Tool dort erwartet.
  2. Adresse: die https-URL, an die gesendet werden soll. Header: alle, die dein Empfänger braucht (ein Authorization-Bearer-Token, ein X-Gitlab-Token, was auch immer). Braucht das Tool keine, findest du „Header hinzufügen“ unter „Weitere Optionen“.
  3. Daten: Gesundheitsmetriken, Trainings, Kraft-Protokoll, Ernährungstagebuch oder Symptome und Stimmung, als JSON oder CSV. Eine Automation trägt eine Art, also lege pro gewünschter Art eine an. Jede, die eingeschaltet ist, zählt als Verbindung: Kostenlos erlaubt 1 Verbindung gleichzeitig, Marrow Pro bis zu 10, KIs und Server eingeschlossen.
  4. Takt: alle so und so viele Minuten, Stunden oder Tage. Zeitraum, Aggregation und Timeout findest du unter Weitere Optionen.
  5. Jetzt ausführen sendet eine erste Payload, damit du den Empfänger prüfen kannst, bevor der Zeitplan greift.

Zeiträume

Aufbau der Payloads

Gesundheitsmetriken (Tagessummen, JSON)

Dieselbe Struktur wie die Metriken von Health Auto Export (eine metrics-Liste mit name, units und data mit qty), ein für diese App geschriebener Empfänger braucht also nur kleine Änderungen: Die Datumsangaben sind hier reine Tage, keine Zeitstempel, und die Payloads für Trainings und Kraft weiter unten sind Marrows eigene. Die Werte stehen in der gespeicherten Einheit aus units (kg, m, mL, degC, kcal, count). Die Herzfrequenz kommt als Avg, Min und Max jedes Tages in bpm, der Schlaf als jede Nacht mit ihren Phasen in Stunden. Rechne auf deiner Seite um, wenn du imperiale Einheiten willst.

{"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"}]}
]}}

Rohdaten (die Gruppierung Rohdaten) senden jeden Messwert mit Start- und Endzeit statt einer Tagessumme. CSV-Metriken kommen als die breite Tabelle, die auf der Seite zu den Dateien beschrieben ist.

Trainings

{"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"}
]}}

Kraft-Protokoll

Jeder Arbeitssatz (Aufwärmsätze bleiben draußen), dazu der Fortschritt pro Übung und das Volumen pro Muskelgruppe. Die Gewichte sind in der Einheit angegeben, die du unter Einstellungen, Einheiten gewählt hast. Das Feld unit sagt, welche. Der set_type jedes Satzes ist work, failure oder drop, und ein Satz enthält auch rir, wenn du Wiederholungen in Reserve eingetragen hast. set_credits zählt die Sätze, die einer Muskelgruppe gutgeschrieben werden, in Bruchteilen, wenn eine Übung mehrere Gruppen trainiert.

{"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}]
}}

Ernährungstagebuch

{"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}}
  ]}
]}}

Einen Empfänger schreiben

Alles, was einen HTTPS-POST akzeptiert und mit 2xx antwortet, funktioniert: ein Webhook-Dienst, eine Serverless-Funktion, ein Skript auf einem Heimserver. Drei Regeln halten ihn robust:

Ein Python-Empfänger mit zwölf Zeilen, der jeden Post archiviert:

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()

Stelle ihn hinter HTTPS (einen Cloudflare Tunnel, Tailscale Funnel oder einen beliebigen Reverse-Proxy) und richte die Automation darauf aus. Wenn du eine abfragbare Kopie statt eines Ordners voller Dateien willst: Der selbst gehostete Spiegel ist dieser Empfänger, schon fertig geschrieben.

Gut zu wissen

Fehlerbehebung

Teste mit Jetzt ausführen. Die Zeile darunter sagt, was passiert ist, und unter Weitere Optionen, Aktivitätsprotokoll stehen die letzten 30 Läufe mit derselben Zeile. Schalte Beim Ausführen benachrichtigen (Weitere Optionen) ein, um bei jedem Lauf eine Benachrichtigung zu bekommen, während du prüfst.

Was Marrow anzeigtWas du tun kannst
Eine Zusammenfassung dessen, was gesendet wurde, etwa 12 diary entriesZugestellt: Der Empfänger hat mit 2xx geantwortet. Wenn bei ihm nichts auftaucht, siehe die letzten Zeilen unten.
Server answered 401 oder 403Der Empfänger verlangt einen Header, oder der von dir hinzugefügte ist falsch. Prüfe Namen und Wert, einschließlich Bearer und des Leerzeichens danach.
Server answered 404Falsche Adresse, oder der Empfänger hört nicht zu. Nutze in n8n die Production URL und aktiviere den Workflow. Prüfe, ob am Ende ein Pfad fehlt.
Server answered 405Die Adresse nimmt keinen POST an. Richte sie auf den Endpunkt aus, der für eingehende Daten gedacht ist.
Server answered 413Die Payload ist zu groß für den Empfänger. Wähle einen kürzeren Zeitraum, weniger Metriken oder Tagessummen statt Rohdaten.
Server answered 500 oder ein anderer 5xxDer Empfänger ist bei der Verarbeitung gescheitert. Sieh in sein eigenes Log. Archiviere zuerst den rohen Body, dann parse ihn.
Zeitüberschreitung bei der AnforderungDer Empfänger hat länger gebraucht als das Timeout. Antworte zuerst und arbeite danach, oder erhöhe Timeout unter Weitere Optionen (bis 300 s).
Die App Transport Security-Richtlinie erfordert die Verwendung einer sicheren VerbindungDie Adresse ist reines http im Internet. Nutze https. iOS erlaubt Marrow reines http nur in deinem eigenen Netzwerk.
Es konnte kein Server mit dem angegebenen Hostnamen gefunden werdenEin Tippfehler in der Adresse, oder ein Name, den nur dein Heimnetz kennt. Prüfe sie in Safari auf dem Handy.
No valid URL - set an https endpoint firstDie Adresse ist leer oder beginnt nicht mit https:// (oder http:// in deinem eigenen Netzwerk).
Nothing to export in this rangeKeine Daten dieser Art im Zeitraum. Wähle unter Weitere Optionen einen längeren Zeitraum oder trage zuerst etwas ein.

Lösungen für jedes Tool einzeln stehen auf seiner Seite: n8n, Zapier, Make, Home Assistant, Google Sheets, InfluxDB, beliebige URL.