n8n Intermediate: Real Business Workflows · Module 9 of 11

n8n: Weekly Client Status Emails from a Google Sheet, Written by AI

n8nIntermediate~14 min practice49 steps

Why this matters

Every Monday you open the client tracker and rewrite your messy notes as five polite status emails. It takes an hour, and the notes are all already in the sheet.

In this module you build the workflow that does it. It wakes up every Monday at 8am, reads each client row, lets OpenAI turn the rough notes into a short friendly update, and saves each one as a Gmail draft addressed to that client.

Nothing sends by itself, because the last step only creates drafts. A bad week costs you a quick edit, not an embarrassing email.

What you’ll build

A four-step workflow in a line: Schedule Trigger, Get row(s) in sheet, Message a model and Create a draft. n8n runs the steps after the sheet once per row, so five clients means five AI calls and five drafts.

You check the output at every step and finish by reading the drafts in Gmail.

What you need

  • Nothing to start the practicen8n, the sheet, OpenAI and Gmail are practice copies. Larkspur Marketing Studio and its clients are made up.
  • An n8n account, to do it for realSign up with this link (affiliate link: I may earn a commission, at no cost to you).
  • A Google Sheet called Client StatusSeven columns in row 1: Client, Contact, Email, Project, Status, Notes, Next Step. One row per client, with your rough notes in Notes. The lesson shows the sheet before you connect it.
  • An OpenAI API keyGo to platform.openai.com, open API Keys in the left menu, click Create new secret key, name it and click Copy. OpenAI shows it only once. Paste it into the API Key box of a new OpenAI credential in n8n. Add a few dollars under Settings, Billing, because the API is billed separately from ChatGPT Plus. Never show the key to anyone.
  • Google and Gmail connectedIn the sheet step and the draft step, click Create new credential and choose Sign in with Google.

Concepts

3 ideas you’ll use in the practice.

Start on a schedule, and pick the day

Choose On a schedule, set Trigger Interval to Weeks, tick Monday only (n8n starts with Sunday ticked) and pick 8am. A schedule only fires after you publish.

The prompt is built from your columns

In Message a model, the prompt uses the row’s fields, like {{ $json.Contact }}, {{ $json.Project }}, {{ $json.Status }}, {{ $json.Notes }} and {{ $json['Next Step'] }}. It asks for a short, friendly email body under 90 words. A fast, cheap model like GPT-4.1-mini is enough for a few sentences, and five emails cost a fraction of a cent.

The AI only knows what is in your notes, so keep the notes honest.

Drafts first, then trust

Create a draft puts the email in Gmail Drafts, addressed with the Email column, and sends nothing. The text comes from the model’s output. Read one draft against its row before you do anything else.

Check which account each node picked, because n8n may pre-fill an old one. A dead key shows up as 401 Authorization failed. Switch the last step to Send a message only after a few weeks of drafts you trust.

Practice

Do every step yourself in a practice copy of the real tool. It checks your work, and “Do it for me” finishes any step you get stuck on.

n8nn8n: Weekly Client Status Emails from a Google Sheet, Written by AI49 steps · ~14 min · nothing touches your real accounts

Do it for real

Now repeat it in your own account. Tick each step as you go.

Quick check

3 questions to check you’ve got it.

1. Why is the last step Create a draft instead of Send a message?

  • Drafts are faster
  • Nothing goes out until you have read it, so a bad AI line costs a quick edit
  • Gmail does not allow sending
Show the answer

Nothing goes out until you have read it, so a bad AI line costs a quick edit. The AI only knows your notes, so you read each draft before it leaves your desk.

2. The sheet has five clients. How many AI calls and drafts does one run make?

  • One
  • Five, one per row
  • Ten
Show the answer

Five, one per row. n8n runs the steps after the sheet once for each row.

3. Message a model fails with 401 Authorization failed. What is the likely cause?

  • The sheet is empty
  • The OpenAI credential has a dead or wrong key
  • The schedule is wrong
Show the answer

The OpenAI credential has a dead or wrong key. A 401 means the credential was refused. Check which account the node picked and create a fresh key if needed.

Up next · Module 10

AI Social Media Idea Agent

Start module 10 →