The difficult part of a weekly report usually isn't sending the email. It's making sure every number means what readers think it means, and that missing information doesn't quietly become a zero.
Before automating the report, agree its definitions and decide what should happen when a source is late. A smaller, trusted report is more useful than a polished dashboard nobody can reconcile.
Start with the decision the report supports
Ask the reader what they do after opening it. A delivery manager might need to see jobs at risk this week. An owner might need outstanding quotes and overdue invoices. Those are different reports, even when they draw from the same systems.
Remove figures that don't support the decision. Then give each remaining measure a short definition covering its source, date range, status rules and owner.
“Jobs completed last week” needs more detail than it first appears to. Does it use the customer's sign-off date, the engineer's completion date or the date somebody changed a status? Are cancelled and reopened jobs included? Agree the answer before reproducing the existing spreadsheet automatically.
Write a simple report contract
For each measure, record:
- Meaning: what is being counted or calculated.
- Period: the start, end and time zone used.
- Source: the system and fields that establish it.
- Freshness: how recent the source must be before publication.
- Check: a total, sample or comparison that can reveal a mistake.
- Exception: what the report shows if the data isn't ready.
Keep this with the report rather than in a developer's private notes. When someone asks why a total changed, the business should be able to explain it without reconstructing the workflow.
Schedule after the information is ready
Power Automate supports scheduled cloud flows and time-zone settings. Scheduling determines when work starts. It doesn't establish that another system has finished updating its figures.
For a fictional service business, a Monday report could depend on a Sunday job-system export. The workflow should check that the expected export arrived and covers the right period. If it hasn't, the report can be held and its owner alerted.
Another reasonable design is to send a clearly marked partial report. State which source is missing and when it was last updated. Don't carry forward last week's figure under this week's heading without explaining it.
Separate zero from unavailable
A total of zero can be a valid business result. A failed connection or empty download is a different result. Treating both as zero makes the report appear complete when it isn't.
Try these checks before distribution:
- Did every required source respond and cover the intended period?
- Are required fields present, with dates and amounts in the expected form?
- Do totals reconcile with a control figure from the source?
- Is an unexpected jump or fall flagged for review?
- Can a reader find the records behind a surprising number?
Set any tolerance from the business's actual history. A made-up percentage shouldn't become a rule that approves financial or operational figures.
Keep delivery and correction manageable
Use an approved recipient list and share only the detail each audience needs. A management summary doesn't automatically require exporting every customer record into an email attachment.
Give each report a period and generation time. If a correction is necessary, identify the corrected version and explain what changed. Quietly overwriting an attachment can leave colleagues making decisions from different figures.
Start by preparing reports for an owner to check. Automate distribution later if the definitions, completeness checks and recipient rules are working reliably.
Test a bad week as well as a normal week
Use a small fictional dataset where you can calculate the expected result yourself. Include a reopened job, a late record, a missing export and a genuine zero. Test a period boundary and the time zone your business uses.
Keep the manual calculation as an acceptance check when the workflow changes. You don't need to maintain the whole old spreadsheet process indefinitely, but you do need a way to establish that the new report is right.
The useful result is a report someone can act on, with enough context to recognise its limits. Count time spent checking and correcting it as part of the ongoing process.