Case study: How a 20M-a-day publisher finds lost ad revenue with tinyEmail MCP
Case study Publishing · Reporting & revenue

A publisher sending 20 million emails a day found $5,330 a day in missing ad revenue. With one question.

tinyEmail's MCP Server connects Claude or ChatGPT to your tinyEmail account. For this publisher, that meant seeing daily sends next to LiveIntent ad revenue, catching the gaps, and getting a summary leadership could act on before the next send.

Daily revenue check tinyEmail connected
How did yesterday's newsletters do on LiveIntent revenue? Flag anything that doesn't add up.
Reading 6 newsletters ✓ Checking ad tags ✓ Matching revenue ✓
AI

21.4M emails sent, $38,520 in ad revenue, $1.80 per 1,000 emails.

Local Headlines went to 2.6M people with no ad tag. About $5,330 in revenue wasn't counted.

Example conversation. Figures on this page are illustrative.

$5,330 a day in ad revenue found on untagged sends
~$160K a month that would have gone unnoticed
4 hrs → 5 min for the morning revenue report
Same day to spot a problem, instead of at month-end
The challenge

Two reports that never quite agree

The publisher sends six newsletters a day to more than 20 million people. Every email carries ads from LiveIntent, and those ads pay the bills. tinyEmail knows what was sent and to whom. LiveIntent knows how many ads were seen, clicked, and paid for. Nobody could see both at once.

So every morning, someone on the ad team rebuilt the picture by hand. When a newsletter went out without its ad tag, the money it should have made simply didn't show up, and there was nothing in either report to say so.

A typical reporting morning, before ~4 hours
7:30 Export yesterday's sends from tinyEmail 7:50 Download the LiveIntent revenue report 8:10 Match campaign names across two spreadsheets, row by row 9:40 Chase the rows that don't line up 10:45 Write the update for leadership. The day's first send has already gone out.
What changed

They asked their assistant instead

Once the MCP Server is connected, Claude or ChatGPT works directly with the publisher's tinyEmail account: every campaign, newsletter, tag, and send. The team asks one question in plain English, and the assistant puts sends and LiveIntent revenue side by side.

Daily revenue report prompt

“Compare yesterday's tinyEmail sends with LiveIntent impressions and revenue. Show volume, impressions, clicks, and revenue by newsletter, campaign, tag, and date. Work out revenue per 1,000 emails. Flag missing tags or numbers that don't match, then write a short summary for leadership with recommended actions.”

Sends, campaigns, tags, dates Impressions, clicks, revenue

Yesterday at a glance

Tue, Sep 22 · Eastern Time
Emails sent21,400,000
Ad impressions12,980,000
Ad clicks37,200
Ad revenue$38,520
Revenue per 1,000 emails$1.80down from $2.05 last week
Performance breakdown

Every view the spreadsheet used to give, and a few it couldn't

Revenue per 1,000 emails is the number that ties sending to earning. It shows which newsletters pay their way and which ones quietly stopped.

NewsletterEmails sentImpressionsClicksRevenuePer 1,000 emails
All newsletters 21,400,000 12,980,000 37,200 $38,520 $1.80

Revenue per 1,000 emails, last 7 days

Local Headlines tag missing
$2.04
$2.07
$2.02
$2.05
$2.08
$1.83
$1.80
Sep 16Sep 17Sep 18Sep 19Sep 20Sep 21Sep 22
What didn't match

Three gaps the spreadsheet never showed

The assistant checks every tinyEmail send against LiveIntent's numbers, so mismatches come to the top instead of hiding in row 4,000 of a spreadsheet.

Missing ad tag

~$5,330 a day

Local Headlines went to 2.6 million people on Sep 21 and 22 with no LiveIntent tag, after a template update. None of its ad revenue could be credited. At the rate the other newsletters earn ($2.05 per 1,000), that's about $5,330 a day.

Reports close the day at different times

1.1M impressions shifted

Evening Edition goes out at 9 PM Eastern. LiveIntent's report ends its day at 8 PM Eastern, so those ads landed on the next day's numbers. The assistant moved them back so each day's revenue matches that day's sends.

Revenue with no matching send

$610 unassigned

410,000 impressions in the LiveIntent report used a campaign name that doesn't exist in tinyEmail. It matches an old test newsletter, which suggests an outdated tag is still live in one template.

Executive summary

A leadership update, written before 8:05 AM

The same conversation ends with a summary the team can paste straight into Slack or email. No reformatting, no second pass.

Daily revenue summary · Sep 22Written by your assistant from your tinyEmail account
Headline

We sent 21.4M emails and earned $38,520 in ad revenue, or $1.80 per 1,000 emails. That's 12% below last week's $2.05. Nearly all of the drop comes from one newsletter going out without its ad tag.

What's working

Morning Brief is our best earner at $2.30 per 1,000 emails. Evening Edition follows at $2.10.

Recommended actions
1

Add the ad tag back to Local Headlines before today's send. Recovers about $5,330 a day.

2

Remove the old test tag from the template it's still in. $610 a day is landing against a newsletter we no longer send.

3

Report both sources on Eastern Time. Evening Edition's revenue will stop appearing on the wrong day.

4

Check every template for its ad tag after any design change. Ask the assistant for a tag check before sends go out.

The result

Reporting went from a chore to a check-in

Before

Two exports and a spreadsheet, every morning

Campaign names matched by hand

Missing tags found at month-end, if at all

Leadership update ready mid-morning

With tinyEmail MCP

One question in Claude or ChatGPT

Sends and revenue lined up automatically

Missing tags flagged the morning after

Summary with actions ready in minutes

Questions publishers ask next

“Which newsletter earned the least per 1,000 emails this week, and why?
“Check every scheduled campaign for a missing LiveIntent tag before it sends.
“Compare this month’s revenue per 1,000 emails with last month, by newsletter.
“Which tags drive the most ad clicks per email sent?
“Show every day this month where impressions dropped but sends didn’t.
“Write this week’s revenue summary for our leadership meeting.
Set it up

Three steps, about five minutes

Video tutorial

If you have not set up the tinyEmail MCP yet, watch this tutorial to connect it to ChatGPT or Claude Code and start using it today.

Watch the tutorial
01

Get your API key

In tinyEmail, go to Account Settings → API Keys. It's the secure pass your assistant uses, and it's never stored.

02

Connect Claude or ChatGPT

Add tinyEmail in Claude Desktop or Claude Code with your API key. In ChatGPT, turn on Developer Mode and connect the tinyEmail app.

03

Just ask

Use the daily revenue report prompt, or ask your own question in plain language. Your assistant does the rest.

View the prompt ↑
Read the full setup guide →

Common questions

What can I ask about my newsletters?+

Anything you'd normally pull a report for. How a campaign performed, which newsletter earns the most per 1,000 emails, which sends are missing a tag, or which audience to send to next. Your assistant answers from your live tinyEmail account.

Is my account secure?+

Yes. Your API key goes straight from your assistant to tinyEmail. The MCP Server never stores or logs it.

Do I need a developer?+

No. Setup is a one-time step in Claude or ChatGPT, and the tutorial walks you through it. After that, you ask questions in plain language.

Which assistants work with it?+

Claude Desktop, Claude Code, and ChatGPT.

Who can use the MCP Server?+

It's available to tinyEmail Enterprise customers. Contact your account team or support through in-app chat to get started.

Find tomorrow's lost revenue this morning.

If you have not set up the tinyEmail MCP yet, watch this tutorial to connect it to ChatGPT or Claude Code and start using it today.