Your Schedule, Your Inbox

Reports arrive on the schedule you set

Pick the report type, email, cadence, and time. It lands in your inbox daily, weekly, or monthly — in your store's timezone. The CSV file matches exactly what you'd download manually.

For DTC teams where more than one person needs the same true profit figure, on the same day, without having to ask for it.

Starter+
P&L
Weekly · Monday
Active
09:00 AM SGT 1 recipient
Orders
Daily
Active
07:00 AM SGT 2 recipients
Tax
Monthly · 1st
Active
09:00 AM SGT 1 recipient
From
Your Store – NetNet Reports
Your weekly P&L — week of Apr 21–27
Tue, Apr 28, 2026 at 9:00 AM

This week's net profit was $3,284. Revenue up 8% from last week. Shipping fees and payment processing were your largest cost drivers.

P&L_2026-04-27.csv
485 KB

Generated against live data, every time

Same pipelines that power manual exports: store orders, ad platforms, carrier APIs, everything live when the report ships. No overnight batch, no stale data.

Every report type, daily to monthly

P&L

Revenue, COGS, shipping, fees, discounts, net profit, all margins

Orders

Order ID, date, revenue, net profit, POAS, all cost breakdown

Products

SKU, units sold, gross profit, COGS %, margin tier color

Tax

Tax collected, refunded, net tax liability by jurisdiction

Customers

New vs returning, repeat rate, refund rate, LTV by cohort

Fill out the form once

Report type, email address, cadence (daily/weekly/monthly), day of week or month, and time in your store's timezone. Pause without deleting. Daylight saving handled automatically — 9:00 AM stays 9:00 AM all year.

After each send, next occurrence is recalculated. Month-length clamps work too — set it for the 31st and February gets the 28th.

Fields
Report type
P&L, Orders, Products, Tax, Customers
Email
Any address, verified server-side
Cadence
Daily · Weekly · Monthly
Time
24-hour picker, your timezone
Day / Month
Weekday or day 1–31

Email CSV = manual download

Same CSV builder powers both paths: HTTP export and scheduled email. One pure function per report type, shared code, zero divergence. Byte-identical guaranteed.

How it works
Manual download
GET /api/export/pnl → build_pnl_csv()
Scheduled send
Celery task → build_pnl_csv()
Result
Identical columns, rows, totals

Sent automatically, on the second

Every 60 seconds a background job checks for schedules due. When the time arrives, it pulls live data, builds the CSV, and ships via email. If a send fails, error logs in isolation — other schedules keep running. Check Settings › Report Schedules for next-send times.

Always your local time

Time picker shows your store's IANA timezone. You pick 9:00 AM Asia/Singapore; report ships 9:00 AM Asia/Singapore, year-round. Daylight saving handled automatically. Form and Settings display times in your timezone, not UTC.

Store Timezone
Asia/Singapore (UTC+8:00)
You pick
09:00 AM
Ships at
09:00 AM SGT (every time)

View and control everything in Settings

P&L
Weekly · Monday
Active
Next send
Mon, 24 Jun 9:00 AM
Orders
Daily
Active
Next send
Today 8:00 AM
Customers
Monthly · 1st
Paused
Next send
Jul 1 10:00 AM

Set up a schedule from the Reports page; it starts sending on the cadence you choose at the time you pick, in your timezone.

Why a scheduled report beats a dashboard you have to remember to open

A dashboard reports to whoever visits it. In practice that means whoever remembers, which in a busy month is nobody, and the period during which a problem was cheap to fix passes without anyone looking.

A report that arrives on a schedule inverts that. The numbers turn up whether or not anyone thought about them, and the moment they look wrong is the moment someone notices — which is usually while there is still time to respond.

It also settles the question of which numbers matter. A dashboard offers everything and implicitly asks the reader to decide what is important; a report states a position. Over time the second is what builds a shared understanding of how the business is doing.

Choosing a cadence that gets read

Weekly suits most stores. It is frequent enough to catch a change while the period is still open and infrequent enough that each one carries real signal rather than noise — daily variance in a store doing tens of orders a day is mostly randomness.

Daily earns its place when spend is high and moving, because a day of misdirected advertising is expensive and a week of it is worse.

Monthly is a review rather than a control. It is the right cadence for overheads and fixed costs, which do not move week to week, and the wrong one for anything you might want to act on.

Reports are generated against live data at send time rather than from a cached snapshot, so a figure that has settled since — a carrier adjustment, a late refund — is reflected rather than frozen at whatever it looked like when the schedule was created.

Scale profitably.

Know what every order made you.

Install Free on Shopify