Create a smart home Action

Smart home Actions are structured differently than traditional Actions. The process for how users trigger actions and the actions' conversations are handled for you; all you need to do is handle smart home intents on your service.

For a full end to end sample of a Google smart home Action:

Go to the samples

If you are not using the end to end sample, follow these instructions.

To create a smart home Action:

  1. Set up an OAuth 2.0 server for account linking.
  2. Create an Actions on Google developer project.
  3. Add authentication to your project

Set up an OAuth 2.0 server

Make sure that you have a public OAuth 2.0 server for authenticating users.

Authentication allows you to link your users' Google accounts with user accounts in your authentication system. This allows you to identifiy your users when you receive a smart home intent on your fulfillment. Google smart home only supports OAuth with an authorization code flow.

For smart home, you need to use OAuth with an authorization code flow, which required you to have two endpoints, the authorization and token exchange endpoints. See account linking with OAuth.

When you have authenticated a user, the user's third-party OAuth 2 access token is sent in the Authorization header when smart home intents are sent to your fulfillment. All users have to perform account linking, because device information is sent to the Assistant with the action.devices.SYNC intent, which requires account linking.

Your smart home Action is expected to support multiple Google users connecting to the same user account (for example, when users give access to other users in their household). If your service can't support multiple user connections, it should provide errors at account linking time.

Create an Actions on Google developer project

To create a developer project:

  1. Go to the Actions console.
  2. Click New project.
  3. Enter a name for your project and click Create Project.
  4. Once your project is created, click Smart Home.
  5. Under Quick Setup, click Name your Smart Home action. Enter the name for your Action and click Save. This is the name of the smart home Action that you can connect to from the Google Home app.
  6. Click Actions in the left menu.
  7. In the Fulfillment URL field, enter a URL for the backend server that will provide fulfillment for the smart home intents and then click Save. To learn more about how fulfillment works, see fulfillment and authentication.
  8. In the upper menu, click Test. In the Simulator page, click Start Testing to finish your project setup. To learn more about testing, see Test and share smart home Actions.

You have successfully created a smart home Actions project and provided a fulfillment URL. You can now add authentication to your project.

Add authentication to your project

Once you have setup your authentication server and created a project, you need to add authentication to your project:

  1. Go to the Actions console.
  2. Select your smart home Actions project.
  3. Select the Develop tab, then click Account linking in the left navigation.
  4. Fill out the information for your authentication service and click Next.
  5. Click Save.

You have successfully added authentication to your smart home Action project. You are now ready to create the logic to process smart home intents. See process intents.