Stay organized with collections
Save and categorize content based on your preferences.
check_circle
What are Google Chat apps?
ondemand_video
Video
Learn about Google Chat apps and their benefits.
check_circle
Anatomy of Google Chat apps: Architecture
ondemand_video
Video
Learn about the most common architectural options for Google Chat apps.
check_circle
Anatomy of Google Chat apps: Basic interaction
ondemand_video
Video
Learn about basic interaction elements in Google Chat apps.
check_circle
Anatomy of Google Chat apps: Advanced interaction
ondemand_video
Video
Learn about advanced interaction elements in Google Chat apps.
check_circle
Design principles for Google Chat apps
Optional
Learn about the design principles of Google Chat apps.
check_circle
Build a webhook
Optional
Learn how to send asynchronous messages to Google Chat with incoming webhooks.
check_circle
Build a Google Chat app with Apps Script
emoji_objects
Codelab
Learn how to create a Google Chat app that lets users get information and perform actions without leaving the conversation.
check_circle
Build a Google Chat app with Node.js
emoji_objects
Codelab
Learn how to build and deploy a Google Chat app that features an interactive poll with Node.js and Cloud Functions.
check_circle
Publish Google Chat apps
Optional
Learn how to publish Google Chat apps.
Build apps for Google Chat quiz
Pass this quiz to earn a badge.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Missing the information I need"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Too complicated / too many steps"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Out of date"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Samples / code issue"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Other"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Easy to understand"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Solved my problem"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Other"
}]
{
"confidential": False
}