Weekly Grain call tracker in Google Sheets with a Slack roll-up
Every Friday at 4pm, log the week's Grain customer calls to a Google Sheet and post a totals roll-up with the top five longest calls to Slack.
Build me a weekly customer-call tracker that runs every Friday at 4pm. Trigger: cron, weekly on Friday at 16:00 in the team's local timezone.
Step 1. Call Grain's List Recordings, filtered to the past 7 days. Paginate fully using the cursor field on the response so no calls are missed.
Step 2. For each recording from step 1, call Grain's Get Recording with the participants and AI summary enrichment so we have the AI summary text, list of participants, duration, and the public share URL.
Step 3. For each recording, append one row to a Google Sheets tracker using Append Values. The spreadsheet ID and tab name should be inputs the user configures. Columns in order: date (the recording start time, ISO date), meeting title, internal owner (the participant whose email matches the team's domain, default the first internal participant), external attendees (comma-separated names), external company (derived from the email domain of the first external attendee, skip generic domains like gmail.com, outlook.com, yahoo.com, icloud.com), duration in minutes (rounded), summary URL (the Grain share URL), and AI summary text.
Step 4. After every row is written, send a Slack roll-up using Slack's Send a Message to a channel the user configures. The message should include: total number of calls this week, total hours of customer calls (sum of durations, rounded to one decimal), the top 5 longest calls as a bulleted list with title, duration, and a clickable link to the Grain summary URL, and a final line linking to the tracker spreadsheet.
Treat this as a deterministic code workflow with discrete nodes. There is no per-call drafting, classification, or LLM step required. Every action is a documented CRUD or list operation. If a recording is missing a summary or participant data, still write the row with the available fields and leave the missing cells blank rather than failing the run.
Inputs the user should configure at setup: the team's email domain (used to identify internal vs. external attendees), the Google Sheets spreadsheet ID and tab name, and the Slack channel for the roll-up.
Additional information
What does this prompt do?
- Pulls every Grain recording from the past seven days, including AI summary, participants, length, and share link.
- Appends one tidy row per call to a Google Sheets tracker with date, title, internal owner, external attendees, company, duration, summary, and link.
- Posts a Friday afternoon Slack roll-up with total calls, total hours on customer calls, the five longest calls of the week, and a link to the full sheet.
- Runs on a fixed Friday 4pm schedule so the team starts every weekend with a clean record of the week.
What do I need to use this?
- A Grain account with API access (Business or Enterprise plans expose participants and AI summaries).
- A Google account with edit access to the tracker spreadsheet.
- A Slack workspace and the channel you want the Friday roll-up posted in.
How can I customize it?
- Change the schedule (daily, every Monday morning, or end of the month) or the channel that receives the roll-up.
- Edit the spreadsheet columns to match how your team slices calls, like account owner, stage, or product line.
- Tweak the roll-up content, for example the number of longest calls highlighted or the inclusion of new logos versus existing customers.
Frequently asked questions
Do I need a paid Grain plan?
Where does the company name come from?
Can I send the roll-up somewhere other than Slack?
What happens if a call is missing a summary?
Will it create duplicate rows if the workflow runs twice?
Stop rebuilding your call log from memory every Friday.
Connect Grain, Google Sheets, and Slack once, and Geni delivers a clean weekly customer-call tracker before the weekend starts.