Products / Automation

Stop rebuilding the same report every Monday.

PulseReport pulls from the systems you already run, builds the report once, and sends it on a schedule — then watches the numbers between reports and tells you when one moves enough to matter.

Built for

Automated reporting & alerting

  • Agencies producing the same client report every month
  • Operators whose weekly numbers live across four dashboards
  • Anyone who finds out about a problem from a monthly report

The problem

What this replaces.

Monday morning is three hours of copying numbers into a deck.
The numbers come from four dashboards and none of them agree.
By the time the monthly report shows the drop, it is a month old.
Every client wants the same report in a slightly different format.

What's inside

4 modules that carry the work.

Pulls from where the data is

One report, several sources, reconciled once.

  • GA4, Google and Meta Ads, your own database, and any REST source.
  • Metric definitions written once, so "revenue" means the same thing everywhere.
  • Timezone and currency normalised across sources rather than assumed.
  • Source freshness shown on the report, so stale data is visible as stale.

Reports that send themselves

Built once, delivered forever, branded per recipient.

  • Templates per client or per team, with their own logo and colours.
  • Scheduled daily, weekly or monthly, to email or Slack.
  • PDF, spreadsheet or a live link, depending on who is reading.
  • Commentary fields for the human context a number cannot carry.

Alerts between reports

A drop should not wait for the end of the month.

  • Thresholds on any metric, absolute or relative to its own trend.
  • Anomaly alerts that account for weekday and seasonal patterns.
  • A "nothing arrived" alert when a source stops reporting — silence is a signal.
  • Alerts to the person who owns the number, not to a group nobody reads.

Trustworthy numbers

A report is worthless if the first question is "is this right?"

  • Every figure traces back to its source query.
  • Missing data shows as missing, never as zero.
  • Historical restatement is flagged when a source revises past numbers.
  • Full run history — what was sent, to whom, containing what.

What changes

The difference on the ground.

Zero prep

the recurring report builds and sends itself

Alerted early

a drop is caught between reports, not after

Never a false zero

missing data is shown as missing

Built with

Node.jsMySQLGA4 & Ads APIsRedis + BullMQPDF renderingSlack & email

You get the source. No licence to renew, no vendor who can switch it off.

Questions we get about PulseReport.

Can it match our existing report format?

Yes — templates are built to your layout and branding. If you send us the report you produce today, that is what starts coming out automatically.

What sources can it read?

GA4, Google Ads, Meta Ads, LinkedIn Ads, your own databases, and anything with a REST API. A source we have not built yet is one adapter, not a new project.

How do the alerts avoid being noise?

Thresholds are relative to each metric's own normal range, including weekday and seasonal patterns, so a quiet Sunday does not page anyone. You tune sensitivity per metric.

Does it replace our BI tool?

No. BI tools are for exploring. PulseReport is for the recurring report and the alert — the things that should happen without anyone opening a tool at all.

Ready to move 20% faster?

Get your free custom strategy in 24 hours. No cost. No pressure. Just a clear plan.