Apple Health data can land in Airtable automatically. An iPhone app called Health Auto Export posts my Apple Watch numbers to an n8n webhook every hour, and the workflow writes 14 fields (sleep, heart rate, HRV, steps) onto the same Daily Log row where I log food, mood and symptoms. Every Sunday a report reads the joined week. Here’s the Apple Health to Airtable build, the traps, and why I share health data with an AI on purpose.

This post contains affiliate links. If you sign up through one, I earn a commission at no extra cost to you. I only point to tools I actually use or would recommend.
The Sunday paste
For most of this year my Sunday evening had a ritual in it. I’d open my Food and Mood log in Airtable, copy a week of entries, paste the whole mess into a chat, and ask what lined up. Did the headache days share anything? Was the low-energy stretch the week I skipped the walks? The answers were useful about half the time. The pasting was tedious every time.
In July I built a workflow to do the pasting for me. It reads the last seven days and emails me a report on Sunday at six. It was fine. It was also working with one hand, because everything in the log was something I had typed. How I slept, what my heart was doing overnight, whether I moved at all: my watch knew all of it and my log knew none of it.
So in August I got the watch to write into the same row. The log now has 111 days of body data sitting next to the notes, back to mid-May thanks to a one-time export of the history, and the Sunday report finally has both halves of the week to read.
What does an Apple Health to Airtable sync do?
An Apple Health to Airtable sync copies the numbers your watch collects into a table you own, once a day, without you touching it. Mine goes a step further: it writes those numbers onto the row I was already filling in by hand, so each day is one record with a machine half and a human half.
The machine half is 14 fields. The human half is whatever I logged that day. Side by side, a row looks like this:
| Machine-written (from the watch) | Hand-written (by me) |
|---|---|
| Sleep hours, deep and REM minutes | Mood and energy, 1 to 5 |
| Resting heart rate, HRV, respiratory rate | Food, linked from a food library |
| Blood oxygen, breathing disturbances | Symptoms, with a severity score |
| Steps, active energy, exercise minutes | Supplements and habit check-ins |
| Time in daylight, sleeping wrist temperature | Notes, and anything that happened |
| Workout minutes and average workout heart rate | Weather and moon phase, from a separate nightly workflow |
Every machine field carries a description saying it’s machine-written, so I never type into one by accident. Over the 111 days I have so far, the averages are 7.7 hours of sleep, a resting heart rate of 66, an HRV of 39.5 milliseconds, and 2,973 steps a day. More on that last one later.

Who is an Apple Health to Airtable sync for?
It’s for anyone who already logs something by hand and wants their watch data next to it. It isn’t for anyone who doesn’t. The watch numbers on their own already live in the Health app, sorted and charted. Piping them into Airtable with nothing to join them to gets you a second copy of your step count and a webhook to maintain.
It’s for you if:
- You keep a food, mood, symptom or workout log somewhere and wish it knew how you slept
- You’d rather own 111 days in a table you can sort than scroll a phone app one day at a time
- You’re comfortable with a self-hosted automation tool and a little JSON
It’s not for you if:
- You don’t log anything by hand yet. Start there. Mood, 1 to 5, for a week, is enough. The plain version of that habit is on my other blog, in how to track your energy.
- You’re on Android. The export app I use is iPhone only, and I haven’t tested the other routes.
- You want a diagnosis. This notices patterns in one person’s week. It doesn’t know what they mean, and neither does the AI reading them.
What do you need to build an Apple Health sync?
You need a way to get data out of the watch, somewhere for the webhook to live, a table to write into, and something to build it with. Here’s my list and what each piece does.
| Tool | What it does here | Paid or free |
|---|---|---|
| Apple Watch and iPhone | Collects the numbers. Apple Health is where they sit before export. | Already owned |
| Health Auto Export (iPhone app by Lybron Sobers) | Posts Apple Health data to a webhook on a schedule. The paid tier is what enables background sync and the REST export. | Paid tier for this |
| n8n on a Hostinger VPS | Receives the webhook, normalizes the data, writes to Airtable, runs the watchdog and the Sunday scan | Paid hosting, no per-run cost |
| Airtable | Holds the Daily Log and the Weekly Reviews table | Paid. I pay for it and it runs most of my life. |
| Claude Code | Built the workflows and the parser with me | Paid subscription |
| Claude via the API | Writes the Sunday report from the seven joined rows | Pay per use |
I wrote up how mine got onto a VPS in Self-host n8n on Hostinger: I used the one-click template.
How does an Apple Health sync work?
It works in four pieces, all of them n8n workflows: an hourly push from the phone, a parser that writes the row, a daily watchdog, and the Sunday scan. Only the first two are required. The other two are what make it something I still use in September.
The push. Health Auto Export runs two automations on my phone, one for health metrics and one for workouts, because the app’s data-type picker only allows one per automation. Both point at the same webhook. The webhook has no login. Its security is a long random string in the path, and the URL never appears anywhere public.
The parser. Nine nodes. It normalizes metric names, reads the units field and converts what needs converting (kilojoules to calories, Celsius to Fahrenheit, a blood oxygen reading that arrives as 97.4 one day and 0.974 the next), and caps a single push at 60 days so a full history export can’t flood the table. Then it does the part I’d have gotten wrong without testing: it looks up which dates already have a row and splits them into create and update itself. Airtable’s built-in upsert won’t match on a date field, so a simpler version made a new row every hour. The workflow answers each push with a list of the metrics it didn’t recognize, which I’ll come back to.
The watchdog. Six nodes, 10am daily. It finds the newest Daily Log row that has watch numbers in it, and if that row is two or more days old, it emails me one line saying the export has stopped. Phone exports die for boring reasons, an iOS update, a permissions reset, and without this I’d only notice when a Sunday report came back half empty.
The scan. Twenty nodes, Sundays at 6pm. It pulls the last seven Daily Log rows, both halves, plus context from a separate health file, and hands the lot to Claude with instructions to compare my numbers against my own previous weeks only, never a population average, and to never diagnose anything. It writes a week score, what lined up, what didn’t, and one experiment for the coming week. The report lands in a Weekly Reviews table and in my inbox. Eight reports so far, and the scores have sat between 3 and 4 out of 5, which sounds about right for a person.
One parsing detail for anyone building the scan: the model sometimes emits a false-start JSON object before the real one. The parser keeps the last valid object, not the first, and that fixed a week of garbled reports.

Get the skill
The generator below builds your version. Pick what’s on your wrist, tick what you already log by hand, choose which numbers you want next to those notes, and say where the row lives. It writes a build prompt for Claude Code with the unit conversions, the upsert trap, the 60-day cap and the watchdog already in it, and, if you want the Sunday report, a skill file that writes it.
Two things to make it yours. First, the hand-logged half is the whole point, so if you tick nothing there the plan will tell you to start a one-field mood log before any plumbing, and it means it. Second, the Apple Watch route names the export app I use. For any other wearable the plan tells you to check the maker’s export options rather than guessing an app name, because I haven’t tested them and I’m not going to pretend I have.
If you take the skill route, paste the output into Claude Code and tell it to save the skill. It writes the file for you. I do the same with every skill I run, and I wrote up why in I don’t install Claude Code skills, I customize them.
Yes, I send my health data to an AI
I know. A lot of people are going to read “my sleep, heart rate and symptoms go to an AI every Sunday” and lose their minds a little. I’ve read the arguments and I don’t disagree with most of them. I just can’t seem to care enough to stop, because knowing my own data has been worth more to me than keeping it in a silo I never look at. Maybe I should care more. That’s a real possibility and I’m not going to argue you out of it.
So, plainly: this is my personal tracker and my personal call. It isn’t medical advice, the report isn’t a doctor, and nothing in it should change what you take or stop taking without talking to one. If you build your own, you’re sending your health data to an export app and to whichever AI provider you pick, at your own risk. Read both of their data terms before the first push, and keep the base private.
What it doesn’t do
It doesn’t use everything the phone sends. Health Auto Export ships every metric I have turned on, which is around 31 of them, and the parser maps 14. The other 17 come back in the webhook response as “unmatched” and get ignored on purpose. Walking asymmetry and stair descent speed are real numbers about my body, and I have no idea what I’d do with them next to a food log.
It doesn’t spare my feelings about steps. The 111-day average is 2,973 a day. The tracker records that without comment every single morning, and I’d be lying if I said I enjoy seeing it in a table I built myself. The watch showed me the same number for years. Somehow a spreadsheet makes it count.
Frequently asked questions
How do I export Apple Health data to Airtable automatically?
Use an iPhone app that can post Apple Health data to a webhook on a schedule, then have a workflow tool receive the post and write to Airtable. I use Health Auto Export on the phone and a self-hosted n8n workflow for the receiving end. The workflow needs to look up existing rows by date before writing, because Airtable’s upsert won’t match on a date field.
Does Apple Health have an API I can call directly?
No. Apple Health has no cloud API, so nothing outside your phone can pull the data. Everything has to be pushed out from the device by an app with Health permissions. That’s why the export app runs on the phone and sends the data outward on a schedule.
How often does the Apple Health sync run?
Mine posts hourly, and each post carries the current day’s summary so the row fills in as the day goes on. Sleep numbers arrive once the watch has processed the night, usually by mid-morning.
Can I backfill old Apple Health data into Airtable?
Yes, by running a one-time export of existing data from the phone app with a wide date range. Mine reached back to May 17 and added about three months of history in one go. The workflow caps any single push at 60 days and reports what it skipped, so a large backfill takes a couple of runs.
Is it safe to send health data to an AI for a weekly report?
That depends on the provider’s data terms and on your own comfort, and only you can decide the second part. I read the terms, I keep the base private, and I’ve chosen to do it. Treat the report as pattern-spotting on one person’s week, never as medical advice, and don’t change medications or supplements because of it.
What should I log by hand for the sync to be useful?
One thing you care about, scored 1 to 5, every day. Mood is the easiest and the most useful. Add food, symptoms or workouts once the habit holds. The sync is only interesting when there’s a note for the numbers to sit next to.
Try it yourself
The build that makes watch data useful is one row per day with the machine numbers and your own notes in it, not the export by itself. So start with the row. Whatever you already write down, get one machine number into that same row this week. Sleep hours is the easiest. Run the generator above when you’re ready for the rest, and let the Sunday report wait until there’s a week worth reading.
A tool I built
Recipe Column Cards
A Chrome extension that prints any recipe page as one engineered grid card, ingredients down the left, steps flowing right. Three free prints a month.
Print your first card →I run an affiliate program on the tools I build. Approved affiliates earn 20% on what their referrals pay, for up to a year. US only for now. See the program →
Related reading
- My Pilates progress tracker: 79 classes, 24 moves, one Airtable base
- Self-host n8n on Hostinger: I used the one-click template
- Build your own reading tracker with Airtable and n8n
- I don’t install Claude Code skills, I customize them
Subscribe if you haven’t already, and in the meantime, go forth and put one number next to one note.
