The Monday report, off the desktop and on a schedule.
An export from the finance system, a spreadsheet of adjustments, some cleaning, a join, a summary, and twelve emails. Every analytics team has one, and it is usually the hardest job to hand over.
The report one person rebuilds by hand, on a license only they have.
It lives on one laptop. The database password is saved inside the workflow, the adjustments arrive as a spreadsheet by email, and the twelve regional managers get their numbers when that one person remembers to send them.
Everyone else can ask for a change, and then they wait. Nobody else can open the workflow, so nobody else can see why a number moved.
What it replaces
- A workflow on one laptop → a pipeline anyone with an account can open
- A password inside the workflow → a shared connection, encrypted, used only by the people you choose
- Twelve emails by hand → one node, one message per region
- Did it go out? → a delivery row for every message
- Last week's copy of the file → a numbered version you can compare or restore
The same shape it always had, built from nodes you can look up.
Every expression is ordinary SQL, and [bracket] column names still work, so muscle memory survives the move.
Built from these nodes, each with its own documentation page
- Excel Files: one sheet, a named sheet, or every sheet stacked into one table
- SQL Server input: a table picked from a live browser, or your own query
- Join: matched rows, plus the rows from each side that matched nothing
- Fuzzy Match: one customer, however many ways it was spelled
- Summarize: totals, averages and counts by any grouping, with conditions
- Excel Report: a styled workbook with number formats and a chart
- Send Email: one message per run, per group or per row, with the rows attached
Seven nodes, configured in forms, tested on real rows.
Press Test at any point and every node shows the 50 rows it produced, with their columns and types, so you check each step as you build it.
Bring in the adjustments with Excel Files.
Read the first sheet, one sheet by name, or every sheet stacked with a column saying which tab each row came from. Skip the title rows above the header, and limit the read to a block of cells so a totals row underneath is ignored.
Sheets: name → "2026 Q1" Skip rows: 3 Cell range: A1:F200
Read the finance system with SQL Server input.
Pick the table from a live browser of the server's schemas and tables, or write the query. Its columns appear before anything runs. The password lives on the connection, not in the pipeline.
Put them together with Join.
Join on customer_id and you get three outputs: the rows that matched, and the rows from each side that matched nothing. The adjustments that found no customer become a list you can read instead of rows that vanished.
Left.customer_id = Right.customer_id
Collapse spelling variants with Fuzzy Match.
Find duplicates groups "ACME Corp" and "Acme Corporation" into one customer and tags each row with a group id, a match score and which row survives. Keep the survivors with a Filter.
Find duplicates · name (Typos & spelling) · 85%
Do the arithmetic with Summarize.
Group by region and month and add the totals you need. An aggregation can carry its own condition, so a paid-only total needs no extra filter.
Group by: region, month · Sum of amount · Only when [status] = 'paid'
Write the workbook with Excel Report.
A striped table with a filter on every column, a frozen header, column widths that fit, a currency format on the money columns and a real Excel chart beside the data. Numbers land as numbers and dates as dates, so nobody sees "number stored as text".
Table style: Striped · Column revenue → Currency ($#,##0.00) · Column chart: month by revenue
Send each manager their own rows with Send Email.
One email per group: group by region, address it from the data, and attach only that region's rows as a workbook. Anything in {{ }} is an expression in the same SQL the rest of the pipeline uses. Maximum messages is required, and a run that would send more sends nothing at all.
To: {{ manager_email }} Subject: Weekly revenue, {{ region }} File name: {{ region }}-revenue
It runs on Monday at 7, and anyone on the team can see how.
On a schedule in your timezone
A schedule fires every Monday at 07:00 in your instance's timezone and runs the version deployed to Production. Pausing it is one switch in its own dialog.
A Test never sends
Press Test and every message is rendered against your real data and listed in the Messages tab, with recipients, subjects and attachment sizes, and nothing leaves the building.
Anyone can open it
Accounts cost nothing, so the manager who asks for a change can open the pipeline, run it on 50 rows and see exactly what it does, instead of joining a queue.
Every change is recorded
Save a numbered version whenever you want a restore point, compare any two before you deploy, and the audit log records who changed what.
A mistake in the template sends nothing at all.
Everything that can be checked is checked before the first email goes out: every address, every template and every group. If one region's rows name two different managers, the run is refused and names the region and both addresses, rather than sending one manager another manager's numbers.
The Send Email node's own output is a delivery log: one row per message with the recipient, subject, status, error, row count and attachment size. Wire it to a table and you have a send history; leave it unwired and a Test run still shows it.
| to | subject | status | rows | attachment |
|---|---|---|---|---|
| north@acme.example | Weekly revenue, North | sent | 412 | North-revenue.xlsx |
| south@acme.example | Weekly revenue, South | sent | 388 | South-revenue.xlsx |
| west@acme.example | Weekly revenue, West | sent | 501 | West-revenue.xlsx |
Scope worth knowing. Excel Report writes one sheet per node, so two sheets are two nodes and two files, and Excel itself stops at 1,048,576 rows a sheet. A formula written as IF … THEN … ENDIF becomes CASE WHEN … THEN … END.
Read further
Bring the report you rebuild every Monday.
Thirty days of the full Enterprise product on your own server, against your own data. If you would rather see it first, book a walkthrough with the people who build it.