Weekly branded client PDF reports from Google Sheets

By General Input

Every Monday, turn each client's Google Sheets KPIs into a branded PDF report, email it from Gmail, and archive a copy in Notion.

Integrations

  • Google Sheets
  • PDF.co
  • Gmail
  • Notion

Type

Agentic Task

Categories

  • Marketing
  • Operations

Every Monday at 8am in my local time zone, I want an agent to send each of my clients a branded weekly KPI report by email and archive a copy of each report in Notion. The trigger is a cron schedule (weekly, Monday 08:00).

Inputs the agent reads at the start of each run:

Use Google Sheets to read my master "Clients" sheet (I'll provide the spreadsheet ID and tab name at setup). Each row represents one active client and has these columns: client_name, recipient_email, kpi_spreadsheet_id, kpi_range (the A1 range that holds the weekly metrics table, e.g. Weekly!A1:H10), and notion_archive_page_id (the parent Notion page or database the report should be filed under).

For each client row, the agent should run the following sequence:

1) Pull the client's metrics. Use the Google Sheets "Get Values" operation against kpi_spreadsheet_id and kpi_range to read the latest weekly metrics table. The first row is headers (metric name, this week, last week, change, target, etc.) and each subsequent row is one metric.

2) Draft the commentary. Based on the metrics, write a one-page plain-language commentary for the client covering: what moved week-over-week and why it matters, what to watch in the coming week, and one or two concrete recommendations. Keep it specific to the numbers, not generic. The judgment in this workflow is the commentary, so spend real reasoning here. Speak directly to the client in second person.

3) Render the branded PDF. Use the PDF.co "Convert HTML Template to PDF" operation. I have a Handlebars HTML template already saved in PDF.co's HTML Templates section (I'll provide the template ID). Pass these template variables: client_name, report_week (e.g. "Week of May 19, 2026"), commentary (the markdown or HTML body you drafted), and metrics (the array of rows from the sheet so the template can render the metric table). The response includes a temporary PDF URL; capture it for the next two steps.

4) Email the PDF to the client. Use the Gmail "Send a Message" operation to send from my connected Gmail account to recipient_email. Subject like "Your weekly report, week of {{report_week}}". Body is a short friendly intro (2-3 sentences) referencing one highlight from the commentary and noting the PDF is attached or linked. Attach the PDF by fetching it from the PDF.co URL and including it as an attachment, or include the URL inline if attaching is not possible.

5) Archive in Notion. Use the Notion "Create a Page" operation with notion_archive_page_id as the parent. Title the new page "{{client_name}} — {{report_week}}". In the page body, paste the full commentary as readable blocks (headings, paragraphs, bullets where appropriate), include a link to the PDF URL, and include a small metrics summary block so the team can scan past performance without opening the PDF.

Error handling: if any single client row fails (missing sheet, bad email, PDF.co error), log the failure with the client name and the step that failed, then continue with the next client. Do not abort the whole run because one client is misconfigured. Return a summary at the end listing how many clients succeeded, how many failed, and the reason for each failure.

Style notes for the commentary and email: warm but professional, no em dashes, no jargon, no hedging language like "it seems" or "perhaps". Reference the actual numbers, not vague directions. Recommendations should be specific and actionable, not platitudes.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageWin back LiveChat visitors whose chats went unansweredLet support send one-off Loops emails without an engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seatsBuild audience segments from product usage and push to Loops