
This article may contain affiliate links. If you buy through these links, the price is the same for you and the store pays me a small commission that helps keep Tecnoyfoto running.
Updated August 27, 2026. You can connect Home Assistant to Google Home without paying for Home Assistant Cloud, but the manual route requires public HTTPS access, a Google Home Developer Console project, OAuth account linking, and configuration inside Home Assistant. The old Actions on Google workflow is no longer the current path.
“Free” means no Home Assistant Cloud subscription. It does not mean maintenance-free: you are responsible for the domain, HTTPS, secure exposure, Google credentials, and future platform changes.
Manual setup or Home Assistant Cloud
| Option | Main benefit | Real cost |
|---|---|---|
| Home Assistant Cloud | Fast setup without port forwarding or custom OAuth | Subscription after the trial. |
| Manual setup | No Nabu Casa fee and direct project control | Time, HTTPS domain, maintenance, and more failure points. |
Prerequisites
- Home Assistant reachable through a public hostname with a valid HTTPS certificate.
- For Local Fulfillment, do not terminate the certificate directly in the Home Assistant HTTP integration; use a properly configured reverse proxy.
- A Google account with access to Google Home Developer Console and Google Cloud Console.
- A recent Home Assistant backup and access to
configuration.yaml. - A safe place for the service-account JSON file; never commit it to GitHub.
Create the Google Home Cloud-to-Cloud integration
- Create or select a dedicated project in Google Home Developer Console.
- Add a Cloud-to-Cloud integration and select the relevant device types.
- Configure OAuth account linking. Use
https://oauth-redirect.googleusercontent.com/r/PROJECT_IDas the Client ID. - Set authorization to
https://YOUR_DOMAIN/auth/authorize, token tohttps://YOUR_DOMAIN/auth/token, and fulfillment tohttps://YOUR_DOMAIN/api/google_assistant. - Save the Project ID for Home Assistant.
Service account and HomeGraph API
- Open the same project in Google Cloud Console.
- Enable the HomeGraph API.
- Create a service account and generate a JSON key. Store it in the Home Assistant configuration folder.
- Restrict access to the key. Keep it out of screenshots, support posts, and public repositories.
Configure Home Assistant
Add a section like the following. Replace the project value and path, and prefer expose_by_default: false so every exposed entity is an intentional decision.
google_assistant:
project_id: YOUR_PROJECT_ID
service_account: !include SERVICE_ACCOUNT.json
report_state: true
expose_by_default: false
entity_config:
light.living_room:
expose: true
room: Living RoomValidate the configuration before restarting. An entity exposed to Google leaves the strictly local trust boundary, so share only what voice control actually needs.
Link Home Assistant in Google Home
- Restart Home Assistant and check the logs.
- In Google Home, choose Add → Works with Google Home and find the test project name.
- Sign in to Home Assistant and approve account linking.
- Assign rooms and test one non-critical light or switch.
- Say “Hey Google, sync my devices” after changing exposure, or use HomeGraph Request Sync when configured.
Optional Local Fulfillment
Local Fulfillment can reduce command latency by sending eligible requests directly to Home Assistant on the LAN. Follow the current Home Assistant and Google instructions for JavaScript and mDNS discovery. Cloud authentication and fallback still exist; this is not a fully offline integration.
Troubleshooting
- Project is missing: use the same Google account and confirm the integration is available for testing.
- Account-linking error: verify public HTTPS, exact URLs, and Project ID.
- Fulfillment returns 404: inspect
/api/google_assistant, reverse proxy, and external reachability. - Devices are absent: inspect exposure rules and run synchronization.
- Credentials expire: review project publishing/test-user status and Google Cloud notices.
- Local Fulfillment fails: verify mDNS and SSL termination architecture.
Security and maintenance
- Enable MFA for Home Assistant administrators.
- Do not expose port 8123 without maintained HTTPS protection.
- Protect the service account and remove obsolete keys.
- After major updates, test linking, synchronization, and one local command.
- Document recovery steps without storing secrets in plain text.
Bottom line
The manual integration remains practical for experienced administrators. Home Assistant Cloud is the better fit when you do not want to maintain OAuth, DNS, and a reverse proxy. Treat the free route as infrastructure: secure it, document it, and test it.
Primary sources: Home Assistant Google Assistant documentation and Google Home Cloud-to-Cloud.
Continue reading
Next related guide · 3 min read
Tapo Cameras in Home Assistant: Official Integration, HACS, and RTSP
Updated August 27, 2026. Tapo cameras can now be added through TP-Link Smart Home, Home Assistant’s official integration. HACS may still provide advanced controls…
Continue with this article

