CINXE.COM
Local fulfillment | Cloud-to-cloud | Google Home Developers
<!doctype html> <html lang="en" dir="ltr"> <head> <meta name="google-signin-client-id" content="721724668570-nbkv1cfusk7kk4eni4pjvepaus73b13t.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/developerprofiles https://www.googleapis.com/auth/developerprofiles.award"> <meta property="og:site_name" content="Google Home Developers"> <meta property="og:type" content="website"><meta name="theme-color" content="#00639b"><meta charset="utf-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="/_pwa/home/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//www.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.googleapis.com" crossorigin> <link rel="preconnect" href="//apis.google.com" crossorigin> <link rel="preconnect" href="//www.google-analytics.com" crossorigin><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//fonts.googleapis.com/css2?family=Material+Icons&family=Material+Symbols+Outlined&display=block"><link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/home/css/app.css"> <link rel="shortcut icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/home/images/favicon.png"> <link rel="apple-touch-icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/home/images/touchicon-180.png"><link rel="canonical" href="https://developers.home.google.com/local-home/overview"><link rel="search" type="application/opensearchdescription+xml" title="Google Home Developers" href="https://developers.home.google.com/s/opensearch.xml"> <title>Local fulfillment | Cloud-to-cloud | Google Home Developers</title> <meta property="og:title" content="Local fulfillment | Cloud-to-cloud | Google Home Developers"><meta name="description" content="Develop and test local fulfillment for your existing smart home Action."> <meta property="og:description" content="Develop and test local fulfillment for your existing smart home Action."><meta property="og:url" content="https://developers.home.google.com/local-home/overview"><meta property="og:image" content="https://developers.home.google.com/static/images/home-logo-share.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="675"><meta property="og:locale" content="en"><meta name="twitter:card" content="summary_large_image"><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "dateModified": "2023-06-06", "headline": "Local fulfillment" } </script><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": "Cloud-to-cloud", "item": "https://developers.home.google.com/cloud-to-cloud/get-started" },{ "@type": "ListItem", "position": 2, "name": "Local fulfillment", "item": "https://developers.home.google.com/local-home/overview" }] } </script> <link rel="stylesheet" href="/extras.css"></head> <body class="" template="page" theme="home-theme" type="article" layout="docs" display-toc pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"> <devsite-cookie-notification-bar></devsite-cookie-notification-bar><devsite-header role="banner"> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="googleHomeDevelopers" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <img src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/home/images/lockup.svg" class="devsite-site-logo" alt="Google Home Developers"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> <devsite-tabs class="upper-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Upper tabs"> <tab class="devsite-dropdown "> <a href="https://developers.home.google.com/ways-to-build" track-metadata-eventdetail="https://developers.home.google.com/ways-to-build" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - ways to build" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Ways to build" track-name="ways to build" > Ways to build </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Ways to build" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/ways-to-build" track-metadata-position="nav - ways to build" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Ways to build" track-name="ways to build" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Works with Google Home™ badging program</li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/matter" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/matter" track-metadata-position="nav - ways to build" track-metadata-module="tertiary nav" track-metadata-module_headline="works with google home™ badging program" tooltip data-label="Matter" data-category="Dropdown Ways to Build" > <div class="devsite-nav-item-title"> Matter </div> <div class="devsite-nav-item-description"> New connectivity protocol for more reliability & lower latency </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/cloud-to-cloud" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud" track-metadata-position="nav - ways to build" track-metadata-module="tertiary nav" track-metadata-module_headline="works with google home™ badging program" tooltip data-label="Cloud-to-cloud" data-category="Dropdown Ways to Build" > <div class="devsite-nav-item-title"> Cloud-to-cloud </div> <div class="devsite-nav-item-description"> Connect your cloud backend with the Smart Home API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/local-home" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/local-home" track-metadata-position="nav - ways to build" track-metadata-module="tertiary nav" track-metadata-module_headline="works with google home™ badging program" tooltip data-category="Dropdown Ways to Build" data-label="Local Home SDK" > <div class="devsite-nav-item-title"> Local Home SDK </div> <div class="devsite-nav-item-description"> Add a local fulfillment path to route smart home intents </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column home-dropdown-column"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/apis" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/apis" track-metadata-position="nav - ways to build" track-metadata-module="tertiary nav" tooltip data-label="Home APIs" data-category="Dropdown Ways to Build" > <div class="devsite-nav-item-title"> Home APIs </div> <div class="devsite-nav-item-description"> Leverage Google Home devices, infrastructure, and intelligence in your own app </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/device-sdk" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/device-sdk" track-metadata-position="nav - ways to build" track-metadata-module="tertiary nav" tooltip data-category="Dropdown Ways to Build" data-label="Device SDK" > <div class="devsite-nav-item-title"> Google Home Device SDK </div> <div class="devsite-nav-item-description"> Quickly build Matter devices, integrate with Google Home and access Google's intelligence signals </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/mobile-sdk" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/mobile-sdk" track-metadata-position="nav - ways to build" track-metadata-module="tertiary nav" tooltip data-label="Mobile SDK" data-category="Dropdown Ways to Build" > <div class="devsite-nav-item-title"> Google Home Mobile SDK </div> <div class="devsite-nav-item-description"> Build the best Android Matter apps using Google's Play service APIs and Android developer tool </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column home-dropdown-column"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/device-access" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/device-access" track-metadata-position="nav - ways to build" track-metadata-module="tertiary nav" tooltip data-category="Dropdown Ways to Build" target="_blank" data-label="Device Access" > <div class="devsite-nav-item-title"> Device Access </div> <div class="devsite-nav-item-description"> Add ability to manage and control Nest devices into your smart home solution </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/cast" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cast" track-metadata-position="nav - ways to build" track-metadata-module="tertiary nav" tooltip target="_blank" data-label="Cast SDK" data-category="Dropdown Ways to Build" > <div class="devsite-nav-item-title"> Cast SDK </div> <div class="devsite-nav-item-description"> Turn your app into a remote control and stream audio/video to a Cast-enabled device </div> </a> </li> </ul> </div> </div> </div> </tab> <tab > <a href="https://developers.home.google.com/use-cases" track-metadata-eventdetail="https://developers.home.google.com/use-cases" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - use cases" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Use cases" track-name="use cases" > Use cases </a> </tab> <tab > <a href="https://developers.home.google.com/business-resources" track-metadata-eventdetail="https://developers.home.google.com/business-resources" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - business resources" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Business resources" track-name="business resources" > Business resources </a> </tab> <tab > <a href="https://developers.home.google.com/whats-new" track-metadata-eventdetail="https://developers.home.google.com/whats-new" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - what's new" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: What's new" track-name="what's new" > What's new </a> </tab> <tab class="devsite-dropdown devsite-active "> <a href="https://developers.home.google.com/docs" track-metadata-eventdetail="https://developers.home.google.com/docs" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - docs" track-metadata-module="primary nav" aria-label="Docs, selected" data-category="Site-Wide Custom Events" data-label="Tab: Docs" track-name="docs" > Docs </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Docs" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/docs" track-metadata-position="nav - docs" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Docs" track-name="docs" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/matter/docs" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/matter/docs" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip data-label="Matter" data-category="Dropdown Docs" > <div class="devsite-nav-item-title"> Matter </div> <div class="devsite-nav-item-description"> New connectivity protocol for more reliability & lower latency </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/cloud-to-cloud/docs" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/docs" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip data-label="Cloud-to-cloud" data-category="Dropdown Docs" > <div class="devsite-nav-item-title"> Cloud-to-cloud </div> <div class="devsite-nav-item-description"> Connect your cloud backend with the Smart Home API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/local-home/docs" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/local-home/docs" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip data-label="Local Home SDK" data-category="Dropdown Docs" > <div class="devsite-nav-item-title"> Local Home SDK </div> <div class="devsite-nav-item-description"> Control your devices throughout the Google Home ecosystem </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/app-flip" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/app-flip" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip data-label="App Flip" data-category="Dropdown Docs" > <div class="devsite-nav-item-title"> App Flip </div> <div class="devsite-nav-item-description"> Allow your users to login to your system seamlessly with their Google accounts </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/tools" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/tools" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip data-label="Tools" data-category="Dropdown Docs" > <div class="devsite-nav-item-title"> Tools </div> <div class="devsite-nav-item-description"> Experiment, create, test, and debug your integrations with our suite of tools </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/thread/docs" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/thread/docs" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip data-label="Thread" data-category="Dropdown Docs" > <div class="devsite-nav-item-title"> Thread </div> <div class="devsite-nav-item-description"> An IPv6-based networking protocol designed for low-power Internet of Things devices </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/device-access/registration" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/device-access/registration" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip data-category="Dropdown Docs" data-label="Device Access" target="_blank" > <div class="devsite-nav-item-title"> Device Access </div> <div class="devsite-nav-item-description"> Add ability to manage and control Nest devices into your smart home solution </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/cast/docs/overview" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cast/docs/overview" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip data-category="Dropdown Docs" data-label="Cast SDK" target="_blank" > <div class="devsite-nav-item-title"> Cast SDK </div> <div class="devsite-nav-item-description"> Turn your app into a remote control and stream audio/video to a Cast-enabled device </div> </a> </li> </ul> </div> </div> </div> </tab> </nav> </devsite-tabs> </div> <devsite-search enable-signin enable-search enable-suggestions enable-query-completion project-name="Cloud-to-cloud" tenant-name="Google Home Developers" > <form class="devsite-search-form" action="https://developers.home.google.com/s/results" method="GET"> <div class="devsite-search-container"> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-expanded="false" aria-haspopup="listbox" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="combobox" type="text" value="" > <div class="devsite-search-image material-icons" aria-hidden="true"> </div> <div class="devsite-search-shortcut-icon-container" aria-hidden="true"> <kbd class="devsite-search-shortcut-icon">/</kbd> </div> </div> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt" >Português</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> <a class="devsite-header-link devsite-top-button button gc-analytics-event" href="//console.home.google.com" data-category="Site-Wide Custom Events" data-label="Site header link" target="_blank" > Console </a> <devsite-user enable-profiles fp-auth id="devsite-user"> <span class="button devsite-top-button" aria-hidden="true" visually-hidden>Sign in</span> </devsite-user> </div> </div> </div> <div class="devsite-collapsible-section "> <div class="devsite-header-background"> <div class="devsite-product-id-row" > <div class="devsite-product-description-row"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> <a href="https://developers.home.google.com/docs" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Lower Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="" > Cloud-to-cloud </a> </li> </ul> </div> </div> <div class="devsite-doc-set-nav-row"> <devsite-tabs class="lower-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Lower tabs"> <tab class="devsite-active"> <a href="https://developers.home.google.com/cloud-to-cloud/get-started" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/get-started" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - get started" track-metadata-module="primary nav" aria-label="Get Started, selected" data-category="Site-Wide Custom Events" data-label="Tab: Get Started" track-name="get started" > Get Started </a> </tab> <tab class="devsite-dropdown "> <a href="https://developers.home.google.com/cloud-to-cloud/primer/home-graph" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/primer/home-graph" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - learn" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Learn" track-name="learn" > Learn </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Learn" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/primer/home-graph" track-metadata-position="nav - learn" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Learn" track-name="learn" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Learn all about smart home actions</li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/cloud-to-cloud/primer" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/primer" track-metadata-position="nav - learn" track-metadata-module="tertiary nav" track-metadata-module_headline="learn all about smart home actions" tooltip > <div class="devsite-nav-item-title"> Cloud-to-cloud Primer </div> <div class="devsite-nav-item-description"> In-depth articles that cover the core concepts of smart home traits. </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/cloud-to-cloud/features/touch-controls" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/features/touch-controls" track-metadata-position="nav - learn" track-metadata-module="tertiary nav" track-metadata-module_headline="learn all about smart home actions" tooltip > <div class="devsite-nav-item-title"> User features </div> <div class="devsite-nav-item-description"> Special features available to users of your smart home Action with no extra development work. </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column home-dropdown-column"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/cloud-to-cloud/codelabs" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/codelabs" track-metadata-position="nav - learn" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Codelabs </div> <div class="devsite-nav-item-description"> Get hands-on experience with Cloud-to-cloud development in the Google Home ecosystem. </div> </a> </li> </ul> </div> </div> </div> </tab> <tab class="devsite-dropdown "> <a href="https://developers.home.google.com/cloud-to-cloud/develop" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/develop" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - develop" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Develop" track-name="develop" > Develop </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Develop" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/develop" track-metadata-position="nav - develop" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Develop" track-name="develop" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Device SDK</li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/cloud-to-cloud/tools/vs-code" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/tools/vs-code" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device sdk" tooltip > <div class="devsite-nav-item-title"> VS Code </div> <div class="devsite-nav-item-description"> Simplify your smart home development process with the Google Home Extension for VS Code. </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/cloud-to-cloud/tools/home-graph-viewer" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/tools/home-graph-viewer" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device sdk" tooltip > <div class="devsite-nav-item-title"> Home Graph Viewer </div> <div class="devsite-nav-item-description"> See information about a home in Home Graph. </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/cloud-to-cloud/tools/home-playground" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/tools/home-playground" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device sdk" tooltip > <div class="devsite-nav-item-title"> Home Playground </div> <div class="devsite-nav-item-description"> Create a virtual home to simulate Cloud-to-cloud devices and actions. </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Other tools</li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/cloud-to-cloud/tools/sync-data-validator" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/tools/sync-data-validator" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="other tools" tooltip > <div class="devsite-nav-item-title"> SYNC data validator </div> <div class="devsite-nav-item-description"> Validate SYNC requests prior to implementation. </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/cloud-to-cloud/tools/webrtc-validator" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/tools/webrtc-validator" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="other tools" tooltip > <div class="devsite-nav-item-title"> WebRTC validator </div> <div class="devsite-nav-item-description"> Emulate the WebRTC player on Smart Displays with Google Assistant to debug WebRTC streaming. </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column home-dropdown-column"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/cloud-to-cloud/samples" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/samples" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Samples </div> <div class="devsite-nav-item-description"> Browse the complete list of Cloud-to-cloud samples. </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/cloud-to-cloud/tools" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/tools" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Tools </div> <div class="devsite-nav-item-description"> Browse the complete list of Cloud-to-cloud tools. </div> </a> </li> </ul> </div> </div> </div> </tab> <tab class="devsite-dropdown "> <a href="https://developers.home.google.com/cloud-to-cloud/guides" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/guides" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - reference" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Reference" track-name="reference" > Reference </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Reference" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/guides" track-metadata-position="nav - reference" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Reference" track-name="reference" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Device functionality</li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/cloud-to-cloud/guides" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/guides" track-metadata-position="nav - reference" track-metadata-module="tertiary nav" track-metadata-module_headline="device functionality" tooltip > <div class="devsite-nav-item-title"> Types </div> <div class="devsite-nav-item-description"> Browse the complete list of device types supported for Cloud-to-cloud. </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/cloud-to-cloud/traits" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/traits" track-metadata-position="nav - reference" track-metadata-module="tertiary nav" track-metadata-module_headline="device functionality" tooltip > <div class="devsite-nav-item-title"> Traits </div> <div class="devsite-nav-item-description"> Browse the complete list of available device traits, which encapsulate functionality for a device type. </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column home-dropdown-column"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/cloud-to-cloud/intents/sync" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/intents/sync" track-metadata-position="nav - reference" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Intents </div> <div class="devsite-nav-item-description"> Messaging objects that describe what smart home Action to perform. </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>APIs</li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/reference/home-graph/rest" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/reference/home-graph/rest" track-metadata-position="nav - reference" track-metadata-module="tertiary nav" track-metadata-module_headline="apis" tooltip > <div class="devsite-nav-item-title"> Home Graph REST </div> <div class="devsite-nav-item-description"> A REST API for the Home Graph database. </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/reference/home-graph/rpc" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/reference/home-graph/rpc" track-metadata-position="nav - reference" track-metadata-module="tertiary nav" track-metadata-module_headline="apis" tooltip > <div class="devsite-nav-item-title"> Home Graph RPC </div> <div class="devsite-nav-item-description"> An RPC API for the Home Graph database. </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.home.google.com/reference/local-home" track-type="nav" track-metadata-eventdetail="https://developers.home.google.com/reference/local-home" track-metadata-position="nav - reference" track-metadata-module="tertiary nav" track-metadata-module_headline="apis" tooltip > <div class="devsite-nav-item-title"> Local Home SDK </div> <div class="devsite-nav-item-description"> TypeScript typings for building applications that support local fulfillment. </div> </a> </li> </ul> </div> </div> </div> </tab> <tab > <a href="https://developers.home.google.com/cloud-to-cloud/support" track-metadata-eventdetail="https://developers.home.google.com/cloud-to-cloud/support" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - support" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Support" track-name="support" > Support </a> </tab> </nav> </devsite-tabs> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars > <div class="devsite-book-nav-filter" > <span class="filter-list-icon material-icons" aria-hidden="true"></span> <input type="text" placeholder="Filter" aria-label="Type to filter" role="searchbox"> <span class="filter-clear-button hidden" data-title="Clear filter" aria-label="Clear filter" role="button" tabindex="0"></span> </div> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="googleHomeDevelopers" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <img src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/home/images/lockup.svg" class="devsite-site-logo" alt="Google Home Developers"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> </div> <div class="devsite-book-nav-wrapper"> <div class="devsite-mobile-nav-top"> <ul class="devsite-nav-list"> <li class="devsite-nav-item"> <a href="/ways-to-build" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Ways to build" track-name="ways to build" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Ways to build" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Ways to build </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Ways to build" track-name="ways to build" > <span class="devsite-nav-text" tooltip menu="Ways to build"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Ways to build"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/use-cases" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Use cases" track-name="use cases" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Use cases" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Use cases </span> </a> </li> <li class="devsite-nav-item"> <a href="/business-resources" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Business resources" track-name="business resources" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Business resources" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Business resources </span> </a> </li> <li class="devsite-nav-item"> <a href="/whats-new" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: What's new" track-name="what's new" data-category="Site-Wide Custom Events" data-label="Responsive Tab: What's new" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > What's new </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Docs" track-name="docs" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Docs" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Docs </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Docs" track-name="docs" > <span class="devsite-nav-text" tooltip menu="Docs"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Docs"> </span> </span> </li> </ul> <ul class="devsite-nav-responsive-tabs"> <li class="devsite-nav-item"> <a href="/cloud-to-cloud/get-started" class="devsite-nav-title gc-analytics-event devsite-nav-has-children devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Get Started" track-name="get started" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Get Started" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip menu="_book"> Get Started </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="_book"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/cloud-to-cloud/primer/home-graph" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Learn" track-name="learn" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Learn" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Learn </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu devsite-lower-tab-item"> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Learn" track-name="learn" > <span class="devsite-nav-text" tooltip menu="Learn"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Learn"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/cloud-to-cloud/develop" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Develop" track-name="develop" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Develop" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Develop </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu devsite-lower-tab-item"> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Develop" track-name="develop" > <span class="devsite-nav-text" tooltip menu="Develop"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Develop"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/cloud-to-cloud/guides" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Reference" track-name="reference" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Reference" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Reference </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu devsite-lower-tab-item"> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Reference" track-name="reference" > <span class="devsite-nav-text" tooltip menu="Reference"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Reference"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/cloud-to-cloud/support" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Support" track-name="support" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Support" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Support </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> </ul> </li> <li class="devsite-nav-item"> <a href="//console.home.google.com" class="devsite-nav-title gc-analytics-event " target="_blank" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Console" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Console </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom"> <ul class="devsite-nav-list" menu="_book"> <li class="devsite-nav-item"><a href="/cloud-to-cloud/get-started" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/get-started" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/get-started" ><span class="devsite-nav-text" tooltip>Overview</span></a></li> <li class="devsite-nav-item"><a href="/cloud-to-cloud/supported-devices" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/supported-devices" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/supported-devices" ><span class="devsite-nav-text" tooltip>Supported device types</span></a></li> <li class="devsite-nav-item"><a href="/cloud-to-cloud/checklist" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/checklist" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/checklist" ><span class="devsite-nav-text" tooltip>Developer checklist</span></a></li> <li class="devsite-nav-item"><a href="/cloud-to-cloud/release-notes" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/release-notes" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/release-notes" ><span class="devsite-nav-text" tooltip>Release notes</span></a></li> <li class="devsite-nav-item devsite-nav-new"><a href="/cloud-to-cloud/project/migration" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/project/migration" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/project/migration" ><span class="devsite-nav-text" tooltip>Smart home Actions migration overview</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="New!" aria-hidden="true"></span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Get started with a codelab</span> </div></li> <li class="devsite-nav-item"><a href="/codelabs/smarthome-washer" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /codelabs/smarthome-washer" track-type="bookNav" track-name="click" track-metadata-eventdetail="/codelabs/smarthome-washer" ><span class="devsite-nav-text" tooltip>Connect smart home devices to the Google Assistant</span></a></li> <li class="devsite-nav-item"><a href="/codelabs/smarthome-traits" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /codelabs/smarthome-traits" track-type="bookNav" track-name="click" track-metadata-eventdetail="/codelabs/smarthome-traits" ><span class="devsite-nav-text" tooltip>Enhance and secure your smart home Actions</span></a></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>1. Project and authentication setup</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/cloud-to-cloud/project/authorization" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/project/authorization" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/project/authorization" ><span class="devsite-nav-text" tooltip>Implement an OAuth 2.0 server</span></a></li><li class="devsite-nav-item"><a href="/cloud-to-cloud/project/create" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/project/create" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/project/create" ><span class="devsite-nav-text" tooltip>Create a Cloud-to-cloud project</span></a></li><li class="devsite-nav-item"><a href="/cloud-to-cloud/project/profile" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/project/profile" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/project/profile" ><span class="devsite-nav-text" tooltip>Create a company profile</span></a></li><li class="devsite-nav-item"><a href="/cloud-to-cloud/integration/create" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/integration/create" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/integration/create" ><span class="devsite-nav-text" tooltip>Create a Cloud-to-cloud integration</span></a></li><li class="devsite-nav-item"><a href="/cloud-to-cloud/enhancements/app-flip" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/enhancements/app-flip" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/enhancements/app-flip" ><span class="devsite-nav-text" tooltip>App Flip (optional)</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Project management</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/cloud-to-cloud/project/modify" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/project/modify" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/project/modify" ><span class="devsite-nav-text" tooltip>Modify a project</span></a></li><li class="devsite-nav-item"><a href="/cloud-to-cloud/project/delete" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/project/delete" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/project/delete" ><span class="devsite-nav-text" tooltip>Delete a project</span></a></li></ul></div></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>2. Intent fulfillment</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/cloud-to-cloud/integration/sync" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/integration/sync" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/integration/sync" ><span class="devsite-nav-text" tooltip>Identify and sync</span></a></li><li class="devsite-nav-item"><a href="/cloud-to-cloud/integration/query-execute" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/integration/query-execute" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/integration/query-execute" ><span class="devsite-nav-text" tooltip>Query and execute</span></a></li><li class="devsite-nav-item"><a href="/cloud-to-cloud/integration/disconnect" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/integration/disconnect" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/integration/disconnect" ><span class="devsite-nav-text" tooltip>Disconnect</span></a></li><li class="devsite-nav-item"><a href="/cloud-to-cloud/integration/request-sync" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/integration/request-sync" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/integration/request-sync" ><span class="devsite-nav-text" tooltip>Request sync</span></a></li><li class="devsite-nav-item"><a href="/cloud-to-cloud/integration/report-state" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/integration/report-state" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/integration/report-state" ><span class="devsite-nav-text" tooltip>Implement Report State</span></a></li><li class="devsite-nav-item"><a href="/cloud-to-cloud/integration/notifications" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/integration/notifications" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/integration/notifications" ><span class="devsite-nav-text" tooltip>Send notifications</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Intent management</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/cloud-to-cloud/integration/quotas" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/integration/quotas" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/integration/quotas" ><span class="devsite-nav-text" tooltip>Quotas and limits</span></a></li></ul></div></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>3. Test</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/cloud-to-cloud/test" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/test" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/test" ><span class="devsite-nav-text" tooltip>Test a Cloud-to-cloud integration</span></a></li><li class="devsite-nav-item"><a href="/cloud-to-cloud/test/submit" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/test/submit" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/test/submit" ><span class="devsite-nav-text" tooltip>Submit test results</span></a></li><li class="devsite-nav-item"><a href="/cloud-to-cloud/integration/error-handling" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/integration/error-handling" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/integration/error-handling" ><span class="devsite-nav-text" tooltip>Handle errors & exceptions</span></a></li><li class="devsite-nav-item"><a href="/cloud-to-cloud/test/update" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/test/update" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/test/update" ><span class="devsite-nav-text" tooltip>Test an approved integration</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Test management</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item devsite-nav-external"><a href="/cloud-to-cloud/tools/home-playground" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/tools/home-playground" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/tools/home-playground" ><span class="devsite-nav-text" tooltip>Google Home Playground</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-external"><a href="/cloud-to-cloud/tools/test-suite" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/tools/test-suite" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/tools/test-suite" ><span class="devsite-nav-text" tooltip>Google Home Test Suite</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li></ul></div></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>4. Analytics</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/cloud-to-cloud/analytics/monitoring" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/analytics/monitoring" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/analytics/monitoring" ><span class="devsite-nav-text" tooltip>Monitor metrics with Cloud Monitoring</span></a></li><li class="devsite-nav-item"><a href="/cloud-to-cloud/analytics/logging" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/analytics/logging" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/analytics/logging" ><span class="devsite-nav-text" tooltip>Cloud logging for Cloud-to-cloud</span></a></li><li class="devsite-nav-item"><a href="/cloud-to-cloud/analytics/troubleshooting" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/analytics/troubleshooting" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/analytics/troubleshooting" ><span class="devsite-nav-text" tooltip>Troubleshoot integration errors</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>5. Enhancements</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item devsite-nav-external"><a href="/cloud-to-cloud/enhancements/app-flip" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/enhancements/app-flip" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/enhancements/app-flip" ><span class="devsite-nav-text" tooltip>App Flip</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/cloud-to-cloud/enhancements/deep-linking" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/enhancements/deep-linking" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/enhancements/deep-linking" ><span class="devsite-nav-text" tooltip>Deep linking</span></a></li><li class="devsite-nav-item"><a href="/cloud-to-cloud/enhancements/secondary-user-verification" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/enhancements/secondary-user-verification" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/enhancements/secondary-user-verification" ><span class="devsite-nav-text" tooltip>Secondary user verification</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Local Home SDK</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/local-home/overview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /local-home/overview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/local-home/overview" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/local-home/device-discovery" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /local-home/device-discovery" track-type="bookNav" track-name="click" track-metadata-eventdetail="/local-home/device-discovery" ><span class="devsite-nav-text" tooltip>Support device discovery</span></a></li><li class="devsite-nav-item"><a href="/local-home/fulfillment-app" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /local-home/fulfillment-app" track-type="bookNav" track-name="click" track-metadata-eventdetail="/local-home/fulfillment-app" ><span class="devsite-nav-text" tooltip>Implement local fulfillment app</span></a></li><li class="devsite-nav-item"><a href="/local-home/test" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /local-home/test" track-type="bookNav" track-name="click" track-metadata-eventdetail="/local-home/test" ><span class="devsite-nav-text" tooltip>Test and debug</span></a></li><li class="devsite-nav-item devsite-nav-external"><a href="/codelabs/smarthome-local" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /codelabs/smarthome-local" track-type="bookNav" track-name="click" track-metadata-eventdetail="/codelabs/smarthome-local" ><span class="devsite-nav-text" tooltip>Smart Home local fulfillment codelab</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li></ul></div></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>6. Certification and launch</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/cloud-to-cloud/certification" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/certification" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/certification" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/cloud-to-cloud/certification/submit" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/certification/submit" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/certification/submit" ><span class="devsite-nav-text" tooltip>Submit for certification</span></a></li><li class="devsite-nav-item"><a href="/cloud-to-cloud/certification/status" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/certification/status" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/certification/status" ><span class="devsite-nav-text" tooltip>Check certification status</span></a></li></ul></div></li> <li class="devsite-nav-item"><a href="/terms" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /terms" track-type="bookNav" track-name="click" track-metadata-eventdetail="/terms" ><span class="devsite-nav-text" tooltip>Developer Terms of Service</span></a></li> <li class="devsite-nav-item"><a href="/policies" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /policies" track-type="bookNav" track-name="click" track-metadata-eventdetail="/policies" ><span class="devsite-nav-text" tooltip>Developer Policies</span></a></li> <li class="devsite-nav-item devsite-nav-break"></li> <li class="devsite-nav-item devsite-nav-external"><a href="/cloud-to-cloud/support" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /cloud-to-cloud/support" track-type="bookNav" track-name="click" track-metadata-eventdetail="/cloud-to-cloud/support" ><span class="devsite-nav-text" tooltip>Support</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li> </ul> <ul class="devsite-nav-list" menu="Ways to build" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Works with Google Home™ badging program </span> </span> </li> <li class="devsite-nav-item"> <a href="/matter" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Matter" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Matter </span> </a> </li> <li class="devsite-nav-item"> <a href="/cloud-to-cloud" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cloud-to-cloud" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Cloud-to-cloud </span> </a> </li> <li class="devsite-nav-item"> <a href="/local-home" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Local Home SDK" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Local Home SDK </span> </a> </li> <li class="devsite-nav-item"> <a href="/apis" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Home APIs" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Home APIs </span> </a> </li> <li class="devsite-nav-item"> <a href="/device-sdk" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Home Device SDK" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Home Device SDK </span> </a> </li> <li class="devsite-nav-item"> <a href="/mobile-sdk" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Home Mobile SDK" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Home Mobile SDK </span> </a> </li> <li class="devsite-nav-item"> <a href="/device-access" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Device Access" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Device Access </span> </a> </li> <li class="devsite-nav-item"> <a href="/cast" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cast SDK" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Cast SDK </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Docs" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/matter/docs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Matter" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Matter </span> </a> </li> <li class="devsite-nav-item"> <a href="/cloud-to-cloud/docs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cloud-to-cloud" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Cloud-to-cloud </span> </a> </li> <li class="devsite-nav-item"> <a href="/local-home/docs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Local Home SDK" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Local Home SDK </span> </a> </li> <li class="devsite-nav-item"> <a href="/app-flip" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: App Flip" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > App Flip </span> </a> </li> <li class="devsite-nav-item"> <a href="/tools" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Tools" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Tools </span> </a> </li> <li class="devsite-nav-item"> <a href="/thread/docs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Thread" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Thread </span> </a> </li> <li class="devsite-nav-item"> <a href="/device-access/registration" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Device Access" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Device Access </span> </a> </li> <li class="devsite-nav-item"> <a href="/cast/docs/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cast SDK" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Cast SDK </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Learn" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Learn all about smart home actions </span> </span> </li> <li class="devsite-nav-item"> <a href="/cloud-to-cloud/primer" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cloud-to-cloud Primer" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Cloud-to-cloud Primer </span> </a> </li> <li class="devsite-nav-item"> <a href="/cloud-to-cloud/features/touch-controls" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: User features" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > User features </span> </a> </li> <li class="devsite-nav-item"> <a href="/cloud-to-cloud/codelabs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Codelabs" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Codelabs </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Develop" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Device SDK </span> </span> </li> <li class="devsite-nav-item"> <a href="/cloud-to-cloud/tools/vs-code" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: VS Code" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > VS Code </span> </a> </li> <li class="devsite-nav-item"> <a href="/cloud-to-cloud/tools/home-graph-viewer" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Home Graph Viewer" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Home Graph Viewer </span> </a> </li> <li class="devsite-nav-item"> <a href="/cloud-to-cloud/tools/home-playground" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Home Playground" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Home Playground </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Other tools </span> </span> </li> <li class="devsite-nav-item"> <a href="/cloud-to-cloud/tools/sync-data-validator" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: SYNC data validator" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > SYNC data validator </span> </a> </li> <li class="devsite-nav-item"> <a href="/cloud-to-cloud/tools/webrtc-validator" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: WebRTC validator" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > WebRTC validator </span> </a> </li> <li class="devsite-nav-item"> <a href="/cloud-to-cloud/samples" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Samples" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Samples </span> </a> </li> <li class="devsite-nav-item"> <a href="/cloud-to-cloud/tools" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Tools" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Tools </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Reference" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Device functionality </span> </span> </li> <li class="devsite-nav-item"> <a href="/cloud-to-cloud/guides" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Types" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Types </span> </a> </li> <li class="devsite-nav-item"> <a href="/cloud-to-cloud/traits" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Traits" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Traits </span> </a> </li> <li class="devsite-nav-item"> <a href="/cloud-to-cloud/intents/sync" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Intents" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Intents </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > APIs </span> </span> </li> <li class="devsite-nav-item"> <a href="/reference/home-graph/rest" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Home Graph REST" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Home Graph REST </span> </a> </li> <li class="devsite-nav-item"> <a href="/reference/home-graph/rpc" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Home Graph RPC" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Home Graph RPC </span> </a> </li> <li class="devsite-nav-item"> <a href="/reference/local-home" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Local Home SDK" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Local Home SDK </span> </a> </li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content" has-book-nav has-sidebar > <div class="devsite-sidebar"> <div class="devsite-sidebar-content"> <devsite-toc class="devsite-nav" role="navigation" aria-label="On this page" depth="2" scrollbars ></devsite-toc> <devsite-recommendations-sidebar class="nocontent devsite-nav"> </devsite-recommendations-sidebar> </div> </div> <devsite-content> <article class="devsite-article"><style> /* Styles inlined from /css/docs/articles.css */ .inline-aside { overflow: hidden !important; } .google-symbols { font-variation-settings: 'FILL' 0, 'wght' 0, 'GRAD' 0, 'opsz' NaN; } material-icons-outlined { font-family: 'Material Icons Outlined'; font-weight: normal; font-style: normal; font-size: 24px; /* Preferred icon size */ display: inline-block; line-height: 1; text-transform: none; letter-spacing: normal; word-wrap: normal; white-space: nowrap; direction: ltr; /* Support for all WebKit browsers. */ -webkit-font-smoothing: antialiased; /* Support for Safari and Chrome. */ text-rendering: optimizeLegibility; /* Support for Firefox. */ -moz-osx-font-smoothing: grayscale; /* Support for IE. */ font-feature-settings: 'liga'; } a.access-controlled:after, a[href*="man7.org"]:after, a[href*="oracle.com"]:after { word-wrap: normal; content: url('/css/docs/key_vertical_18px.svg'); margin-block: 0; margin-inline: 0 0; vertical-align: text-bottom; /* #00639b */ filter: invert(22%) sepia(37%) saturate(5240%) hue-rotate(184deg) brightness(92%) contrast(101%); } </style><style> /* Styles inlined from /css/docs/banner.css */ /* To ensure any banners on an article are using the same styles as those on * landing pages (which come from /css/landing.css). */ :root { --home-primary-font-family: Google Sans,Noto Sans,Noto Sans JP,Noto Sans KR,Noto Naskh Arabic,Noto Sans Thai,Noto Sans Hebrew,Noto Sans Bengali,sans-serif; } </style><style> /* Styles inlined from /css/docs/figcaption.css */ /* Ensure all figcaptions are using the same styles. Also used to override * the figcaption styles from /identity includes, so that they align with our * tenant's style. */ figcaption { font-style: italic; text-align: right; } figcaption b { font-weight: normal; } </style><style> /* Styles inlined from /css/docs/input.css */ /* Allows for a Material icon within an input box and adds a border */ .inputdata { border:2px solid lightgray; border-radius: 8px; padding:0.1em; margin:0.1em; } .inputdata span { float:left; margin-left:5px; margin-right:10px; padding:5px 0; color:gray; } .inputdata div { display: block; overflow: hidden; } .inputdata input { width:100%; padding-top:8px; border:none; background:none; } </style><style> /* Styles inlined from /css/docs/status.css */ .pill { color: #fff; border-radius: 13px; display: inline-block; font-family: Google Sans; font-weight: 500; font-size: 14px; margin: 1px; padding: 1px 7px; white-space: nowrap; } .pill a { display: inline; margin: 0; text-decoration: none !important; } .pill a:hover { filter: brightness(75%); } .attribute, .release { background-color: #ff8569; } .content { background-color: #c798d6; } .coverage { background-color: #341811; } .macro { background-color: #e59849; } .phase { background-color: #1d7db3; } .program { background-color: #3e766d; } .tool { background-color: #9d75ab; } </style><style> /* Styles inlined from /css/docs/table.css */ .center { text-align: center; vertical-align: middle; } .center-vert > tr > td { vertical-align: middle; } .flow { display: flex; } .flow > img { align-items: flex-start; align-self: flex-start; width: 33%; } .no-lines { border-collapse: separate !important; } table img.full-width { max-width: 100%; } </style> <div class="devsite-banner devsite-banner-announcement nocontent" > <div class="devsite-banner-message"> <div class="devsite-banner-message-text"> <style> .devsite-banner-announcement { background-color: #1d7db3; font: 400 16px / 24px var(--home-primary-font-family) ; } .devsite-banner-announcement .devsite-banner-message-text { color: white; margin: 0 auto; } .devsite-banner a:not(.button):focus, .devsite-banner-announcement :link:not(.button), .devsite-banner-announcement :visited:not(.button) { background-color: #1d7db3; color: white; } </style> Welcome to the Google Home Developer Center, the new destination for learning how to develop smart home actions. </div> </div> </div> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="https://developers.home.google.com/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Google Home Developers" > Google Home Developers </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.home.google.com/docs" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="Docs" > Docs </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.home.google.com/cloud-to-cloud/get-started" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="3" track-type="globalNav" track-name="breadcrumb" track-metadata-position="3" track-metadata-eventdetail="Cloud-to-cloud" > Cloud-to-cloud </a> </li> </ul> </div> <h1 class="devsite-page-title" tabindex="-1"> Local fulfillment </h1> <devsite-feature-tooltip ack-key="AckCollectionsBookmarkTooltipDismiss" analytics-category="Site-Wide Custom Events" analytics-action-show="Callout Profile displayed" analytics-action-close="Callout Profile dismissed" analytics-label="Create Collection Callout" class="devsite-page-bookmark-tooltip nocontent" dismiss-button="true" id="devsite-collections-dropdown" dismiss-button-text="Dismiss" close-button-text="Got it"> <devsite-bookmark></devsite-bookmark> <span slot="popout-heading"> Stay organized with collections </span> <span slot="popout-contents"> Save and categorize content based on your preferences. </span> </devsite-feature-tooltip> <div class="devsite-page-title-meta"><devsite-view-release-notes></devsite-view-release-notes></div> <devsite-toc class="devsite-nav" depth="2" devsite-toc-embedded > </devsite-toc> <div class="devsite-article-body clearfix "> <p>The Local Home SDK enhances your smart home integration with Google Assistant by adding a local fulfillment path to route <a href="/cloud-to-cloud/primer/intents">smart home intents</a>.</p> <div class="video-wrapper attempt-right"> <iframe class="devsite-embedded-youtube-video" data-video-id="aaaUSeQGLAA" data-autohide="1" data-showinfo="0" frameborder="1" allowfullscreen> </iframe> </div> <p>The Local Home SDK provides two capabilities: Local Execution and Local Query.</p> <ul> <li><strong>Local Execution</strong> provides the ability to fulfill commands by sending <code translate="no" dir="ltr">EXEC</code> intents over the local fulfillment path, instead of making a cloud API call. For example, the request 'Turn on the light' could be handled by Local Execution.</li> <li><strong>Local Query</strong> provides the ability to handle queries concerning device state by sending <code translate="no" dir="ltr">QUERY</code> intents over the local fulfillment path. For example, Local Query would fulfill the query 'Is my light on?' without making a cloud API call.</li> </ul> <p>The SDK lets you write a local fulfillment app, using TypeScript or JavaScript, that contains your smart home business logic. Google Home or Google Nest devices can load and run your app on-device. Your app communicates directly with your existing smart devices over Wi-Fi on a local area network (LAN) to fulfill user commands, over existing protocols.</p> <p>Integration of the SDK offers performance improvements to your <span translate="no">Cloud-to-cloud</span> integration, including lower latency and higher reliability. Local fulfillment is supported for all device types and device traits, except those that use <a href="/cloud-to-cloud/enhancements/secondary-user-verification">secondary user verification</a>.</p> <p><a class="button button-primary" href="/local-home/device-discovery">Start building</a> <a class="button button-primary" target="_blank" href="//github.com/google-home/smart-home-local">Try the sample</a></p> <h2 id="understand_how_it_works" data-text="Understand how it works" tabindex="-1">Understand how it works</h2> <p>After getting a <a href="/cloud-to-cloud/primer/intents#sync"><code translate="no" dir="ltr">SYNC</code></a> response from your cloud fulfillment, the Local Home platform scans the user’s local area network using mDNS, UDP broadcast, or UPnP to discover smart devices connected to Assistant.</p> <p>The platform sends an <code translate="no" dir="ltr">IDENTIFY</code> intent to determine if the device is locally controllable, by comparing the device ID in the <code translate="no" dir="ltr">IDENTIFY</code> response to those returned by the earlier <code translate="no" dir="ltr">SYNC</code> response. If the detected device is a hub or bridge, the platform sends a <code translate="no" dir="ltr">REACHABLE_DEVICES</code> intent and treats the hub as the proxy device for communicating locally.</p> <p>When it receives a response confirming a local device, the platform establishes a local fulfillment path to the user’s Google Home or Google Nest device, and subsequently routes user commands for local fulfillment.</p> <p>When a user triggers a <span translate="no">Cloud-to-cloud</span> integration that has a local fulfillment path, Assistant sends the <a href="/cloud-to-cloud/primer/intents#execute"><code translate="no" dir="ltr">EXECUTE</code></a> intent or <a href="/cloud-to-cloud/primer/intents#query"><code translate="no" dir="ltr">QUERY</code></a> intent to the Google Home or Google Nest device rather than the cloud fulfillment. The device then runs the local fulfillment app to process the intent.</p> <figure id="local-home-sdk-execution-path"> <img src="/static/local-home/images/local-home-sdk-execute-path.png" alt="This figure shows the execution flow for local fulfillment. The execution path captures a user's intent from a phone with Google Assistant, then the user intent is processed by the Google Cloud, then it is executed locally on the Google Home device and the command is issued directly to the device hub or directly to the device. The developer cloud is available as a cloud fallback." class="screenshot"> <figcaption>Figure 1: Adding a local fulfillment path for your smart home Action.</figcaption> </figure> <p>The Local Home platform is non-deterministic in choosing which Google Home or Google Nest device to trigger the command. The <code translate="no" dir="ltr">EXECUTE</code> and <code translate="no" dir="ltr">QUERY</code> intents may come through any Google Home or Google Nest device defined in the same <a href="/cloud-to-cloud/primer/home-graph">Home Graph structure</a> as the target device.</p> <h3 id="local_fulfillment_app" data-text="Local fulfillment app" tabindex="-1">Local fulfillment app</h3> <p>The local fulfillment app contains the business logic to process the intents sent by the Local Home platform and access your smart device via the local area network. No modification of your hardware is expected to integrate local fulfillment. The app fulfills <span translate="no">Cloud-to-cloud</span> integration requests by sending control commands to the smart device through application-layer protocols, including HTTP, TCP, or UDP. In the event that the local fulfillment path fails, your cloud fulfilment is used as a fallback execution path.</p> <p>To support building the app, the Local Home SDK provides these two main classes:</p> <ul> <li><a href="/reference/local-home/interfaces/smarthome.devicemanager"><code translate="no" dir="ltr">DeviceManager</code></a>: Provides methods to communicate with smart devices using TCP, UDP sockets, or HTTP requests.</li> <li><a href="/reference/local-home/classes/smarthome.app"><code translate="no" dir="ltr">App</code></a>: Provides methods to attach handlers for intents that Google sends after discovering locally-controllable devices (<code translate="no" dir="ltr">IDENTIFY</code>, <code translate="no" dir="ltr">REACHABLE_DEVICES</code>). This class also fulfills user commands (<code translate="no" dir="ltr">EXECUTE</code>), and answers user queries on current device state (<code translate="no" dir="ltr">QUERY</code>).</li> </ul> <p>During development, you can build and test the app by loading it on your own hosting server or local development machine. In production, Google hosts your app in a secure JavaScript sandbox environment on the user’s Google Home or Google Nest device.</p> <p>The <a href="/cloud-to-cloud/integration/report-state">Report State</a> API is not currently supported for local fulfillment. Google relies on your cloud fulfillment to process these requests.</p> <h3 id="app-lifecycle" data-text="Application lifecycle" tabindex="-1">Application lifecycle</h3> <p>Your local fulfillment app is loaded on demand when the Local Home platform discovers new local devices matching the project scan configuration, or has pending intents to deliver related to a previously identified device.</p> <p>Google Home or Google Nest devices are memory constrained and your local fulfillment app may be terminated at any time due to memory pressure in the system. This can happen if your app starts to consume too much memory, or if the system needs to make room for another app. The Local Home platform restarts your app only when there are new intents to deliver and sufficient memory resources for the app to run.</p> <p>The Local Home platform unloads your app after an idle timeout when the user unlinks their account or there are no longer devices that support local fulfillment associated with the user's <code translate="no" dir="ltr">agentUserId</code>.</p> <h2 id="supported-devices" data-text="Supported devices" tabindex="-1">Supported devices</h2> <p>The Local Home platform executes your local fulfillment app on supported Google Home or Google Nest devices. The following table describes the supported devices, and the runtime used on each device. To learn more about runtime requirements, see <a href="#execution-environment">Execution environment</a>.</p> <table> <tr> <th>Device</th> <th>Type</th> <th>Environment</th> </tr> <tr> <td>Google Home</td> <td>Speaker</td> <td>Chrome</td> </tr> <tr> <td>Google Home Mini</td> <td>Speaker</td> <td>Chrome</td> </tr> <tr> <td>Google Home Max</td> <td>Speaker</td> <td>Chrome</td> </tr> <tr> <td>Nest Mini</td> <td>Speaker</td> <td>Chrome</td> </tr> <tr> <td>Nest Hub</td> <td>Display</td> <td>Chrome</td> </tr> <tr> <td>Nest Hub Max</td> <td>Display</td> <td>Chrome</td> </tr> <tr> <td rowspan="2">Nest Wifi</td> <td>Router</td> <td>Node.js</td> </tr> <tr> <td>Point</td> <td>Chrome</td> </tr> </table> <h3 id="execution-environment" data-text="Execution environment" tabindex="-1">Execution environment</h3> <p>The execution environment for your local fulfillment app depends on your <a href="#supported-devices">device</a>. The Local Home platform supports the following runtime environments:</p> <ul> <li><strong>Chrome</strong>: Your local fulfillment app is executed within the context of a Chrome browser <code translate="no" dir="ltr">window</code> running <a href="https://chromestatus.com/features#milestone%3D80" target="_blank" class="external">Chrome M80</a> or later with support for <a href="http://ecma-international.org/ecma-262/9.0/" target="_blank" class="external">ECMAScript version ES2018</a>.</li> <li><strong>Node.js</strong>: Your local fulfillment app is executed as a script within a Node.js process running <a href="https://nodejs.org/docs/latest-v10.x/api/index.html" target="_blank" class="external">Node v10.x LTS</a> or later with support for <a href="http://ecma-international.org/ecma-262/9.0/" target="_blank" class="external">ECMAScript version ES2018</a>.</li> </ul> <aside class="key-point"><strong>Key Point:</strong><span> Chrome and Node.js expose different native APIs as part of their runtime environment. To avoid writing two separate apps, rely on APIs that can safely execute in both environments natively or through <a href="https://developer.mozilla.org/en-US/docs/Glossary/Polyfill" target="_blank" class="external">polyfills</a>.</span></aside> <h3 id="source_code_structure" data-text="Source code structure" tabindex="-1">Source code structure</h3> <p>We recommend bundling your dependencies into a single JavaScript file using the <a href="/local-home/fulfillment-app#create_your_project">bundler configurations</a> provided by the Local Home SDK and packaging your source code as an <a href="https://developer.mozilla.org/en-US/docs/Glossary/IIFE" target="_blank" class="external">Immediately-invoked Function Expression (IIFE)</a>.</p> <h2 id="implementation_path" data-text="Implementation path" tabindex="-1">Implementation path</h2> <p>To utilize the Local Home SDK for your smart home integration, you need to perform these tasks:</p> <table> <tbody> <tr> <td><span class="step-number">1</span></td> <td style="width:150px;"><strong><a href="/local-home/device-discovery#set_up_the_scan_config_information">Set up the scan config</a></strong></td> <td>Configure the <span translate="no">Google Home Developer Console</span> with the necessary parameters for the Assistant to discover locally controllable devices. </td> </tr> <tr> <td><span class="step-number">2</span></td> <td><strong><a href="/local-home/device-discovery#update_sync_response_in_the_cloud_fulfillment">Update the SYNC response in your cloud fulfillment</a></strong></td> <td>In your cloud fulfillment, modify the <code translate="no" dir="ltr"><a href="/cloud-to-cloud/intents/sync">SYNC</a></code> request handler to support the <code translate="no" dir="ltr"><a href="/reference/home-graph/rest/v1/devices/sync#Device.FIELDS.other_device_ids"> otherDeviceIds</a></code> field that the platform uses to establish a local fulfillment path. In that field, specify the IDs of devices that can be locally controlled. </td> </tr> <tr> <td><span class="step-number">3</span></td> <td><strong><a href="/local-home/fulfillment-app">Implement the local fulfillment app</a></strong></td> <td>Use the Local Home SDK to create a JavaScript app to handle the <code translate="no" dir="ltr"><a href="/reference/local-home/enums/smarthome.intents#identify">IDENTIFY</a></code>, <code translate="no" dir="ltr"><a href="/cloud-to-cloud/intents/execute"> EXECUTE</a></code>, and <code translate="no" dir="ltr"><a href="/cloud-to-cloud/intents/query"> QUERY</a></code> intents. For hub or bridge proxy devices, you should also handle the <code translate="no" dir="ltr"><a href="/reference/local-home/enums/smarthome.intents#reachable_devices">REACHABLE_DEVICES</a></code> intent. </td> </tr> <tr> <td><span class="step-number">4</span></td> <td><strong><a href="/local-home/test">Test and debug your app</a></strong></td> <td>Test your integration (or <em>self-certify</em>) by using the <a href="/cloud-to-cloud/tools/test-suite">Google Home Test Suite</a>. </td> </tr> </tbody> </table> <h2 id="before_you_begin" data-text="Before you begin" tabindex="-1">Before you begin</h2> <ul> <li>Familiarize yourself with the basics of <a href="/cloud-to-cloud/project/create">creating a <span translate="no">Cloud-to-cloud</span> integration</a>.</li> <li>In the <a href="https://console.home.google.com"class="external"target="_blank"><span translate="no">Google Home Developer Console</span></a>, make sure you have an existing smart home project and that <a href="/cloud-to-cloud/project/create#configure_account_linking_in_the_console">account linking is configured</a>.</li> <li>Make sure that you are logged in with the same Google account in the <span translate="no">Developer Console</span> and in Assistant on your test device.</li> <li>You'll need a <a href="//nodejs.org/" target="_blank" class="external">Node.js</a> environment to write your app. For installing Node.js and npm, <a href="//github.com/creationix/nvm/blob/master/README.md" target="_blank" class="external">Node Version Manager</a> is recommended.</li> <li>To work with the latest version of the Local Home SDK, you will need to <a href="//support.google.com/chromecast/answer/6343937" target="_blank" class="external">enroll your test devices into the Cast Preview Program</a>.</li> </ul> <link href="https://fonts.googleapis.com/css2?family=Material+Icons+Outlined" rel="stylesheet" data-page-link><link href="https://fonts.googleapis.com/css2?family=Google+Symbols:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" rel="stylesheet" data-page-link> </div> <div class="devsite-steps"> <div class="steps-next steps-direction"> <a href="/local-home/device-discovery" class="steps-link gc-analytics-event" data-category="Site-Wide Custom Events" data-action="Next step" data-label="/local-home/device-discovery"> <div class="steps-link-direction">Next</div> <span class="steps-link-title-next steps-link-title"> Support device discovery </span> <span class="steps-link-arrow steps-link-arrow-right material-icons" aria-hidden="true"> arrow_forward </span> </a> </div> </div> <div class="devsite-floating-action-buttons"> </div> </article> <devsite-content-footer class="nocontent"> <p>Except as otherwise noted, the content of this page is licensed under the <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 License</a>, and code samples are licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0 License</a>. For details, see the <a href="https://developers.google.com/site-policies">Google Developers Site Policies</a>. Java is a registered trademark of Oracle and/or its affiliates.</p> <p>Last updated 2023-06-06 UTC.</p> </devsite-content-footer> <devsite-notification > </devsite-notification> <div class="devsite-content-data"> <template class="devsite-content-data-template"> [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Incorrect information","incorrectInformation","thumb-down"],["Not enough information/samples","notEnoughInformationSamples","thumb-down"],["Too complicated","tooComplicated","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2023-06-06 UTC."],[],[]] </template> </div> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="Footer links"> <ul class="devsite-footer-linkboxes-list"> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">For devices</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/matter" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Matter"data-category="Footer"> Matter </a> <div class="devsite-footer-linkbox-description">New IP-based smart home connectivity protocol that enables broad interoperability with many ecosystems</div> </li> <li class="devsite-footer-linkbox-item"> <a href="/device-sdk" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Device SDK"data-category="Footer"> Google Home Device SDK </a> <div class="devsite-footer-linkbox-description">Quickly build Matter devices, integrate with Google Home and access Google’s intelligence signals</div> </li> <li class="devsite-footer-linkbox-item"> <a href="/cloud-to-cloud" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-category="Footer"data-label="Cloud-to-cloud"> Cloud-to-cloud </a> <div class="devsite-footer-linkbox-description">Connect your cloud backend with the Smart Home API</div> </li> <li class="devsite-footer-linkbox-item"> <a href="/local-home" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Local Home SDK"data-category="Footer"> Local Home SDK </a> <div class="devsite-footer-linkbox-description">Enhance your smart home integration with Google Assistant by adding a local fulfillment path to route smart home intents</div> </li> <li class="devsite-footer-linkbox-item"> <a href="/ways-to-build" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Ways to Build"data-category="Footer"> <div class="devsite-footer-linkbox-icon" aria-hidden="true"> <picture> <img src="/images/footer-icon.svg" loading="lazy" alt=""> </picture> </div> Find out which integration to build </a> <div class="devsite-footer-linkbox-description">We’ll recommend an integration based on your device and needs</div> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">For apps, platforms & services</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/mobile-sdk" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Mobile SDK"data-category="Footer"> Google Home Mobile SDK </a> <div class="devsite-footer-linkbox-description">Speed up your Android mobile app development with Google Play services APIs for Matter devices</div> </li> <li class="devsite-footer-linkbox-item"> <a href="/app-discovery" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="App Discovery"target="_blank"data-category="Footer"> App Discovery </a> <div class="devsite-footer-linkbox-description">Shows a link to your app in the Google Home app to streamline account linking</div> </li> <li class="devsite-footer-linkbox-item"> <a href="/app-flip" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-category="Footer"data-label="App Flip"target="_blank"> App Flip </a> <div class="devsite-footer-linkbox-description">Enable quick, passwordless account linking</div> </li> <li class="devsite-footer-linkbox-item"> <a href="/cast" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" target="_blank"data-category="Footer"data-label="Cast SDK"> Google Cast SDK </a> <div class="devsite-footer-linkbox-description">Turn your app into a remote control and stream audio/video to a Cast-enabled device</div> </li> <li class="devsite-footer-linkbox-item"> <a href="/device-access" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Device Access"target="_blank"data-category="Footer"> Device Access </a> <div class="devsite-footer-linkbox-description">Manage and control Nest devices in your smart home solution</div> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Use cases</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/use-cases?device=light" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-category="Footer"data-label="Use Cases Lighting"> Lighting </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/use-cases?device=thermostat" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Use Cases Climate"data-category="Footer"> Climate </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/use-cases?device=lock" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Use Cases Safety"data-category="Footer"> Safety & security </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/use-cases?device=tv" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Use Cases Media"data-category="Footer"> Media & technology </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/use-cases?device=vacuum" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Use Cases Household"data-category="Footer"> Household appliances </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/use-cases?device=coffee-maker" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-category="Footer"data-label="Use Cases Kitchen"> Kitchen appliances </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/use-cases?device=shower" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Use Cases Bed"data-category="Footer"> Bed & bath </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/use-cases?device=sprinkler" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-category="Footer"data-label="Use Cases Outdoor"> Outdoor </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Business resources</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/certification" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Resources Certification"data-category="Footer"> Certification & badging </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/business-resources#marketing-resources" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Resources Marketing"data-category="Footer"> Marketing resources </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/business-resources#development-resources" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-category="Footer"data-label="Resources Development"> Development resources </a> </li> <li class="devsite-footer-linkbox-item"> <h3 class="devsite-footer-linkbox-heading no-link"> Terms & policies </h3> </li> <li class="devsite-footer-linkbox-item"> <a href="/terms" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-category="Footer"data-label="Terms"> Developer Terms of Service </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/policies" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Policies"data-category="Footer"> Developer Policies </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Docs & consoles</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/docs" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Docs"data-category="Footer"> Docs </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//console.home.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Console Home"target="_blank"data-category="Footer"> Google Home console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//console.actions.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Console Actions"target="_blank"data-category="Footer"> Actions on Google console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//cast.google.com/publish" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-category="Footer"target="_blank"data-label="Console Cast"> Cast SDK console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//console.nest.google.com/device-access" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-category="Footer"target="_blank"data-label="Console Device Access"> Device Access console </a> </li> <li class="devsite-footer-linkbox-item"> <h3 class="devsite-footer-linkbox-heading no-link"> Communities </h3> </li> <li class="devsite-footer-linkbox-item"> <a href="//stackoverflow.com/questions/tagged/google-smart-home" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" target="_blank"data-category="Footer"data-label="Community Stack Overflow"> Stack Overflow </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//www.googlenestcommunity.com/t5/Smart-Home-Developer-Forum/bd-p/Smart-Home-Developer-Forum" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" target="_blank"data-category="Footer"data-label="Community Google Nest"> Google Nest Community </a> </li> </ul> </li> </ul> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-utility-links" aria-label="Utility links"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/terms" data-category="Site-Wide Custom Events" data-label="Footer Terms link" > Terms </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" > Privacy </a> </li> <li class="devsite-footer-utility-item glue-cookie-notification-bar-control"> <a class="devsite-footer-utility-link gc-analytics-event" href="#" data-category="Site-Wide Custom Events" data-label="Footer Manage cookies link" aria-hidden="true" > Manage cookies </a> </li> </ul> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt" >Português</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip ></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics> <script type="application/json" analytics>[{"dimensions": {"dimension5": false, "dimension4": "en", "dimension2": false, "dimension1": "Signed out", "dimension3": "en"}, "gaid": "UA-227286873-1", "metrics": {}, "purpose": 0}]</script> <script type="application/json" tag-management>{"at": "True", "ga4": [{"id": "G-333MC3Y0E5", "purpose": 0}], "ga4p": [{"id": "G-333MC3Y0E5", "purpose": 0}], "gtm": [], "parameters": {"internalUser": "False", "language": {"machineTranslated": "False", "requested": "en", "served": "en"}, "pageType": "article", "projectName": "Cloud-to-cloud", "signedIn": "False", "tenant": "home", "recommendations": {"sourcePage": "", "sourceType": 0, "sourceRank": 0, "sourceIdenticalDescriptions": 0, "sourceTitleWords": 0, "sourceDescriptionWords": 0, "experiment": ""}, "experiment": {"ids": ""}}}</script> </devsite-analytics> <devsite-badger></devsite-badger> <devsite-fully-clickable target=" .home-core-clickable, .home-illustrated-items-program, .home-logos .devsite-landing-row-item, .home-sidecar-clickable, .home-sidecar-columns .devsite-landing-row-item, .fully-clickable" watch="devsite-content"></devsite-fully-clickable> <script nonce="dP8gtRnzwECC25pxTg32tw6h/e8T6L"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/home/js/app_loader.js', '[46,"en",null,"/js/devsite_app_module.js","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/home","https://home-dot-devsite-v2-prod.appspot.com",1,null,["/_pwa/home/manifest.json","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/images/video-placeholder.svg","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/home/images/favicon.png","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/home/images/lockup.svg","https://fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"],1,null,[1,6,8,12,14,17,21,25,50,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,112,113,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,147,148,149,151,152,156,157,158,159,161,163,164,168,169,170,179,180,182,183,186,191,193,196],"AIzaSyAP-jjEJBzmIyKR4F-3XITp8yM9T1gEEI8","AIzaSyB6xiKGDR5O3Ak2okS4rLkauxGUG7XP0hg","developers.home.google.com","AIzaSyAQk0fBONSGUqCNznf6Krs82Ap1-NV6J4o","AIzaSyCCxcqdrZ_7QMeLCRY20bh_SXdAYqy70KY",null,null,null,["Cloud__enable_cloud_dlp_service","TpcFeatures__enable_required_headers","Cloud__enable_legacy_calculator_redirect","MiscFeatureFlags__enable_explain_this_code","OnSwitch__enable","CloudShell__cloud_shell_button","Experiments__reqs_query_experiments","Cloud__enable_cloud_shell","Search__enable_dynamic_content_confidential_banner","BookNav__enable_tenant_cache_key","Profiles__enable_public_developer_profiles","CloudShell__cloud_code_overflow_menu","MiscFeatureFlags__emergency_css","EngEduTelemetry__enable_engedu_telemetry","Analytics__enable_clearcut_logging","Cloud__enable_llm_concierge_chat","Profiles__enable_profile_collections","TpcFeatures__enable_mirror_tenant_redirects","Profiles__enable_release_notes_notifications","Search__enable_ai_eligibility_checks","Profiles__enable_page_saving","Profiles__enable_dashboard_curated_recommendations","Profiles__enable_complete_playlist_endpoint","Search__enable_page_map","MiscFeatureFlags__enable_view_transitions","Profiles__enable_awarding_url","Profiles__enable_completecodelab_endpoint","DevPro__enable_developer_subscriptions","MiscFeatureFlags__enable_firebase_utm","MiscFeatureFlags__enable_project_variables","Profiles__enable_developer_profiles_callout","Cloud__enable_cloud_shell_fte_user_flow","Cloud__enable_free_trial_server_call","MiscFeatureFlags__developers_footer_image","MiscFeatureFlags__developers_footer_dark_image","Profiles__enable_recognition_badges","MiscFeatureFlags__enable_variable_operator","DevPro__enable_cloud_innovators_plus","Profiles__require_profile_eligibility_for_signin","Cloud__enable_cloudx_ping","Concierge__enable_pushui","Cloud__enable_cloud_facet_chat","Search__enable_suggestions_from_borg","Cloud__enable_cloudx_experiment_ids"],null,null,"AIzaSyBLEMok-5suZ67qRPzx0qUtbnLmyT_kCVE","https://developerscontentserving-pa.clients6.google.com","AIzaSyCM4QpTRSqP5qI4Dvjt4OAScIN8sOUlO-k","https://developerscontentsearch-pa.clients6.google.com",1,4,null,"https://developerprofiles-pa.clients6.google.com",[46,"home","Google Home Developers","developers.home.google.com",null,"home-dot-devsite-v2-prod.appspot.com",null,null,[null,1,null,null,null,null,null,null,null,null,null,[1],null,null,null,null,null,null,[1],null,null,null,null,[1,null,1],[1,1,null,1,1]],null,[61,null,null,null,null,null,"/images/lockup.svg","/images/touchicon-180.png",null,null,null,1,1,null,null,null,null,null,null,[[],[],[],[],[],[],[]],null,null,null,null,null,null,[]],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[2,4,6,7,1,12,14,15,17,18,20,21,22,23,28,30,32,36,39,40,43],null,[[],[1,1]],[[["UA-227286873-1"],["UA-227286873-2"],null,null,["UA-227286873-3"],null,null,[["G-333MC3Y0E5"],null,null,[["G-333MC3Y0E5",1]]],[["UA-227286873-1",1]],null,[["UA-227286873-3",1]],null,1],[[1,1],[2,2],[5,8],[3,4],[4,5]]],null,4],null,"pk_live_5170syrHvgGVmSx9sBrnWtA5luvk9BwnVcvIi7HizpwauFG96WedXsuXh790rtij9AmGllqPtMLfhe2RSwD6Pn38V00uBCydV4m"]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>