2026-05-09 · voice notes to notion apple watch

From wrist tap to Notion: the capture-first workflow

You've solved the fast capture problem (wrist tap on Apple Watch, voice note saved in 2 seconds). You've not solved the what happens next problem.

This post walks through a workflow I use daily: voice note captured on Watch → transcribed on iPhone → webhook'd into Notion (or Obsidian or your S3 — same architecture).

If you're using blip Pro, this is built in. If you're using a different capture tool, the same architecture applies — the trick is the webhook + the receiver, not the specific capture app.

The capture-first principle, restated

Most "voice notes to my second brain" tutorials get the architecture backwards. They have you:

  1. Capture voice note
  2. Open the receiving app (Notion / Obsidian)
  3. Paste the transcript
  4. File it correctly

This is wrong. By step 2, you've broken the capture flow. The act of "opening Notion to file the note" is exactly the kind of cognitive overhead the wrist-tap was supposed to skip.

Better architecture:

  1. Capture voice note (wrist tap, 2 seconds)
  2. Transcript appears on phone automatically (sub-minute)
  3. Webhook fires, the note arrives in Notion's "Inbox" page automatically
  4. You never touch the receiving app at the moment of capture
  5. Weekly review: open Notion, triage the inbox

This separates capture (in-motion, 2 seconds) from organization (at-rest, weekly). Which is the only way it actually works long-term.

The plumbing

1. The capture endpoint

Whatever app you use to capture must support webhooks — a URL it POSTs the transcript (and optionally the audio file) to whenever a new recording finishes.

Apps that support this in 2026:

If your app doesn't support webhooks, you need an iOS Shortcut as the bridge. Set it up once; it runs forever.

2. The webhook payload

A reasonable schema for a voice note webhook:

{
  "id": "blip_2026-05-09_14-32-04",
  "captured_at": "2026-05-09T17:32:04Z",
  "duration_seconds": 23,
  "transcript": "Memo to self — that's exactly the headline we need for the new pricing page. Short, visual, says nothing about features.",
  "audio_url": "https://blip-user-audio.s3.amazonaws.com/<signed-url>",
  "language": "en-US",
  "device": "Apple Watch Series 10",
  "metadata": {
    "location_hint": "walking" // optional, derived from CoreMotion
  }
}

3. The receiver — Notion

You need a Notion integration token and the database ID where notes should land. Setup once at https://notion.so/my-integrations.

A Cloudflare Worker (or AWS Lambda) endpoint that turns the webhook into a Notion page:

// Cloudflare Worker, deployed to https://your-worker.workers.dev/blip-to-notion
export default {
  async fetch(request, env) {
    const note = await request.json();
    const databaseId = env.NOTION_DATABASE_ID;
    const notionRes = await fetch('https://api.notion.com/v1/pages', {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${env.NOTION_TOKEN}`,
        'Content-Type': 'application/json',
        'Notion-Version': '2022-06-28',
      },
      body: JSON.stringify({
        parent: { database_id: databaseId },
        properties: {
          Name: { title: [{ text: { content: note.transcript.slice(0, 80) }}]},
          Captured: { date: { start: note.captured_at }},
          Duration: { number: note.duration_seconds },
        },
        children: [{
          object: 'block',
          type: 'paragraph',
          paragraph: {
            rich_text: [{ type: 'text', text: { content: note.transcript }}],
          },
        }],
      }),
    });
    return new Response('ok', { status: 200 });
  }
};

Deploy that, paste the Worker URL into your capture app's webhook setting, and you're done. Every voice note you capture on Apple Watch shows up in Notion as a new page in your Inbox database within ~30 seconds.

4. The receiver — Obsidian (or any markdown vault)

If you use Obsidian instead, the architecture is the same but the receiver writes to a Git-synced vault or to a file in iCloud Drive that Obsidian watches.

Easiest path: a Worker that commits to a GitHub repo:

// pseudo — commit transcript as a new markdown file
const filename = `inbox/${note.id}.md`;
const content = `---\ncaptured: ${note.captured_at}\nduration: ${note.duration_seconds}s\n---\n\n${note.transcript}\n`;
await fetch(`https://api.github.com/repos/${USER}/${VAULT_REPO}/contents/${filename}`, {
  method: 'PUT',
  headers: { 'Authorization': `Bearer ${GITHUB_TOKEN}` },
  body: JSON.stringify({
    message: `note: ${filename}`,
    content: btoa(content),
  }),
});

Obsidian's Git plugin pulls the new file into your vault. Done.

5. The receiver — your own S3

If you don't want any third-party tool involved, just dump every transcript into your own S3 bucket and run a daily cron that surfaces them in whatever review tool you choose. blip Pro can webhook directly to S3 with a presigned PUT URL.

The weekly review (the part everyone skips)

Capture-first only works long-term if you have a trusted organization step. Otherwise the inbox grows forever and you stop trusting that capture matters.

My version:

If you spend more than 20 minutes a week organizing your voice notes, your capture tool isn't the problem — your organization habit is over-engineered. Most people read maybe 2% of what they capture. Calibrate to that reality.

Try blip free + Pro for the webhook

blip free is on-device only — no webhooks (no servers see your audio). Pro tier ($4.99/mo) adds the webhook layer described above, plus Whisper transcription in 50+ languages.

tapblip.com

If you set up a clever Notion / Obsidian / Slack receiver, marcelo@tapblip.com — I'll add it to the docs.


Next post: how to triage voice-memo inboxes in 20 minutes a week without it becoming a chore.

Try blip free.

Voice notes for Apple Watch. Tap your wrist before the thought's gone.

Get blip →