How to Build a Grok Bot logoGrok Bot That Sends Your Weekly Report for You, With Your Approval

60 min, plus one supervised week (two Fridays)

Before this: How to Build a Grok Bot That Writes Your Weekly Report From a Google Sheet
Next: How to Build an AI Team With Grok Bot: a Chief of Staff and 3 Specialist Bots

Every Friday at 3 PM, the Bot reads your Sheet, writes the report, drafts the team email or Slack post, and pings you. One message from you ("send it"), one tap on the card, and it goes out. Nothing leaves without your OK.

Checked October 17, 2026. Researched and drafted with help from Grok Bot logoGrok Bot, one of the agents covered.

Why build this

In I2 you built a Bot that writes your weekly report. You still had to copy it into an email, add the right people, fix the subject line and send it.

This upgrade does that last mile. The Bot turns the report into a ready-to-send email (or a Slack post), addressed to the right people, in your voice. It stops right before sending.

Why it's Advanced: this Bot sends messages to other people. A wrong number in front of your boss or a client is worse than a wrong number in a file only you see. So the design keeps you in the loop on every send, and it plans around how Grok Bot logoGrok Bot handles approvals during routines.

What you'll build

FRIDAY 3:00 PM (routine)
STEP 1  Read this week's numbers (Drive/Sheets, read only)
STEP 2  Run the math check (calculate with code, list the rows used)
STEP 3  Write the report file (/workspace/weekly-reports/)
STEP 4  Draft the message:
          - Gmail: saved as a draft to your team list, or
          - Slack: draft text shown in chat
STEP 5  Ping you: "Report ready. Reply 'send' or tell me what to change."
        |
        v
YOU (any time Friday)
STEP 6  Read the draft -> "send it" -> approval card -> Allow once -> sent

The key design choice: the routine prepares, and you trigger the send in a live chat. Grok Bot logoGrok Bot approvals that come from a routine expire after about 10 minutes. Approvals in a chat you're in wait for you. So we never ask the routine to send.

Who it's for

  • Team leads who owe a Friday update.
  • Agency owners who report numbers to clients every week.
  • Small-business owners who update a partner or investor.
  • You've built I2: Weekly report from a Google Sheet, and it's been right at least two Fridays in a row.

What you'll need

  • Grok Bot logoGrok Bot on The X Subscription Premium ($30/month) or higher, or a paid Cursor plan, or a linked older SuperGrok subscription. Grok Bot logoGrok Bot isn't included in the Free or Plus plans. (Plans checked Oct 17, 2026.)
  • Your Report Writer Bot and its "Weekly report from Sheet" skill from I2.
  • Gmail plugin (for an email update) and/or Slack plugin (for a channel post).
  • A short list of who gets the report: email addresses or one Slack channel.

What you'll get

  • The full workflow with the "prepare, then you send" pattern.
  • Safety rules for sending and posting.
  • The email draft prompt and the Slack post prompt.
  • A recipients allowlist, so it can never email the wrong person.
  • A two-skill chain: "Weekly report" → "Weekly report: send pack".
  • The Friday routine, plus a "nudge" routine if you forget to approve.
  • A two-Friday supervised test, troubleshooting and variations.

Time

About 60 minutes to build. Then supervise two Fridays before you rely on it.

At a glance

ItemDetails
AppsDrive + Sheets (read) · Gmail (draft, then send after OK) · Slack (post as you after OK, optional)
PlanGrok Bot logoGrok Bot on Premium ($30/mo) or higher
Risk levelMedium-high: messages go to other people. Mitigated by an allowlist, drafts first and approval in a live chat
PrerequisiteI2: Weekly report from a Google Sheet

Quick questions

Will it send the report on its own? No. It prepares everything and waits. You say "send it" in chat, then confirm on the draft card (Send email) or approval card (Allow once).

Why not let the routine send it at 3 PM? Approvals that start from a routine expire after about 10 minutes, and we don't want sending to depend on that. You stay the last step.

Does the Slack post come from a bot account? No. Grok Bot logoGrok Bot's Slack plugin posts as you, in channels you can post in. That's another reason to approve each post.

Can it attach the report file? Attaching a file to a Gmail draft through the plugin is not verified. This guide puts the report in the email body, which most people read anyway. Keep the file for your records.

What if a number is wrong after it's sent? Send a correction yourself. That's why the math check runs before every draft.

Before you start: 10-minute safety setup

  1. Ask first rules. Open Settings → General → Auto-review and make sure these exist:
    • Ask first before sending any email.
    • Ask first before posting any Slack message.
    • Ask first before editing, clearing, or deleting anything in Google Sheets or Google Drive.
  2. Never "Always allow" sending. When an approval card for an email or Slack post appears, always choose Allow once.
  3. Local computer off. Settings → General → Bot → Execution on Local Computer → Never allow.
  4. Time zone. Settings → General → Bot → Timezone.
  5. Notifications on for this Bot (Bot settings → Notifications), so you see "Report ready" on your phone.

Step 1: Add sending rules to the Bot

Open your Report Writer Bot → Edit Profile and add these lines to the end of its description:

Sending rules:
- I approve every send. Never send an email or post to Slack from a routine. Routines prepare drafts and tell me they're ready.
- Only send when I say "send" in this chat, and only to the allowlist below.
- Allowlist (email): [name@company.com], [name2@company.com]
- Allowlist (Slack): #[channel-name]
- Never add, remove or guess recipients. If someone asks to be added, tell me.
- Before any draft, run the math check. If a number can't be checked, put [CHECK] next to it and tell me.
- Never include files, links or data that aren't in the report.

Why an allowlist: a Bot can only email people you've written down. It can't "helpfully" CC someone it found in an old thread.

Step 2: Connect Gmail and/or Slack

  1. Connect apps → check Gmail is installed and signed in (from I1 or I2).
  2. For Slack: search Slack → Add → sign in to the right Slack workspace.

Know what these do (per Grok Bot logoGrok Bot's help page):

  • Gmail can draft and send in your one connected mailbox.
  • Slack posts as the Slack user you connected, not as a separate bot, and only in channels you can post in. To use another Slack workspace, connect that workspace too.
  • Plugins are account-wide: every Bot on your account can use them. The Ask first rules cover all your Bots.

Step 3: Build the "send pack" by hand

Run your I2 report first (type / and pick Weekly report from Sheet). When it's right, paste:

For email:

Turn this week's report into an email to my team.

To: only the email allowlist in your description.
Subject: "Weekly update: [week of Month D]"
Body:
- 2-sentence headline
- the metrics table (as a simple table)
- 3 wins, 3 risks (one line each)
- "Questions or corrections? Reply to this email."
- Sign off: "Thanks, [your name]"

Save it as a Gmail draft. Don't send it.
Then show me the full draft here: recipients, subject and body.

For Slack:

Turn this week's report into a Slack post for #[channel-name].
Format: a bold one-line headline, then 5 short bullets (top metrics with % change), then "Full report in thread or ask me."
Under 120 words. No @here or @channel.
Show me the draft text here. Don't post it.

Check the draft like a manager would:

  • Are the recipients exactly your allowlist?
  • Do the numbers match the report file?
  • Is anything confidential in it that shouldn't go to this audience?

Now do the send step by hand, once:

Send the email draft now.

A draft card (Send email / Discard) or an approval card appears. Read the recipients and subject. Press Send email, or choose Allow once. For Slack, the same thing: Post the Slack draft to #[channel-name] now.

Tip: for your very first send, put only yourself on the allowlist. Check how the email looks in your inbox, then add your team.

Step 4: Chain it into a skill

Save a skill called "Weekly report: send pack".
It runs after "Weekly report from Sheet" and:
1. runs the math check and marks anything unverified with [CHECK]
2. saves a Gmail draft to the email allowlist (subject "Weekly update: [week of Month D]", format I approved)
3. writes the Slack draft text for #[channel-name] (format I approved) and shows it in chat
4. ends with: "Report ready. Reply 'send email', 'post slack', 'send both', or tell me what to change."
Rules: never send or post inside this skill. Never change recipients. If the Sheet has no data this week, say so and make no drafts.

Step 5: The Friday routine

Every Friday at 3:00 PM my time:
1. run the "Weekly report from Sheet" skill for this week
2. then run the "Weekly report: send pack" skill
3. post the drafts here and notify me
Never send or post from this routine. If the Sheet can't be opened or has no new rows, post "No report this week: [reason]" and stop.

Optional nudge (5+ minutes after any other routine):

Every Friday at 4:30 PM my time, if this week's report drafts haven't been sent yet, post one short reminder here: "Weekly report is still waiting for you." Don't send anything.

Test it: click the Bot's name → Details → Routines → pick the routine → Test. The test does real work. It will save a Gmail draft, but it won't send, because the skill never sends.

Step 6: Approving on Friday

When the notification arrives:

  1. Open the Bot's chat (desktop or phone).
  2. Read the drafts. Ask for changes in plain words: Change risk #2 to say the dip was the holiday. Keep everything else.
  3. Say send email (or post slack).
  4. Grok Bot logoGrok Bot shows either an editable draft card (check the recipients and body, then choose Send email / Send message, or Discard) or an approval card (choose Allow once). Either way, read the recipients before you press anything.

Because you asked in a live chat, the approval waits for you. It doesn't expire the way routine approvals do.

On your phone: the same Bots and chats are in the Grok Bot logoGrok Bot mobile app, and you can approve cards and send drafts there too (Send Email / Send Message, or Discard).

Your supervised two Fridays

  • Numbers in the draft match the Sheet (check 2 yourself).
  • Recipients match the allowlist exactly.
  • Nothing was sent or posted before you said so.
  • The "No report this week" path works (test with an empty week once).
  • The tone fits your team.

What you may loosen afterward: nothing about sending. You can stop checking every number yourself once the math check has been clean for a month. Keep Allow once for every send, forever.

Make it yours: 3 variations

Client version (one email per client):

My Sheet has a "Client" column. Make one draft per client, each sent only to that client's address in this list: [Client A: a@x.com, Client B: b@y.com]. Never put two clients in one email.

Manager version (include next week's plan):

Add a section "Next week" with 3 priorities from the tab "Plan" in the same Sheet.

Month-end version: a second routine on the 1st of each month, same skills, comparing last month with the month before. Keep it at least 5 minutes away from other routines.

Safety settings recap

SettingWhereChoose
Ask first: emailSettings → General → Auto-reviewAsk first before sending any email.
Ask first: SlackSettings → General → Auto-reviewAsk first before posting any Slack message.
Ask first: Sheets/DriveSettings → General → Auto-reviewAsk first before editing, clearing, or deleting anything in Google Sheets or Google Drive.
Approval cards for sendingIn chatAllow once only
RecipientsBot descriptionAllowlist, never guessed
NotificationsBot settingsOn

Troubleshooting

ProblemLikely causeFix
Approval card says ExpiredThe send was started by a routine, not youDon't send from routines. Say "send email" yourself in the chat
Draft went to the wrong Gmail accountYou connected a different mailboxGmail connects one mailbox at a time. Reconnect the right one
Slack post failedYou're not in that channel, or it blocks postingJoin the channel, or pick one you can post in
Email looks messy in OutlookTables don't always surviveUse simple bullet lines instead of a table in the email.
Numbers differ from the fileReport and draft were made from different runsBuild the draft only from the report file in /workspace/weekly-reports/ for this week.
Routine didn't runPaused, signed out, or usage limitBot's name → Details → Routines; check recent runs

Same job in other agents

Gemini Spark logoGemini Spark (now "Task" in Gemini logoGemini): native fit for Google users. Gemini logoGemini tasks can read Sheets, write the report into a Google Doc, and draft or send Gmail. Google says Gemini logoGemini asks for confirmation before sending communications. Use a weekly time-based schedule. Gaps: Google AI Pro or Ultra, personal Google account, 18+; not in the EEA, UK, Switzerland or Nigeria. Google warns a schedule may run when you're offline, so keep "draft only" in the task.

Dots logoDots (OpenAI): OpenAI's examples include keeping a deck updated, and you can connect it to Slack. In the ChatGPT logoChatGPT mobile app, open your dot's profile → Customize → Custom rules and set messages to Ask before taking action. Gaps: ChatGPT logoChatGPT Pro or Business Premium.

Hermes logoHermes Agent: xlsx and google-workspace skills cover the report; it can message you on chat apps. Gaps: command-line setup; runs only while its computer is on.

Muse logoMuse (Meta): partial. It can write the report from an uploaded CSV and asks before sending email. Gaps: a live Google Sheets connector is not verified; reported US and Canada only.

Next step

Ready for Bots that work together? Grok Bot logoA3: Build an AI Team With Grok Bot makes this Bot your "reporting" specialist, alongside Inbox, Calendar and Research Bots.

Get the free safety checklist

7 rules for letting an agent act for you, plus a note when prices or features change. We re-check every month. Read the 7 rules.

No spam. Unsubscribe anytime.