# Get Your Daily Revenue Total by Email, Automatically, using n8n

> Build a daily n8n report: a 5pm Schedule Trigger, the workflow time zone, Google Sheets rows filtered to today, Summarize to total it, and a Gmail email.

Source: https://learn.ynteractive.com/content/n8n-schedule-trigger-google-sheets-daily-report · Updated 2026-10-14 · Free from Stepthrough (https://learn.ynteractive.com)

## Practice it step by step

[Start the free practice](https://learn.ynteractive.com/modules/n8n-schedule-sheets-report)

[Take the full module: why it matters, practice and a quick check →](https://learn.ynteractive.com/courses/n8n-jump-start/5)

You do every step yourself in a practice copy of n8n. It checks your work as you go, and “Do it for me” finishes any step you get stuck on. Free, about 9 minutes, and nothing touches your real accounts. [Open full screen](https://learn.ynteractive.com/modules/n8n-schedule-sheets-report)

Free · Live now · [n8n Automation Toolkit](https://learn.ynteractive.com/content/course/n8n-automation-toolkit) · [n8n](https://learn.ynteractive.com/content/tool/n8n) · Google Sheets · Gmail · ~9 min · 38 steps · Intermediate

Updated October 14, 2026. Built against the tool’s current screens and checked step by step. [How we check this lesson](https://learn.ynteractive.com/content/about#how-we-check)

Plenty of small businesses keep their day in a spreadsheet and spend 20 minutes every evening adding it up by hand, or skip it and find out how the week went too late. [n8n](https://learn.ynteractive.com/content/tool/n8n) can do that for you on a clock. In this free n8n [Schedule Trigger](https://learn.ynteractive.com/content/glossary/schedule-trigger) tutorial you build a workflow that runs every day at 5pm, reads only today's rows from a Google Sheet, adds up the revenue with the Summarize node and emails the total with [Gmail](https://learn.ynteractive.com/content/tool/gmail). You also set the workflow's time zone, the one setting that makes most schedules fire at the wrong hour.

## At a glance

| Question | Answer |
| --- | --- |
| What you build | Stop spending 20 minutes every evening adding up the day by hand. In n8n, a Schedule Trigger runs at 5pm, Google Sheets pulls today's jobs, Summarize totals the revenue and Gmail emails it to you. |
| Tools | n8n |
| Time | About 9 minutes, 38 steps in 5 parts |
| Level | Intermediate |
| Cost | Free |
| Ways to learn it | [Practice it step by step](https://learn.ynteractive.com/modules/n8n-schedule-sheets-report) |

### The 5 parts, in short

1. Run it every day at 5pm: Add the first step, On a schedule, Pick the hour, 5pm, and 1 more step.
2. Set the time zone: Open the workflow menu, Settings, Choose the time zone, Save.
3. Get today's jobs: Add the next step, Search for Google Sheets, Google Sheets, Get row(s) in sheet, and 9 more steps.
4. Add up the revenue: Add the next step, Search for Summarize, Summarize, Choose the math, and 4 more steps.
5. Email the total: Add the email, Search for Gmail, Gmail, Send a message, and 4 more steps.

**Start here first:** [Find and Use n8n Templates](https://learn.ynteractive.com/content/find-and-use-n8n-templates) (module 1 of n8n Automation Toolkit)

**In the course:** [Part 9 · n8n Automation Toolkit](https://learn.ynteractive.com/content/course/part-9-n8n-automation-toolkit) (Module 54 of the [full course](https://learn.ynteractive.com/content/course))

**Part of:** [Reports That Build Themselves](https://learn.ynteractive.com/content/paths/reports-that-build-themselves) (step 3 of 5). Next up: [Claude's Excel Skill: Turn a Messy Export into a Clean Workbook](https://learn.ynteractive.com/content/claude-excel-skill-messy-export-to-clean-workbook)

**Part of:** [n8n Jump Start](https://learn.ynteractive.com/content/paths/n8n-jump-start) (step 5 of 14). Next up: [Webhooks and Forms in n8n: Capture Data from Anywhere](https://learn.ynteractive.com/content/n8n-webhook-and-form-trigger-tutorial)

## What you will build

You will build a daily report for Pine Ridge Lawn Care, a small lawn care business in Denver. Its crews log every finished job in a Google Sheet called Pine Ridge Job Log, on a tab called Jobs, with four columns: Date, Customer, Job and Amount. The owner wants one email at the end of each day with the day's revenue, without opening the sheet.

The finished workflow has four steps in a row: a Schedule Trigger, a Google Sheets step called [Get row(s) in sheet](https://learn.ynteractive.com/content/glossary/get-rows), a Summarize step and a Gmail step called Send a message. Once it is published, it runs by itself every day at 5pm Denver time.

## Who this n8n daily report tutorial is for

This module is for business owners, office managers and anyone who already tracks work in Google Sheets and wants a report without building one by hand. You do not need to write code. There is one short expression to paste, and the lesson explains every part of it. You do not need an n8n account to practice.

## The Schedule Trigger and the workflow time zone

The Schedule Trigger can run every few seconds, minutes, hours, days, weeks or months, or on a Custom (Cron) expression. For a daily report, Days with Trigger at Hour and Trigger at Minute is all you need. Add Rule lets one trigger fire at more than one time.

The hour you pick is read in the workflow's time zone, not your computer's. A new workflow uses the instance default, so a 5pm schedule on a New York default fires at 3pm in Denver. Set it once under the three-dot menu, Settings, Timezone. The same time zone is used by $today and $now in expressions, which is why the date filter and the schedule always agree.

A schedule only runs after you [publish the workflow](https://learn.ynteractive.com/content/glossary/publish-workflow). While you build, you can test the whole thing at any time with Execute workflow on the canvas.

## Filtering Google Sheets rows by today's date

Get row(s) in sheet returns every row unless you add a filter. A filter has a Column and a Value, and the column must have that value to be matched. By default n8n reads dates the way the sheet shows them, so write the Date column in a fixed format like 2026-09-28 and build the same text with $today.toFormat('yyyy-MM-dd'). Keep Amount as plain numbers: Summarize only adds up real numbers.

## Summarize: totals without code

The Summarize node works like a spreadsheet total across items. Its aggregations are Append, Average, Concatenate, Count, Count Unique, Max, Min and Sum. Each result gets a name made of the aggregation and the field, such as sum_Amount or count_Job. Click Add Field to add another result, for example a Count of jobs, and use Fields to Split By to get one total per crew or per service.

## How the interactive lesson works

Every step is shown first on the left, in the Watch panel, with a short voice-over. Then you do it yourself on the right, in Your turn, on a practice copy of n8n. If you get stuck, press Do it for me. No sheet is read, no email is sent and nothing is published, so you can practice freely and then build it for real.

## Try it yourself, free

Reading the steps is a start. Doing them is how it sticks. The interactive module walks you through every click in a practice copy of n8n, checks each step, and never touches your real accounts.

[Start “Get Your Daily Revenue Total by Email, Automatically, using n8n”](https://learn.ynteractive.com/modules/n8n-schedule-sheets-report)

## Step by step: Get Your Daily Revenue Total by Email, Automatically, using n8n

All 38 steps of the interactive module, in order. In the module you watch each one, then do it yourself in a practice copy that checks your work.

### 1. Run it every day at 5pm

1. **Add the first step.** This is a new, empty workflow. Click **Add first step…**.
   Every evening, Pine Ridge's owner adds up the day's jobs by hand. Let's hand that job to a workflow. It starts with a trigger.
2. **On a schedule.** Under **What triggers this workflow?**, choose **On a schedule**: *Runs the flow every day, hour, or custom interval*.
   Nobody clicks anything to start this report. It runs on a clock.
3. **Pick the hour.** **Trigger Interval** is already **Days**, and **Days Between Triggers** is **1**: once a day. Open **Trigger at Hour**.
   The defaults already say every day: Trigger Interval, Days, and one day between triggers. What time?
4. **5pm.** Choose **5pm**. Leave **Trigger at Minute** at **0**.
   Leave Trigger at Minute at zero.
5. **Close the node.** The schedule is set. Close the node with the **×** at the top right.
   Five PM, every day. But five PM where? Close the node.

### 2. Set the time zone

6. **Open the workflow menu.** The schedule follows the workflow's time zone. Click the **⋯** menu next to the workflow name, at the top left.
   A schedule runs on the workflow's time zone, and a new workflow starts on a default one. Pine Ridge is in Denver, so check it.
7. **Settings.** Choose **Settings**.
8. **Choose the time zone.** **Timezone** shows the default, here **Default - America/New York**. Click it, type **denver** and choose **America/Denver**.
   Here the default is New York, so Pine Ridge would get its report at three in the afternoon.
9. **Save.** Click **Save**.
   Now 5 PM means 5 PM in Denver.

### 3. Get today's jobs

10. **Add the next step.** Click the **+** on the right of **Schedule Trigger**.
    Next, read the job log.
11. **Search for Google Sheets.** In **Search nodes...**, type **sheets**.
    Search for sheets.
12. **Google Sheets.** Click **Google Sheets**.
13. **Get row(s) in sheet.** Under **Sheet Within Document Actions**, click **Get row(s) in sheet**.
    This time we read rows instead of adding them.
14. **Choose the spreadsheet.** If you connected Google Sheets before, **Google Sheets account** is already picked (if not, create the credential and sign in with Google). Open the **Document** list.
    Your Google Sheets account is already connected here. If yours isn't, create it and sign in with Google.
15. **Pick the job log.** Pick **Pine Ridge Job Log**.
    Pick Pine Ridge Job Log. The crews add a row for every job they finish.
16. **Choose the tab.** Open the **Sheet** list.
17. **Jobs.** Choose **Jobs**.
    Without a filter, this step would return every row in the log, from every day.
18. **Add a filter.** Under **Filters**, click **Add Filter**.
    You only want today's jobs. Under Filters, click Add Filter.
19. **Choose the column.** Open the **Column** list.
    It shows the headers from your sheet.
20. **Date.** Choose **Date**. In this sheet, dates are written year-month-day, like 2026-09-28.
    In this sheet, dates are written year, month, day.
21. **Match today's date.** In **Value**, paste the expression **{{ $today.toFormat('yyyy-MM-dd') }}**. It is today's date, in the same format as the sheet. Because it has double curly braces, the field switches to **Expression** by itself.
    In Value, put today's date as an expression. Dollar today is today, in the workflow's time zone, and toFormat writes it year, month, day, like the sheet. The double curly braces switch the field to an expression.
22. **Close the node.** Close the node with the **×**.
    The sheet step now only returns rows where Date is today. Close the node.

### 4. Add up the revenue

23. **Add the next step.** Click the **+** on the right of **Get row(s) in sheet**.
    Each job comes out as its own item. For the report you want one number: the total.
24. **Search for Summarize.** In **Search nodes...**, type **summarize**.
    Search for summarize.
25. **Summarize.** Choose **Summarize**: *Sum, count, max, etc. across items*.
    It works like a spreadsheet total across all the items. No code needed.
26. **Choose the math.** Under **Fields to Summarize**, **Aggregation** starts at **Count**. Open it.
    Under Fields to Summarize, Aggregation starts on Count. You want a total, so open it.
27. **Sum.** Choose **Sum**.
    It adds the numbers together.
28. **Which field?.** In **Field**, type **Amount**: the column to add up. (*Enter the field name as text.*)
    In Field, type Amount. That is the column to add up. The name goes in as plain text, just like the hint says.
29. **Test it.** Click **Execute step**. n8n runs the steps before it too, so it reads the sheet first.
    It runs the steps before it too. On the left, the sheet step returned five rows, only today's. On the right, one item: sum underscore Amount, 545.
30. **Close the node.** The output field is called **sum_Amount**. Close the node with the **×**.
    Remember that name, sum underscore Amount. You will use it in the email. Close the node.

### 5. Email the total

31. **Add the email.** Click the **+** on the right of **Summarize**.
    Last step: send the number to the owner.
32. **Search for Gmail.** In **Search nodes...**, type **gmail**.
    Search for Gmail.
33. **Gmail.** Click **Gmail**.
34. **Send a message.** Under **Message Actions**, click **Send a message**.
    Your Gmail account is already connected, like the sheet.
35. **To.** In **To**, type the owner's address: **owner@pineridge-lawn.example**.
    In To, type the owner's email address.
36. **Subject.** In **Subject**, type **Pine Ridge daily report**.
    Give it a subject, like Pine Ridge daily report.
37. **Message.** In **Message**, paste **Revenue from today's jobs: ${{ $json.sum_Amount }}**. The part in curly braces is the total from Summarize. Below the field, n8n shows the result: **Revenue from today's jobs: $545**.
    The part in curly braces pulls in sum underscore Amount from Summarize. Underneath, the result shows the real email line: 545 dollars.
38. **Close the node.** Close the node with the **×**.
    The report is ready: trigger, sheet, total, email. Close the node.

## Frequently asked questions

**Why does my n8n schedule run at the wrong time?**

Usually the workflow time zone. Open the three-dot menu, choose Settings and set Timezone to your own zone, then save and publish again.

**Does the Schedule Trigger run before I publish?**

No. It only fires on its own once the workflow is published. Use Execute workflow to test it while you build.

**What happens on a day with no rows?**

The sheet step returns no items, and n8n stops the workflow there, so no email is sent. If you want a "no jobs today" email instead, look at the Always Output Data setting on the sheet step.

**Is this course really free?**

Yes. Stepthrough is completely free, and the practice copy needs no accounts. To build it for real you need your own n8n and Google accounts, and some of those cost money once you use them for real work.

[Start this module free](https://learn.ynteractive.com/modules/n8n-schedule-sheets-report)

- Previous in n8n Automation Toolkit: [n8n: Talk to Your Google Sheets with ChatGPT, from Zero (Free Credits or API Key, Google, Sheet, Chat)](https://learn.ynteractive.com/content/n8n-talk-to-google-sheets-chatgpt-ai-agent)
- Next in n8n Automation Toolkit: [n8n AI Agent with Tools: Check Google Calendar, Book It and Log It](https://learn.ynteractive.com/content/n8n-ai-agent-tools-google-calendar-booking)

## More in n8n Automation Toolkit

- [Find and Use n8n Templates](https://learn.ynteractive.com/content/find-and-use-n8n-templates): Skip the blank canvas. Find a ready-made workflow in the n8n template gallery, import it into your workspace, connect Google Sheets and Gmail, test it with a real form…
- [Litescrape in n8n: Swap SerpApi for a Cheaper Search API](https://learn.ynteractive.com/content/litescrape-n8n-serpapi-alternative): Switch a weekly n8n competitor-price workflow from SerpApi to Litescrape's Google Shopping API: change the HTTP Request URL, move the key into a Bearer Auth credential…
- [n8n: Execute Step, Execute Workflow and Publish](https://learn.ynteractive.com/content/n8n-execute-step-execute-workflow-publish): Learn the buttons in today's n8n editor: run one node with Execute step, pin test data, run everything with Execute workflow, then Publish and copy the Production URL.
- [Webhooks and Forms in n8n: Capture Data from Anywhere](https://learn.ynteractive.com/content/n8n-webhook-and-form-trigger-tutorial): Stop losing quote requests between inboxes. Build a form n8n hosts for you, catch entries from your own website with a webhook, and save every request to one Google…
- [IF and Switch in n8n: Route Work by Rules](https://learn.ynteractive.com/content/n8n-if-and-switch-node-tutorial): Send each request where it belongs. Use an If node to split big jobs from small ones, then a Switch with named outputs and a fallback to route by service.
- [Get Alerted When an n8n Automation Fails, and Let It Retry by Itself](https://learn.ynteractive.com/content/n8n-error-handling-retry-on-fail-error-workflow): A silent failure means a stale price sheet and wrong quotes. In n8n, build an error workflow that emails you, make a flaky step retry by itself, send its failures down…

[All 11 modules in n8n Automation Toolkit](https://learn.ynteractive.com/content/course/n8n-automation-toolkit)

## More n8n tutorials

- [n8n AI Agent Tutorial: Save Social Media Ideas to Google Sheets](https://learn.ynteractive.com/content/n8n-ai-agent-tutorial-google-sheets): Build an AI agent for BrightPath Marketing that generates social media post ideas and saves them to Google Sheets — chat trigger, AI Agent, system prompt, model…
- [Lovable + n8n: Build a Web App with an AI Backend](https://learn.ynteractive.com/content/lovable-n8n-web-app-ai-backend): Build a contact form in Lovable and connect it to an n8n workflow — webhook trigger, AI Agent, Google Sheets, Gmail, and a Respond node that ties it all together.
- [AI Receipt Extractor: Receipts to Google Sheets with n8n](https://learn.ynteractive.com/content/ai-receipt-extractor-n8n-google-sheets): Drop a photo of a receipt into an n8n chat. An AI agent reads it, pulls out the date, vendor and amount, picks a category, and adds a row to Google Sheets.
- [n8n AI Email Responder: Draft Gmail Replies Automatically](https://learn.ynteractive.com/content/ai-email-responder-gmail-drafts-n8n): Build an n8n agent that watches your Gmail, reads each new customer email, and writes a reply as a draft in the same thread, ready for you to check and send.
- [Daily Job Alerts: Email Each Tech Their Jobs from Google Sheets with n8n](https://learn.ynteractive.com/content/n8n-daily-job-alerts-google-sheets-gmail): Every morning at 7, n8n reads a plumbing company's jobs sheet, skips anything not assigned yet, and emails each job to the tech it's assigned to — customer, address…
- [Gmail AI Triage: Auto-Label Every Email and Draft Replies](https://learn.ynteractive.com/content/gmail-ai-triage-labels-drafts-n8n): Build an n8n workflow that reads each new email, sorts it as a lead, a client or an invoice with a Text Classifier, adds the matching Gmail label, and drafts a reply to…

## Terms in this lesson

Plain-English definitions, each with an example from a free lesson.

[Schedule Trigger](https://learn.ynteractive.com/content/glossary/schedule-trigger) · [Get rows (reading a sheet)](https://learn.ynteractive.com/content/glossary/get-rows) · [Workflow canvas](https://learn.ynteractive.com/content/glossary/workflow-canvas) · [Execute step](https://learn.ynteractive.com/content/glossary/execute-step) · [Publishing a workflow](https://learn.ynteractive.com/content/glossary/publish-workflow) · [Execute workflow](https://learn.ynteractive.com/content/glossary/execute-workflow)

[The full AI glossary](https://learn.ynteractive.com/content/glossary)

## Browse related tutorials

[n8n Automation Toolkit (11)](https://learn.ynteractive.com/content/course/n8n-automation-toolkit) · [n8n tutorials (40)](https://learn.ynteractive.com/content/tool/n8n)
