Notes on building SendTidings

There’s a particular kind of guilt that settles in when you run a small agency. The sites are fine. Everything is updated, backed up, secure, fast. And the client hasn’t heard from you in six weeks because nothing has gone wrong.

A lot of agencies and freelance developers know this feeling. The “no news is good news” policy isn’t really a policy — it’s a slow erosion. The retainer keeps invoicing, and the value you provide becomes invisible.

I’ve been meaning to fix it for years. I finally have, and the fix turned into a tool other agencies can use too: SendTidings.

The shape of the problem

Most reporting tools fall into one of two shapes.

One is enormous — the marketing analytics platform built for performance teams running paid campaigns across nine channels. Powerful, but the wrong tool for the job if all you want is a tidy monthly summary saying “the site’s fine, here’s what happened.”

The other is platform-bound. WordPress-only plugins that politely pretend the rest of the web doesn’t exist. Most of the agencies I know don’t build on a single stack — there’s a Shopify site here, a static Astro site there, a WooCommerce store from 2018 still ticking over. Tools that ignore that force you to either standardise your client base or juggle three different reporters.

I wanted something that didn’t care what platform a site was built on. Plug it in, get a report.

A few things I decided early

No client dashboard. I’ve never met a client who said “you know what would really improve our relationship? Another portal.” A monthly email they can skim in thirty seconds is the whole interface. Anything more elaborate is for the agency, not the client.

The free tier has to be properly useful. Not crippled, not “free for fourteen days.” One real client site, monthly reports, every data source. If it doesn’t deliver value at the free tier, it won’t at any other. The upgrades exist for people running more sites and wanting their own branding — not as a paywall around the basic thing.

Branding belongs to the agency. On paid plans the SendTidings logo comes off the report entirely. The client sees your brand. I’ve always found it a bit cheeky when reporting tools splash their own name across someone else’s client deliverable. You did the work; the report should look like it.

Open source eventually. The plan is a self-hostable build under AGPL-3.0, but not yet. Open source is a maintenance commitment in itself, and I’d rather get the project stable first than do it badly.

What’s been interesting to build

A few technical bits I’ve been pleased with.

The data layer abstracts over the platforms. A “site” is a site, whether the numbers are coming from Plausible, Google Analytics, a WordPress REST endpoint, or a Shopify API. Every new integration is another adapter to the same internal model — adding the next platform is a small, well-shaped piece of work rather than a rewrite.

Reports are generated server-side and emailed. No React app for the client to load, no cold-start problem. The thing that lands in their inbox is the product. There’s an admin app for the agency, but that’s where the SPA-shaped complexity lives. The client side is just HTML.

The temptation when building a SaaS is to keep adding configurability. I’ve been deliberately pushing back on that. Every report is the same shape because making the shape itself opinionated is part of the value. If you wanted to spend a Tuesday afternoon configuring report sections, you’d already be using one of the heavy tools.

How it sits with agency work

I still use MainWP to manage the WordPress side of my client list — great tool, not trying to replace it. They sit side by side: MainWP for site management, SendTidings for the monthly story to the client.

The first sites loaded into SendTidings are my own. Real reports, going to real people, before I encourage anyone else to use it. Dogfooding is the only way to find out whether a thing actually works.

A poke around

sendtidings.com — free tier is genuinely free, no card needed. Adding a site takes a few minutes.

If you’ve also been quietly bad at client reporting for years on end, you’re not alone. Building it has been a small relief.

↑ Top