NestMate
Open the app
Smart Nursery Setup

Connect Your Smart Devices

NestMate is the only baby app that natively syncs with your Owlet Smart Sock and Snoo bassinet — and connects to your smart home via Home Assistant.

🧦

Owlet Smart Sock

Auto-log pulse ox, heart rate, and motion from your baby's Smart Sock

NestMate connects directly to the Owlet cloud using the same credentials as your official Owlet app. Once linked, every session is automatically pulled into your NestMate timeline — no manual entry required.

✓ O₂ saturation ✓ Heart rate ✓ Movement ✓ Session history ✓ Accuracy dashboard
ℹ️

Compatible devices: Owlet Smart Sock 3 and Dream Sock. The older Smart Sock 2 is not supported by the Owlet cloud API.

Requirements

  • An active Owlet account (the same one used with the official Owlet app)
  • Owlet Smart Sock 3 or Dream Sock paired and working in the Owlet app
  • NestMate account with a baby profile created

Setup

  1. Open Settings in NestMate

    Tap the profile icon in the top-right corner of the home screen, then select Settings → Integrations.

  2. Tap "Connect Owlet"

    Find the Owlet card and tap Connect. You'll be prompted to enter your Owlet account credentials.

  3. Enter your Owlet email and password

    Use the same email and password you use to sign in to the official Owlet app. NestMate stores these securely using the device's encrypted keychain — they are never sent to NestMate's servers.

  4. Select your device

    NestMate will fetch the Owlet devices linked to your account. Select the Smart Sock paired to your baby.

  5. Link to a baby profile

    Choose which NestMate baby profile this Owlet device belongs to. Data will be tagged to that baby going forward.

  6. Done — data starts flowing

    NestMate will start syncing Owlet session data automatically. Live readings appear on your home screen when the Sock is active. Historical sessions from the past 30 days are imported on first connect.

💡

Tip: Keep both the Owlet app and NestMate installed. The Owlet app is still required to configure the Sock's alert settings. NestMate reads the data; the Owlet app manages device settings.

What Gets Synced

Data point Sync frequency Notes
O₂ saturation (%) Live (when app is open) Displayed on home screen
Heart rate (bpm) Live (when app is open) Displayed on home screen
Movement / motion Live (when app is open) Used in sleep session correlation
Session start / end On sync (background) Auto-creates sleep entries
Historical sessions First connection (30 days) One-time historical import
🛏️

Snoo Smart Bassinet

Sync Snoo sleep sessions automatically into NestMate's sleep tracking

The Snoo is one of the most data-rich baby products ever made — but that data was locked inside the Happiest Baby app. NestMate connects directly to the Snoo API so every session, level change, and soothing event appears in your unified sleep timeline alongside your manual logs.

✓ Sleep sessions ✓ Soothe levels ✓ Feeding journals ✓ Pumping logs ✓ Historical import

Requirements

  • A Snoo smart bassinet (any generation)
  • An active Happiest Baby account (same login used with the SNOO app)
  • The Snoo paired and set up in the official SNOO app
  • NestMate account with a baby profile created

Setup

  1. Open Settings in NestMate

    Tap your profile icon → Settings → Integrations.

  2. Tap "Connect Snoo"

    Find the Snoo card and tap Connect.

  3. Sign in with your Happiest Baby credentials

    Enter the email and password you use to sign in to the SNOO app. Credentials are stored securely in your device's encrypted keychain.

  4. Link to a baby profile

    NestMate will detect the babies in your Snoo account. Match each one to the corresponding NestMate baby profile.

  5. Choose your sync start date

    Select how far back you want to import historical data. NestMate can import Snoo sessions, feeding journals, and pumping logs from any date.

  6. Tap "Start Sync"

    NestMate will import your history and continue syncing new sessions automatically. Depending on how much history you import, the first sync may take a minute.

ℹ️

Session refresh rate: Snoo sessions are pulled on a schedule and whenever you open the app. Live real-time streaming is not supported by the Snoo API. Expect sessions to appear in NestMate within a few minutes of your baby waking.

💡

Tip: Once connected, NestMate's AI sleep insights will start correlating your Snoo session levels with other tracked data — feeding timing, diaper changes, and weather — to surface patterns you can actually act on.

What Gets Synced

Data type Direction Details
Sleep sessions Snoo → NestMate Start time, end time, total duration
Soothe levels Snoo → NestMate Level progression within each session
Feeding journals Snoo → NestMate Breast, bottle, solid food entries
Pumping logs Snoo → NestMate Volume and session duration
Historical data One-time import Any date you choose, up to your account start
🏠

Home Assistant

Trigger NestMate logging from HA automations, dashboards, and voice commands

NestMate connects deeply with Home Assistant — log events from automations and dashboards, read your baby's live status as an HA sensor, drive smart devices like a Hatch sound machine using Owlet sleep data, and use Google Home to log diapers and feeds by voice. A guided setup script handles the entire configuration in minutes.

✓ One-command setup ✓ Baby status sensor ✓ Owlet sleep loop-back ✓ Google Home & Siri ✓ Per-caregiver tokens ✓ Two-way sync
⚠️

Home Assistant 2023.6+ required. The rest_command integration used below has been available since HA Core. Make sure your instance is up to date before starting.

Requirements

  • Home Assistant Core 2023.6 or later
  • A NestMate account with a baby profile already created
  • Access to your NestMate integration token and Baby ID
  • Permission to edit configuration.yaml or your HA dashboard automations

Step 1 — Generate an Integration Token

  1. Open NestMate → Settings → Owlet Smart Sock → scroll to Home Assistant

    You'll find the Home Assistant integration section at the bottom of the Owlet settings screen.

  2. Tap "Generate Token"

    NestMate will create a unique bearer token tied to your account. Each caregiver in a family can have their own token — entries logged via HA will be attributed to the token's owner.

  3. Copy your Bearer token and Event Logging URL

    NestMate will display your unique Bearer token and two endpoint URLs. Copy the Event Logging URL (labeled "Event Logging URL (rest_commands)") — you'll paste it into the YAML below. Keep the token secret; it grants write access to your NestMate data.

Step 2 — Quick Setup (Recommended)

Run the NestMate setup script from your Home Assistant Terminal add-on (or any Mac/Linux shell that can reach your HA config directory). It will ask for your token and Baby ID, then generate and install all the YAML files for you — no manual editing required.

bash <(curl -fsSL https://nestmatebaby.com/tools/nestmate_ha_setup.sh)

The script walks you through each step interactively. It will ask if you have an Owlet sock or Hatch sound machine, then generate pre-filled YAML snippets and optionally copy them straight into your HA config directory. A connection test at the end confirms everything is working before you restart Home Assistant.

💡

Prefer to review the files first? Pass --output-dir ~/Desktop/nestmate-ha to generate the YAML to your Desktop instead of copying it directly. You can inspect and merge the files manually before restarting HA.

ℹ️

What does the script do? It generates three YAML files (nestmate_rest_command.yaml, nestmate_automations.yaml, nestmate_scripts.yaml) pre-filled with your token and Baby ID. It does not install anything, does not require root, and will never overwrite existing HA files without asking first.

Manual Setup (Advanced)

If you prefer to configure Home Assistant by hand, add the following to your configuration.yaml. Replace YOUR_ENDPOINT_URL with the Event Logging URL you copied from the app, YOUR_NESTMATE_TOKEN with your Bearer token, and YOUR_BABY_ID with your baby's ID (see note below).

ℹ️

Where is my Baby ID? Open NestMate → Settings → tap the ⋮ menu on your baby's card → Copy Baby ID. It looks like abc123xyz. Paste it in place of YOUR_BABY_ID in every line below.

# configuration.yaml rest_command: # Log the start of a sleep session nestmate_sleep_start: url: "YOUR_ENDPOINT_URL" method: POST headers: Authorization: "Bearer YOUR_NESTMATE_TOKEN" Content-Type: "application/json" payload: '{"action":"sleep_start","babyId":"YOUR_BABY_ID"}' # Log the end of a sleep session nestmate_sleep_stop: url: "YOUR_ENDPOINT_URL" method: POST headers: Authorization: "Bearer YOUR_NESTMATE_TOKEN" Content-Type: "application/json" payload: '{"action":"sleep_stop","babyId":"YOUR_BABY_ID"}' # Log a diaper change (type: wet | dirty | mixed) nestmate_diaper: url: "YOUR_ENDPOINT_URL" method: POST headers: Authorization: "Bearer YOUR_NESTMATE_TOKEN" Content-Type: "application/json" payload: '{"action":"diaper","babyId":"YOUR_BABY_ID","type":"wet"}' # Log the start of a feeding (feedType: breast | bottle | solid) nestmate_feed_start: url: "YOUR_ENDPOINT_URL" method: POST headers: Authorization: "Bearer YOUR_NESTMATE_TOKEN" Content-Type: "application/json" payload: '{"action":"feed_start","babyId":"YOUR_BABY_ID","feedType":"breast"}' # Log the end of a feeding nestmate_feed_end: url: "YOUR_ENDPOINT_URL" method: POST headers: Authorization: "Bearer YOUR_NESTMATE_TOKEN" Content-Type: "application/json" payload: '{"action":"feed_end","babyId":"YOUR_BABY_ID"}'

After editing configuration.yaml, reload Home Assistant (Settings → System → Restart → Quick reload) or call the homeassistant.reload_all service.

Step 3 — Example Automations

Dashboard button

Add a tap-to-log button to any Lovelace dashboard:

# Lovelace button card type: button name: "🛌 Sleep Start" tap_action: action: call-service service: rest_command.nestmate_sleep_start

Presence-based sleep detection

Automatically log a sleep entry when your nursery presence sensor detects the room is quiet:

# automation.yaml - alias: "NestMate — auto-log sleep start" trigger: - platform: state entity_id: binary_sensor.nursery_motion to: "off" for: "00:05:00" # 5 min no motion action: - service: rest_command.nestmate_sleep_start - alias: "NestMate — auto-log sleep end" trigger: - platform: state entity_id: binary_sensor.nursery_motion to: "on" action: - service: rest_command.nestmate_sleep_stop

Google Home & voice commands

No custom Actions or developer account needed. Because Google Home already integrates natively with HA, expose NestMate scripts to Google Assistant and trigger them by voice:

# configuration.yaml — the setup script generates these automatically script: nestmate_log_diaper: alias: "Log diaper change" # Google triggers on this alias sequence: - service: rest_command.log_nestmate_event data: nestmate_payload: '{"type":"nestmate_event","event_type":"diaper","data":{"babyId":"YOUR_BABY_ID","startedAt":"{{ now().isoformat() }}","diaperType":"wet","source":"home_assistant"}}' nestmate_start_sleep: alias: "Start baby sleep" sequence: - service: rest_command.log_nestmate_event data: nestmate_payload: '{"type":"nestmate_event","event_type":"sleep","data":{"babyId":"YOUR_BABY_ID","startedAt":"{{ now().isoformat() }}","source":"home_assistant"}}' # In Google Home, expose these scripts, then say: # "Hey Google, turn on Log diaper change" # "Hey Google, turn on Start baby sleep"
💡

HA Assist (local voice): If you use a local voice assistant via Home Assistant Assist (e.g. a voice satellite or the companion app mic), the same scripts work there too — no cloud required.

Siri Shortcuts: On iPhone, create a Shortcut using Get Contents of URL to call the NestMate API directly — no Home Assistant needed. POST your token as a header and paste the JSON payload. Add it to Siri with "Hey Siri, wet diaper".

ℹ️

Owlet users: If your Owlet sock is on, sleep start and end are detected automatically from biometrics — you don't need a voice command for sleep at all. The voice commands are most useful for diaper changes, bottle feeds, and events that happen when you don't have your phone handy.

Read Your Baby's Status in Home Assistant

NestMate exposes a live status endpoint you can poll as a Home Assistant REST sensor. Once added, attributes like lastFeed.minutesAgo, currentlySleeping, and lastDiaper.minutesAgo are available to any HA automation or dashboard card.

# configuration.yaml — add NestMate as a REST sensor sensor: - platform: rest name: "NestMate Baby Status" resource: "https://us-central1-baby-tracker-beta.cloudfunctions.net/getBabyStatus?babyId=YOUR_BABY_ID" headers: Authorization: "Bearer YOUR_NESTMATE_TOKEN" scan_interval: 300 # poll every 5 minutes value_template: "{{ value_json.currentlySleeping }}" json_attributes: - lastFeed - lastDiaper - lastSleep - lastOwletSample

With this sensor in place, you can build automations using your baby's actual data. Here are some ideas — but the sensor is yours to use however makes sense for your family:

  • Dim the nursery lights automatically when currentlySleeping becomes true
  • Turn on a soft nightlight when lastFeed.minutesAgo > 180 between midnight and 6 am
  • Announce on a speaker: "Baby last fed 2 hours ago" when you ask Google
  • Show last diaper time and last feed time on a Lovelace dashboard card
  • Alert on your phone when lastDiaper.minutesAgo > 240 (possible overdue change)
ℹ️

The lastOwletSample attribute (SpO₂, heart rate, sock connected state) is only populated when the Owlet sock is actively on your baby. It will be null when the sock is off or between sessions.

Owlet + Smart Devices — Closed-Loop Automation

Because NestMate already processes Owlet biometrics into sleep stages, HA can use that sleep state to drive other smart nursery devices — and log what happened back to NestMate so you have a record of every automated action.

Example — Hatch sound machine: When Owlet detects your baby has entered deep sleep, HA lowers the Hatch volume to 20% so the sound doesn't wake them. When deep sleep ends, volume restores to 60%. Both events appear in your NestMate timeline as System entries so you can see exactly when and why your Hatch changed.

💡

The setup script handles this automatically. If you select "Yes" when asked about Owlet and Hatch during setup, the script generates these automations pre-filled with your entity names and token. No YAML editing needed.

The same pattern works for any HA-controllable device — lights, thermostats, white noise speakers, projectors. The key is that the Owlet sock must be on your baby for sleep state detection to work. Without the sock, use manual sleep start/stop triggers instead.

ℹ️

What gets logged to NestMate? Each automation logs a System event to your NestMate timeline: the device that was controlled, the action taken, and why it triggered. These appear distinctly from your hand-logged events so your care history stays clean.

Stream Owlet Sock Data via Home Assistant

If you already have your Owlet Smart Sock connected to Home Assistant (via the Owlet HA integration), you can push live biometric data directly to NestMate — even with the NestMate app closed. NestMate's backend will automatically detect sleep and wake periods from the sensor readings.

ℹ️

This is separate from the rest_commands above. The Owlet biometric endpoint accepts raw sensor readings (heart rate, SpO₂, movement) and derives sleep state automatically. Use this if you want richer sleep analytics beyond a simple start/stop timestamp.

Step 1 — Copy your Owlet Biometric URL

In NestMate → Settings → Owlet Smart Sock → scroll to Home Assistant, tap View Token and copy the Owlet Biometric URL (labeled "Owlet Biometric URL (raw sensor data)"). This is a different URL from the event logging endpoint.

Step 2 — Add an HA automation to forward Owlet data

Add the following to your Home Assistant automation.yaml. This sends a biometric sample to NestMate every time the Owlet sock updates its readings (typically every 1–5 seconds).

# automation.yaml — forward Owlet readings to NestMate - alias: "NestMate — stream Owlet biometrics" trigger: - platform: state entity_id: sensor.owlet_heart_rate # adjust to your entity name action: - service: rest_command.nestmate_owlet_ingest

And in configuration.yaml, add the REST command that builds the sensor payload:

# configuration.yaml rest_command: nestmate_owlet_ingest: url: "YOUR_BIOMETRIC_ENDPOINT_URL" method: POST headers: Authorization: "Bearer YOUR_NESTMATE_TOKEN" Content-Type: "application/json" payload: '{"babyId":"YOUR_BABY_ID","samples":[{"ts":"{{ now().isoformat() }}","heartRateBpm":{{ states("sensor.owlet_heart_rate") | int(0) }},"spo2Percent":{{ states("sensor.owlet_oxygen_level") | int(0) }},"movement":{{ states("sensor.owlet_movement") | int(0) }},"sockConnected":{{ states("binary_sensor.owlet_sock_connected") == "on" }}}]}'
⚠️

Adjust entity IDs to match your setup. Owlet entity names vary depending on your HA integration version. Common names: sensor.owlet_heart_rate, sensor.owlet_oxygen_level, binary_sensor.owlet_sock_connected. Check your HA Developer Tools → States for exact names.

Once running, NestMate will automatically build sleep sessions in the background from the biometric stream — no manual sleep_start/stop needed for Owlet users.

Frequently Asked Questions

No. Your credentials are stored exclusively in your device's encrypted keychain (iOS Keychain or Android Keystore) — the same secure store that holds your banking passwords. They are never transmitted to or stored on NestMate's servers.
No. NestMate reads data from the Owlet and Snoo cloud APIs — it does not modify any settings in those apps or interfere with their operation. Keep your official apps installed; they are still used for device configuration and alerts.
Owlet Smart Sock 3 and Dream Sock are supported. The original Smart Sock 2 uses an older, incompatible cloud API and is not supported. The Owlet Dream Cam and Owlet Monitor Duo are not yet integrated.
Yes. Each caregiver in your NestMate family can generate their own integration token. Entries logged via each token are attributed to that caregiver's account, so your care history stays accurate even when multiple people are logging via Home Assistant.
First, verify your Happiest Baby account credentials are still valid by signing into the official SNOO app. Then open NestMate → Settings → Integrations → Snoo → Re-sync. If the issue persists, try disconnecting and reconnecting the integration. Contact support if the problem continues.
Yes — NestMate's Home Assistant integration is fully first-party and officially supported. It is maintained by the NestMate team and documented here. This is different from unofficial community integrations you may find on forums or GitHub for other apps.
Yes. Go to Settings → Integrations → Home Assistant → Manage Tokens. From there you can revoke individual tokens at any time. Revoking a token immediately invalidates it — any HA automations using that token will stop working until you update them with a new token.
The setup script is a guided bash script that asks for your NestMate integration token and Baby ID, then generates pre-filled YAML files for Home Assistant. It does not install anything, does not require root or admin access, and will never overwrite existing HA config files without asking you first. It runs a connection test at the end to confirm everything is working. If you want to review the files before using them, run the script with --output-dir ~/Desktop/nestmate-ha to save them locally instead.
Yes, in two ways. First, when Owlet detects a sleep state change (like entering deep sleep), HA can act on that — lowering a Hatch sound machine volume, dimming lights, etc. — and log those actions back to your NestMate timeline. Second, you can configure a Home Assistant webhook URL on your NestMate integration token so that when you log an event in the NestMate app (like a feed), HA gets notified and can trigger whatever automation you want. Configure this in NestMate → Settings → Home Assistant → Edit Token → Add Webhook URL.
The Owlet-driven automations (like Hatch volume control based on sleep stage) do require the Owlet sock, since they rely on biometric sleep state detection. The sock is only active when it's on your baby, so these automations only fire during monitored sleep sessions. If you don't have an Owlet, you can still build sleep-based automations using manual sleep start/stop triggers — either from HA dashboard buttons or voice commands via Google Home.

Ready to connect your nursery?

Set up takes less than 5 minutes. Your Owlet and Snoo data starts flowing right away.

Open NestMate