Google Health
The Google Health integrationIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] allows you to expose health and fitness data from Google Health (including Fitbit, Pixel Watch, and other devices connected to your Google Account) to Home Assistant.
Prerequisites
You need to configure developer credentials to allow Home Assistant to access your Google Account. These credentials are the same as the ones for Google Photos, Nest, Google Tasks, and Google Mail.
Scenario 1: You already have credentials
In this case, all you need to do is enable the API:
- Go to the Google Cloud console Google Health API .
- Confirm that the correct project is selected, then select Enable.
- Continue with the steps described in the Configuration section.
Scenario 2: You do not have credentials set up yet
In this case, you need to generate a client secret first:
To generate client ID and client secret
This section explains how to generate a client ID and client secret in the Google Cloud console.
- Go to the Google Cloud console.
- Select Create or select a project, then New project, enter a project name, and select Create.
- When the project opens, make sure it is selected in the console toolbar at the top. If it isn’t, select it.
- Go to Google Health API , then select Enable.
- Go to the Branding page in the Google Auth Platform Console.
- If Google Auth Platform is not configured, select Get started:
- Under App Information, enter an app name (for example, Home Assistant) and select your email address for User support email. Then select Next.
- Under Audience, select External, then select Next.
- Under Contact Information, enter your email address, then select Next.
- Review the Google API Services User Data Policy. If you agree, select the check box, then select Continue and Create.
- In the left sidebar, select Branding:
- Under App domain, enter
https://home-assistant.iofor Application home page, Application privacy policy link, and Application terms of service link. - Under Authorized domains, add
home-assistant.io.
- Under App domain, enter
- In the left sidebar, select Audience:
- Under Publishing status, select Publish app.
Otherwise, your credentials will expire every 7 days.
- If you leave the app in Testing, under Test users, select Add users, add your Google Account email address, then select Save.
- Under Publishing status, select Publish app.
- In the left sidebar, select Clients:
- Select Create client.
- For Application type, choose Web application and give the client a name (for example,
Home Assistant Client). - Under Authorized redirect URIs, add
https://my.home-assistant.io/redirect/oauth, then select Create.Note: This is not a placeholder. It is the URI that must be used.
- From the resulting dialog, take a note of the Client ID and Client Secret. You cannot retrieve it again after closing the dialog.
- Once you have noted these strings, select Ok to close.
- Congratulations! You are now the keeper of a client secret. Guard it in your treasure box. In most cases, your new credentials will be active within a few minutes. However, Google states that activation may take up to five hours in some circumstances.
Configuration
To add the Google Health service to your Home Assistant instance, use this My button:
Manual configuration steps
If the above My button doesn’t work, you can also perform the following steps manually:
-
Browse to your Home Assistant instance.
-
In the bottom right corner, select the
Add Integration button. -
From the list, select Google Health.
-
Follow the instructions on screen to complete the setup.
The integration setup will next give you instructions to enter the Application Credentials (OAuth Client ID and Client Secret) and authorize Home Assistant to access your Google Health data.
OAuth and authorization steps
- Continue through the steps of selecting the Google Account you want to authorize.
- You will be asked to grant access to specific data in your Google Health account. The integration will dynamically adjust based on the permissions you grant:
- Profile (required): Allows Home Assistant to verify your account identity.
- Activity and fitness (optional): Granting this scope creates sensors for steps, distance, active calories, total calories, and floors.
- Health metrics and measurements (optional): Granting this scope creates sensors for weight, resting heart rate, and body fat.
- Sleep data (optional): Granting this scope creates sensors for time asleep, time awake, time in bed, time to fall asleep, and time after wake-up.
- Nutrition and hydration (optional): Granting this scope creates sensors for hydration and calories consumed.
- Paired devices (optional): Granting this scope creates diagnostic sensors for battery level and last sync time for your paired wearables or devices.
- You may get a message telling you that the app has not been verified. Acknowledge this to proceed.
- You can now see the details of what you are authorizing Home Assistant to access with options at the bottom. Select Continue.
- The page will now display Link account to Home Assistant?, noting Your instance URL. If this is not correct, refer to My Home Assistant. If everything looks good, select Link Account.
- You may close the window and return to Home Assistant, where you should see a Success! message.
Supported functionality
The Google Health integration provides the following entities:
Sensors
Activity sensors
Available for accounts that grant the Activity and fitness scope.
- Active calories: Daily active energy burned.
- Distance: Daily distance.
- Floors: Daily floors climbed.
- Steps: Daily step count.
- Total calories: Daily total calories burned.
Body sensors
Available for accounts that grant the Health metrics and measurements scope.
- Body fat: Body fat percentage.
- Resting heart rate: Daily resting heart rate.
- Weight: Body weight.
Sleep sensors
Available for accounts that grant the Sleep data scope.
- Time asleep: Duration spent asleep during the sleep period.
- Time awake: Duration spent awake during the sleep period.
- Time in bed: Total duration spent in bed during the sleep period.
- Time to fall asleep: Duration taken to fall asleep.
- Time after wake-up: Duration spent in bed after waking up.
Nutrition sensors
Available for accounts that grant the Nutrition and hydration scope.
- Calories consumed: Daily energy consumed.
- Hydration: Daily volume of liquids consumed.
Paired device sensors
Available for accounts that grant the Paired devices scope.
- Battery level (Diagnostic): Battery percentage of paired fitness trackers or smartwatches.
- Last sync time (Diagnostic): Timestamp when the paired fitness tracker or smartwatch last synced data to Google Health.
Google Health automation examples
The real power of this integration is automating your home environment or notifications based on your health metrics. Here are a few ideas to get you started.
You don’t need to edit YAML to use these examples. Copy a YAML snippet from this page, open the automation editor in Home Assistant, and press Ctrl+V (or Cmd+V on Mac). Home Assistant automatically converts the pasted YAML into the visual editor format, whether it’s a full automation, a single trigger, a condition, or an action.
Automation: Step goal reminder
Send a notification in the evening if you have not met your daily step goal.
- Trigger: Time: 20:00 (8:00 PM)
- Condition: Numeric state: steps sensor is below your goal (for example, 10,000 steps)
- Action: Send a notification to your mobile phone
YAML example for step goal reminder
alias: "Reminder to meet daily step goal"
triggers:
- trigger: time
at: "20:00:00"
conditions:
- condition: numeric_state
entity_id: sensor.google_health_steps
below: 10000
actions:
- action: notify.mobile_app_your_phone
data:
message: >
You have only completed
{{ states('sensor.google_health_steps') }} steps today.
Time for a short walk!
Automation: Resting heart rate alert
Notify you if your daily resting heart rate goes above a certain threshold (for example, 80 bpm), which could indicate fatigue or stress.
- Trigger: State: resting heart rate sensor state changes
- Condition: Numeric state: resting heart rate is above 80 bpm
- Action: Send a notification
YAML example for resting heart rate alert
alias: "Alert on high resting heart rate"
triggers:
- trigger: state
entity_id: sensor.google_health_resting_heart_rate
conditions:
- condition: numeric_state
entity_id: sensor.google_health_resting_heart_rate
above: 80
actions:
- action: notify.mobile_app_your_phone
data:
message: >
Your resting heart rate is higher than usual at
{{ states('sensor.google_health_resting_heart_rate') }}
bpm. Make sure to rest!
Data updates
The integration updates sensors on different intervals based on the data type:
- Activity sensors (Steps, Distance, Active calories, Total calories, Floors) are updated every 15 minutes.
- Sleep sensors (Time asleep, Time awake, Time in bed, Time to fall asleep, Time after wake-up) are updated every 15 minutes.
- Nutrition sensors (Hydration, Calories consumed) are updated every 15 minutes.
- Body sensors (Weight, Resting heart rate, Body fat) are updated every hour.
- Paired device sensors (Battery level, Last sync time) are updated every hour.
Known limitations
- Polling frequency: Data is fetched from the Google Health API periodically (every 15 minutes for activity, sleep, and nutrition data; every hour for body measurements and paired devices). Real-time event streaming is not supported.
- Device sync latency: Data displayed in Home Assistant depends on when your fitness tracker, smartwatch, or mobile app syncs its data to Google Health cloud servers.
- Scope-dependent entities: Entities are created dynamically based on the permission scopes granted during the initial OAuth authorization. If a specific scope is unselected, entities for that category will not be created.
- Daily rollups: Activity and sleep sensors reflect cumulative daily totals or aggregate summary metrics for the current calendar day.
Troubleshooting
Resetting a broken or incorrect configuration
If the Google Health integration was initially configured incorrectly, you can delete the credentials in the Application Credentials user interface and start the setup again.
Connection failed after authorization
If authorization appears to succeed but Home Assistant returns a connection error, verify that you granted the required Profile permission. Home Assistant requires the profile scope to verify your account identity and setup the integration.
Removing the integration
This integration follows standard integration removal.
To remove an integration instance from Home Assistant
- Go to Settings > Devices & services and select the integration card.
- From the list of devices, select the integration instance you want to remove.
- Next to the entry, select the three dots
menu. Then, select Delete.