Commands
Configure AsyncUp by @mentioning it in the space where reports post. When a space has several standups, prefix commands with the standup id, e.g. @AsyncUp #2 time 09:30 — status lists all standups with their ids.
help shows the essentials; help all lists every command.
Configuration
The person who runs setup becomes the standup's first admin (setup itself is open to everyone in the space — there is nobody to gate it before the first standup exists). Changing a standup needs a permission on it, which its admins (Managers) hold: standups.configure for the schedule, questions and run now, people.manage for the roster, admins and roles, schedules.manage for people's days, and standups.archive to archive (Roles and permissions). status, trends, blockers, blocker, poll, polls, export and help are open to everyone in the space. status without a #id prefix reports every standup in the space.
| Command | Effect |
|---|---|
setup [name] | Create a standup reporting to this space (creator becomes admin; names must be unique across the workspace) |
run now | Open today's run immediately and prompt everyone — see the whole flow without waiting for the schedule. Refused once today's deadline has passed, since the run would close at once; a scheduled run never opens after its deadline either |
archive | Retire the standup: prompts and reports stop, history stays |
add @user… | Add participants (mandatory by default) |
remove @user… | Remove participants |
mandatory @user… / optional @user… | Count toward the wrap-up report, or not |
vacation @user… / back @user… | Mark people away — no prompts, not counted as missing |
off @user <date|range> [reason] / working @user <date> | Mark someone away or working on given days; off @user cancel <date> undoes (Personal schedules) |
days @user mon-thu|adhoc|reset | Someone's days on this standup |
admin @user… / unadmin @user… | Manage the standup's admins, who are its Managers |
role @user <role> / role @user remove <role> | Grant or revoke a role on this standup, say Viewer for a stakeholder. Roles follow email, so role pat@example.com Viewer works for someone not yet in Chat. You can only grant a role whose permissions you hold here |
roles | Who holds a role on this standup, and the roles you can grant |
time HH:MM | Prompt time — interpreted in each participant's own timezone (participants set theirs by DMing timezone <IANA>; default is the standup timezone) |
deadline HH:MM | When the run closes and the wrap-up posts — standup timezone |
remind <minutes> | Nudge non-submitters this many minutes before the deadline (0 disables) |
timezone <IANA> | Standup timezone, e.g. Asia/Kolkata |
days mon,tue,… | Which days the standup runs (default mon–fri) |
questions | Show the current question list |
questions set Q1 | Q2 | … | Replace the questions (1–10, pipe-separated) |
questions reset | Back to the default three questions |
mood on|off|anon (also anonymous) | Mood dropdown, with an optional comment. Moods are seen in the web app only, never in the space; anon hides who felt what there too |
escalate @user | DM this person when blockers stay open too long |
escalate days N / escalate off | Escalation threshold (default 2 days) / disable |
digest on|off | Weekly digest posted after the last run of the week |
Insights (everyone)
| Command | Effect |
|---|---|
status | Configuration + today's progress (submitted / pending / away) |
trends | Last 4 weeks: participation % (mood stays out of the space) |
blockers | Open blockers with ids, age, who's tagged, and update counts |
export | How to download a CSV of submissions |
Working a blocker together (everyone)
Blockers get an id (blockers shows them). When your answer opens a blocker, the bot DMs you its card with 👥 Tag people: pick anyone in your Workspace who can help. Tagged people get the same card, so they can pull others in too. From a space, tag by command:
| Command | Effect |
|---|---|
blocker 12 tag @Asha @Rohit | Tagged people get an interactive DM card (✋ Acknowledge · 👥 Tag people · 📝 Add update · ✅ Resolve) |
blocker 12 update <text> | Post an update — DMed to the reporter and everyone tagged, and added to the blocker's thread in the space |
blocker 12 resolve | Close it (reporter, tagged people, or admins) |
How collaboration changes the lifecycle:
- Tagging makes it explicit-resolve. Untagged blockers still auto-resolve when the reporter's next standup is blocker-free; once a blocker is tagged or has updates, only an explicit resolve closes it — someone's clean standup can't silently end a conversation others are having.
- Acknowledge stops the nudges. Tagged people get one DM per day (at run close) until they hit ✋ Acknowledge; posting an update acknowledges implicitly. The reporter is notified of every ack.
- Everything is tracked. Updates and resolution land in a per-blocker thread in the team space, and open blockers keep appearing in wrap-ups, digests, and escalation pings until resolved.
Polls (everyone)
Quick team decisions without a meeting — a card in the space, one tap to vote:
| Command | Effect |
|---|---|
poll Question? | Option A | Option B | Post a poll card (2–6 options). Votes update the card live; voting again changes your vote |
polls | List open polls with vote counts, and open polls with questions with how many have answered |
poll <id> results | Current tallies with voter names |
poll <id> close | Close it and post final results (creator or admin) |
DM self-service
Anyone can DM the bot directly:
| Message | Effect |
|---|---|
vacation (or ooo) | Pause prompts for yourself across all your standups |
off <date|range> [reason] / working <date> | A day off (e.g. off tomorrow comp off) or an extra working day |
off list / off cancel <date> | Upcoming entries / withdraw one |
days [#standup] mon-thu|adhoc|reset | Your days on one standup; on several, the bot asks which and gives the number (Personal schedules) |
back | Resume prompts |
unskip | Take back today's skip while the run is open — or press ↩️ Undo skip on the prompt card |
timezone <IANA> | Get prompts at the standup's prompt time in your timezone (all your standups) |
timezone reset | Follow each standup's timezone again (timezone alone shows the current setting) |
Behavior notes
- Editing: re-open Fill standup before the deadline to edit — the posted card updates in place and is marked edited.
- Skip today: the prompt card has a 🏖️ Skip today button. It asks for a one-line reason, posts it in the day's thread, and lists you as away, not missing. Undo skip removes that thread reply.
- Every field is required: each question and the mood is marked (required). The mood comment, Want to say why?, is the one optional field. Submitting with one empty brings the form back with a red line naming what's missing and your answers kept; nothing posts until all are filled. (Google Chat can't grey out Submit for apps yet.) Answer the blockers question with "none" when there are none. The skip reason works the same way.
- Formatting:
*bold*,_italic_,~strike~,__underline__,`code`and-lists show as formatting on the posted card, in blocker cards and in the web app. Exports, webhooks, the API and MCP keep the text exactly as typed. Plain-text messages such as nudges and the digest show Chat's own syntax, without underline. - Pre-fill: the "yesterday" answer is pre-filled from your previous "today" answer.
- Late submissions after the deadline still post, flagged late, until midnight in the standup's timezone; the wrap-up isn't recalculated.
- Editing after the deadline needs a manager's approval: Ask to edit on the prompt card sends the standup's managers a card. Once approved, answers can change until midnight, and the posted card names who approved it.
- Untagged blockers auto-resolve when the same person submits a blocker-free standup on a later day; tagged ones need an explicit
blocker <id> resolve. Withescalate @userconfigured, the contact gets one DM at run close listing every blocker that newly crossed the threshold — each blocker is escalated once. - Calendar OOO (when enabled): participants with an Out of office event in Google Calendar are automatically marked away for that day's run. Emails come from the Directory when the service account has its admin role (works for everyone immediately), otherwise they are learned from Chat interactions — kicking in after a person has used the bot at least once.
- Roster snapshots: the day's roster is frozen when the run opens, so
addandvacationapply from the next run.removealso takes the person off a run that is still open, unless they have already answered. - Custom questions apply from the next run. Questions containing the word "blocker" get blocker tracking; questions containing "yesterday"/"today" get pre-fill behavior.
The prompt card
The DM card that asks for today's standup keeps up with you: once you submit it shows when (with Edit answers until the deadline), and once you skip it shows your reason with ↩️ Undo skip. At the deadline it offers Ask to edit, then shows whether your request is waiting, approved (with Edit answers until midnight), declined or lapsed. Reminders and nudges update the same way.
On a standup whose roster follows a Google Group, add keeps working: people you add stay on. remove keeps a group member off at later syncs, the same as unticking them in the web app's People grid (group rosters).