Back to Articles

Inside the buildEngineering notes

The report is the last step

Inside an analytics reporting system that connects platform data, validates what the numbers mean, and makes delivery an observable part of the workflow.

See the workflow

Six platforms. One finished report.

Google Analytics, Instagram, Facebook, X, YouTube, and Mailchimp feed one reporting workflow.

Illustrative replay · sample report, no live metrics. Simplified to explain the flow; timing is illustrative.
Capabilities in practice
  • Workflow automation
  • Data contracts
  • Operational visibility

A weekly report should help someone make a decision. First, they need to trust its comparisons, understand missing data, and know where delivery stands. In partnership with TMAI, we built an analytics reporting system around those responsibilities.

Separate the data from the document

n8n collects platform data and assembles it into a shared format. That format defines the reporting periods, metrics, sources, and limitations. A separate Python service validates the input and renders the branded PDF; n8n handles email and Teams delivery steps.

This lets integrations and page designs evolve separately, with a common definition of what the data means.

Architecture at a glance
Architecture / from source to delivery
  1. 01Collectn8n connects the platform APIs
  2. 02ValidateTyped periods, metrics, and source coverage
  3. 03RenderPython produces the branded PDF
  4. 04DeliverEmail, Teams, and recorded outcomes

Source limitations accompany the metrics. Operational state is recorded separately.

The data contract separates collection from presentation. Delivery remains a distinct step with its own outcome.

Give a missing number an explanation

If a social platform cannot return data, replacing the missing value with zero would turn an integration problem into an apparent performance collapse.

The contract distinguishes complete, partial, and unavailable coverage. Partial totals require a disclosure; comparisons are rejected when the current and previous totals represent different sets of sources. A cross-channel timeline also makes clear that events happening on the same day do not establish cause.

Make failures actionable

The cross-channel page raises a layout error when meaningful text cannot fit. A report request interrupted by an uncertain network response keeps its operation identity for reconciliation instead of blindly starting again. The workflow also includes a send ledger and delivery checks.

How the edge cases are handled
Decision points / different failures, different responses
A source is missing

Label the gap. Do not convert an unavailable metric into zero.

The page cannot fit

Stop with a layout error. Keep meaningful text from being silently clipped.

The start request is uncertain

Preserve the operation identity and check its state before repeating it.

A data gap, an invalid presentation, and an ambiguous start request are not interchangeable failures.

Give people control over the cycle

Herald, the reporting operations bot, offers report, resend, health-check, and status commands. It checks its recorded operation against n8n before describing whether work is still underway.

A successful run does not prove someone received or read the email. Distinct states help operators investigate the right step.

The business capability is connecting integrations, validation, document design, and controls so a recurring report stays understandable when requirements change.

About the cover illustration
Gold data lines pass through a translucent validation plane toward a stack of report pages
Editorial illustration of collection, validation, and a finished report. No client data is shown.

Keep reading.

All articles

Bring us the work behind the work

A recurring report, a tool your team needs, or a process spread across too many systems. Start with the job you want to make easier.

Talk through your workflow