How to email a monthly report from Airtable automatically (CSV or Excel)
Updated
A monthly report is simple to describe: on the 1st, send last month's records as a file to the people who need them. An agency sends each client their month of hours. A finance team sends the invoice list to the accountant. In Airtable the hard parts are selecting exactly last month's rows and getting a real CSV or Excel file into an inbox without anyone remembering to do it.
Step 1: a view that holds last month
Whatever sends the report, build the view first. Airtable's relative date filters are easy to misread. According to its help article on filtering, is within the past month means the past 30 days counted from today, not the previous calendar month. On 1 November it returns about 2 October to 1 November. There is an is within this calendar month option for the current month, but no previous-calendar-month option. You have three ways to cover last month:
- Two fixed dates. Filter Date is on or after the 1st and is on or before the last day of the month. It is exact, but you edit the filter every month.
- A formula field. Add a formula that says whether the record's month is the month before today's, and filter on it. It updates itself.
- Month to date. Use is within this calendar month and send on the 28th if a progress report is enough.
Here is a formula for the second approach. It compares the first day of each month and returns Yes when the difference is exactly one month:
IF(
DATETIME_DIFF(
DATETIME_PARSE(DATETIME_FORMAT(TODAY(), 'YYYY-MM-01')),
DATETIME_PARSE(DATETIME_FORMAT({Date}, 'YYYY-MM-01')),
'months'
) = 1,
'Yes',
'No'
)
A shorter version compares text: DATETIME_FORMAT({Date}, 'YYYY-MM') = DATETIME_FORMAT(DATEADD(TODAY(), -1, 'months'), 'YYYY-MM'). Name the field Last month, then create a view with Last month is Yes, any other filters (for example Status is Approved), a sensible sort and only the columns the reader needs. Two cautions. Formulas that use TODAY() are refreshed on Airtable's schedule rather than at midnight, so send the report some hours after midnight on the 1st, not at 00:01. And check a record dated on the last day of a month, in your own timezone, before you rely on the view.
Step 2: choose how the file leaves Airtable
Airtable automation with Send email
Use the At scheduled time trigger with the Months interval: every 1 to 12 months, on a day from the 1st to the 31st or the last day, at a set time. Add Find records on your view, then Send an email and insert the found records. Know the limits, which match what we describe in the guide on emailing more than 100 records:
- A list or grid of records in the body shows at most 100 records. Extra records are left out without a warning.
- The action cannot build a CSV or Excel file. It attaches only files that already sit in an attachment field, up to 100 attachments and 25 MB in total for the built-in and Gmail actions (35 MB for Outlook). See why automations cannot attach a CSV.
- The trigger does not adjust for daylight saving time, so the send time shifts by an hour twice a year unless you edit it.
- A monthly automation uses one run a month. Airtable's Free plan allows 100 runs per month per workspace, and Run a script is unavailable on Free.
This is fine for a short summary email, such as ten rows of totals per client. For a full list, readers get a truncated table they cannot sort.
Zapier or Make
Both can run on the 1st: Zapier with Schedule by Zapier, Make with a scheduled scenario. A typical chain is search the Airtable view, build a CSV, then send it with Gmail or Outlook, or save it to Drive. Zapier's Free plan has 100 tasks a month with two-step Zaps only; multi-step Zaps need the Professional plan (from $19.99 a month billed yearly for 750 tasks). Make's Free plan has 1,000 credits a month and paid plans start at $9 for 10,000 credits. A 500-row view processed row by row can eat a free allowance in one run, so test and read the usage. Our Zapier and Make comparison goes deeper.
A script in an automation
A scheduled automation with a Run a script action can read the view, build CSV text and post it to an email API such as SendGrid or Postmark with fetch. It works, and you own the code, the API key and the failures. See the script guide.
ViewCourier monthly export
ViewCourier is built for this one job, and it is one option among those above. You connect a read-only Airtable token and pick the last-month view. You choose CSV, Excel (.xlsx) or a PDF report, add up to five recipients, and set a monthly schedule: a day from 1 to 28, an hour and a timezone. Each run emails the view as an attachment with a dated filename. The Free plan covers one weekly or monthly export of up to 1,000 rows; Starter (€9) allows 3 exports of up to 5,000 rows; Pro (€19) allows 25 of up to 50,000.
Step by step with ViewCourier
- Create the Last month view described above, and hide fields that clients or the accountant should not see.
- In Airtable, create a personal access token with read-only scopes for the base (
data.records:readandschema.bases:read). - In ViewCourier, add an export: paste the token, select the base, table and view, and choose Excel (.xlsx) for people who live in Excel or CSV for imports.
- Set Monthly, day 1, an hour such as 07:00, and your timezone. Choosing a morning hour leaves the TODAY() formula time to refresh.
- Edit the filename template, for example
Hours-{date}.xlsx; the{date}placeholder is the run date. - Add recipients and, if you like, tick Don't send scheduled emails when the view has no records. Press Send now to test; a manual send always sends.
- Check the first real run on the 1st, then forget about it.
Example: agency monthly client report
An agency tracks hours in a Time entries table with Client, Date, Hours, Task and Billable. It creates a view Client A last month filtered on Client is Client A, Last month is Yes and Billable is checked, sorted by date, with internal notes hidden. Each client has their own view and export, mailed on the 1st at 07:00 to the client's contact and the account manager. Clients get a dated Excel sheet that is the record of what was sent. The Free plan covers one such client; Starter covers three, Pro up to 25.
Example: month-end invoices
A finance team keeps an Invoices table with Invoice date, Amount, Status and Exported. The view filters Last month is Yes and Status is Sent. On the 1st, the accountant gets Invoices-2026-11-01.csv to import into the bookkeeping package. Because the file is a snapshot, late edits do not change the copy already sent. If a correction matters, send another export with Send now.
Which to pick
For a short summary to colleagues who read email in Airtable terms, a native automation is free and enough. When the report must be a real file, a script or Zapier and Make can build one, at the cost of setup and per-run usage. For the least upkeep, a scheduled export service sends the file for you. More examples live in the weekly client report guide, the Excel export guide, the PDF report guide and, if the file also needs to land in cloud storage, saving it to Google Drive or Dropbox.
FAQ
Can an Airtable automation email a monthly CSV report?
It can send a monthly email, using the At scheduled time trigger with a Months interval, but the Send email action cannot create a CSV. It can attach files that already sit in an attachment field, and it can insert up to 100 records as a list or grid in the body. To send a CSV of a view each month you need a script, a tool such as Zapier or Make, or a scheduled-export service.
Does the Airtable filter 'is within the past month' mean last calendar month?
No. Airtable's help article says it means the past 30 days counted from today, not the previous calendar month. For last month's records, use a formula field that compares the record's month with today's, or two date conditions with fixed start and end dates that you edit each month. Airtable also offers 'is within this calendar month', which covers the current month only.
Which day of the month can ViewCourier run a monthly export?
You choose a day from 1 to 28, an hour and a timezone. For a last-month report, the 1st is the natural choice. There is no last-day-of-month option, so a report that must run on the final day needs a different tool, or a month-to-date report on the 28th.
Is the monthly Excel or CSV file a snapshot?
Yes. Each run builds the file from the view as it is at that moment and attaches it, so later edits in Airtable do not change the copy already in the inbox. That is useful for month-end invoicing, because you can keep the file that was actually sent. Delete or archive nothing from the view until the email has arrived.
Is monthly export available on the free plan?
Yes. The Free plan includes one export that runs weekly or monthly, up to 1,000 rows, as CSV, Excel or PDF, to up to five recipients. More exports, larger views and daily schedules need Starter at 9 euros a month or Pro at 19 euros, and new accounts get a 14-day trial without a card.
Let ViewCourier do it
Connect a read-only Airtable token, pick a view, and choose daily, weekly or monthly at your time and timezone. Every run emails a clean CSV, Excel or PDF file to up to five people. Free plan for one weekly or monthly export; the 14-day trial of daily schedules needs no credit card.
More guides
- How to export an Airtable view to CSV automatically
- How to email an Airtable view on a schedule (daily, weekly, monthly)
- Automatic Airtable backups to CSV: options and limits
- How to send a scheduled Airtable export to Excel users
- A simpler alternative to Zapier and Make for Airtable CSV exports
- How to send a weekly Airtable report to clients or your manager
- Airtable CSV export tools compared (2026): EasyCSV, On2Air, CSV Getter, Make, ViewCourier
- On2Air alternative for scheduled Airtable CSV exports by email
- EasyCSV alternative for emailing Airtable views as CSV
- Coupler.io alternative for Airtable to Google Sheets (and scheduled CSV email)
- CSV Getter alternative: Airtable views as a live CSV link or a scheduled email
- miniExtensions alternative for scheduled Airtable exports
- Can an Airtable automation email a CSV attachment? (And what to do instead)
- How to email more than 100 Airtable records at once
- Export an Airtable view to CSV with a script (code included)
- How to send a weekly digest of new Airtable records
- Export only new or changed Airtable records every day
- Daily email of overdue tasks from Airtable
- Airtable "Download CSV" missing or not working? Causes and fixes
- Why Airtable attachment links in a CSV export stop working
- How to download CSV from an Airtable Interface (and send it on a schedule)
- How to sync an Airtable view to Google Sheets automatically (no Zapier)
- Pull an Airtable view into Excel with Power Query, refreshable
- Email an Airtable view as a PDF report on a schedule
- How to save an Airtable view as CSV to Google Drive or Dropbox on a schedule
- Free tool: export an entire Airtable base to CSV
- Free tool: export an Airtable base schema (field list)
- Free tool: count Airtable records per table vs your plan limit
- Free tool: export an Airtable base to Excel (.xlsx)
- Free tool: export an Airtable table or view to JSON
- Free tool: print an Airtable view or save it as PDF
- Free tool: download all Airtable attachments at once (ZIP)