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.

Deterministic Code
GrainGoogle SheetsSlackSalesOperationsMeeting WorkflowsDaily Digests
PromptCreate

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.

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.

FAQs

Do I need a paid Grain plan?
Yes for the richest version. Pulling AI summaries and participant details on each recording requires Grain's Business or Enterprise plan. The basic recording list works on any plan, so you can still log titles, dates, and links if you are on a lower tier.
Where does the company name come from?
We derive it from the email domain of the first external attendee on the call. Generic domains like gmail.com and outlook.com are skipped so personal email contacts do not muddy your tracker.
Can I send the roll-up somewhere other than Slack?
Yes. Swap the Slack step for an email, a Teams message, or a Notion page. The workflow is modular, so the final delivery channel is easy to change without touching the data collection.
What happens if a call is missing a summary?
The row still gets written with whatever data is available. The summary cell stays blank rather than blocking the rest of the row, so your tracker never gets stuck on incomplete recordings.
Will it create duplicate rows if the workflow runs twice?
Each run appends rows for recordings inside the last seven days. If you run it more than once in the same week, you can either filter for the last 24 hours instead or add a quick check against existing rows in the sheet.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Local listing health board for every location you manage

See every Google Maps listing you manage on one screen, ranked worst first, with an audit button that writes the fix list for you.

Local Business Data
Google Sheets
App
Win back LiveChat visitors whose chats went unanswered

Every couple of hours we find the chats your team never answered, email those visitors a real reply, and hand the sensitive ones to a support lead.

LiveChat
Gmail
Slack
Agentic Task
Let support send one-off Loops emails without an engineer

Your team picks a template, finds the customer, checks they are safe to email, then sends it, with every send logged where the whole team can see it.

Loops.so
Stripe
Google Sheets
App
Stop cold emails to anyone with a live deal in Pipedrive

Every night at 2am, pull the contacts on your open and won deals and block them from your cold outreach before the next send goes out.

Mailshake
Pipedrive
Google Sheets
Deterministic Code
iMessage campaign console with pre-flight checks and delivery board

Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.

LoopMessage
Google Sheets
HubSpot
App

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.