WORKFLOWS

A client report template that survives questions

Illustration: a person assembles a tabbed binder of blank pages beside a model mailbox while a second person listens across the table
Illustration generated by AI.
The short answer

A client report has three jobs: say what you changed, say what you measured, and say what is still unknown. The change log does most of the work, because a placement reading without the list of changes made that month cannot be interpreted by anyone. Report activity and observations, never a deliverability rate you caused or a result you can guarantee.

What the report has to do, and what it must never promise

Deliverability work is bought on trust, reported in numbers and judged months later. A report that claims causation is a liability the day a campaign underperforms. A report that only shows a chart going up is worse, because it invites the client to draw the causation themselves.

The report states

  • What was changed this period, dated, one line per change
  • What was measured, with the instrument, the sample and the unit
  • What the client's own logs show about real recipients: bounces, complaints, unsubscribes
  • What remains open, and what would be needed to close it
  • What was spent, per mailbox and per test credit

The report never states

  • A deliverability rate for the client's recipients, which no seed test measures
  • That a change caused an improvement, when several changes were made at once
  • A guarantee of inbox placement, which no vendor and no agency can give
  • A percentage without its denominator
  • A forecast for next month presented as a commitment

The distinction to hold in every paragraph: you report what you did and what was observed. The link between the two is a hypothesis, and it is labelled as such.

The change log is the report

Write the change log as the work happens, not at the end of the month. Every line is one change, one date, one owner, one expected effect and one way to reverse it. Without it, a reading three weeks later has no explanation available, and the temptation is to credit the tool that happens to be on the invoice.

The log below is fictional and written for this guide. Dates are relative on purpose.

Change log, one client, one period

Sample log · fictional data
One line per change. A period with several lines cannot attribute a reading to any single one.
DayChangeOwnerExpected effectReversal
1DKIM key published for the sending subdomainAgencyAuthentication passes on the subdomainRemove the DNS record
1DMARC policy left at p=none, reports collectedAgencyVisibility only, no enforcementNone needed
3List of 8,400 addresses verified, 611 removedAgencyLower hard bounce rateRemoved addresses kept in an archive file
4Warmup switched on for 6 of 12 mailboxesAgencyUnder test, hold-out keptDisconnect and revoke access
9Client changed the campaign subject lineClientUnknown, breaks comparabilityNot reversible, noted as a limit
16Daily volume raised from 40 to 90 per mailboxClientUnknown, breaks comparabilityLower the cap in the sending platform
Fictional log. Note the two client side changes: they are the reason this period cannot support a causal claim, and the report says so rather than hiding it.

A change log that contains client side changes is not a failure of process, it is the process working. The report's job is to make those lines visible, because they are exactly what a later reading will depend on.

The template, section by section

Seven sections, in this order. Keep the order stable across periods and across clients, so a client can compare two reports without relearning the document.

  1. Scope. Domains, subdomains and mailboxes covered, with the count. Anything outside the scope is named, so nobody assumes it was watched.
  2. Change log. The table above, agency lines and client lines together.
  3. Authentication status. SPF, DKIM and DMARC, per sending domain, as observed at the start and at the end of the period. This is a configuration fact, not a prediction, and it is the most useful line in the report.
  4. Placement observations. One table per run: instrument, seed count per provider group, folder split, missing seeds counted separately. Always with the unit written out: seed addresses, not recipients.
  5. Client side signals. Hard bounces, complaints where the provider reports them, unsubscribes, taken from the client's sending platform. These are the only figures in the report about real people.
  6. Open questions. What the period could not settle and why, in plain sentences. A report with an empty open questions section is a report that overclaims.
  7. Spend. Per mailbox subscriptions, test credits consumed, and the total for the period, matched to invoices.

One page per section at most. A deliverability report that runs to thirty slides gets skimmed, and the open questions section is the first casualty.

The observation table, written so it cannot be misread

Most disputes come from a single ambiguity: the reader assumes a placement figure describes their customers. Kill the ambiguity in the caption, in the column header and in the footnote. The table below is fictional.

Placement observation, one message

Sample table · fictional data
Instrumentseed list, same provider all period
Unitseed addresses, not recipients
Scope1 message, 1 send, 1 moment
AuthenticationSPF, DKIM, DMARC pass on reporting seeds
Where seed copies of one message landed. Not an inbox rate for the client's recipients.
Provider groupSeedsInboxSpamMissingRead as
Provider A413632no finding
Provider B3819172gap worth investigating
Provider C171241sample too small to read closely
Other13922direction only
Fictional figures. Missing seeds are counted apart from spam and cross-checked against the bounce log before anyone calls them a reputation problem. No total inbox percentage is published, because the provider mix of a seed list is not the provider mix of a client list.

The last sentence of that footnote is the one that saves the agency. A single headline percentage invites a comparison with last month that the sample cannot support, and it travels through the client's organisation without its caveats.

The access ledger, and the revocation you owe the client

Running warmup and testing across client accounts means holding access to other people's mail. Keep a ledger, one row per grant, and treat offboarding as a deliverable rather than an afterthought.

Access ledger, one row per grant, reviewed at every period close
ColumnWhat goes in it
MailboxAddress and provider
ToolThe vendor holding the access
Grant typeAuthorisation flow, or sending and reading credentials such as an application specific password
Granted byThe named person who approved it, agency side or client side
ApprovalWhere the written approval lives
Revocation stepThe exact screen and action, tested once before it is needed
Removal datePlanned date, and the date it was actually done

The revocation paths worth knowing on Google accounts, as the provider documents them:

  • Application specific passwords require 2-Step Verification on the account, cannot be created for accounts using only security keys or under Advanced Protection, and are withdrawn with Remove in the App Passwords list. Google states that after revocation "the app can't access your Google Account again". Source: Google Account Help, app passwords.
  • Authorised third party apps are listed in the Google Account and can be reviewed or removed at any time, with one limit Google spells out: "you may need to contact the developer of the app to request that they delete the data they already have". Source: Google Account Help, third party access.
  • Microsoft and other providers expose equivalent screens, but the path depends on the tenant and on admin policy. Open and test the path in the client's own tenant, then write it in the ledger. We have not verified every tenant configuration, and an untested revocation step is not a revocation step.

Revocation stops access. It does not delete what the vendor already stored, including warmup message content and metadata. If the client needs deletion, request the vendor's procedure in writing at onboarding, keep the reply, and quote it in the offboarding section rather than paraphrasing it.

Offboarding checklist, run in this order: disconnect the mailbox inside the tool, revoke the grant at the provider, confirm the grant is gone by reloading the provider's list, export the data, cancel the per mailbox subscription, then write the removal date in the ledger and in the final report.

Exports, and what the client actually owns

Everything in the report must be reproducible from files the client keeps after the engagement ends. Export at every period close, not only at the end.

  1. Raw placement rows, per provider group and per mailbox, with seed counts. Summary charts are not an export.
  2. Authentication records as observed, so a later dispute about what was configured has evidence.
  3. Warmup activity, volumes per day and per mailbox, the only trace of what was actually done to the mailboxes.
  4. Bounce, complaint and unsubscribe logs from the client's sending platform. These belong to the client already, and should never live only in the agency's account.
  5. The change log itself, as a file, not as a paragraph inside a slide.
  6. Invoices, per mailbox and per credit pack, matched to the spend section.

Two practical points. Accounts and credits are usually tied to the party that opened them, so decide at onboarding whether tools are bought in the client's name or the agency's, and write the answer in the ledger: it decides who keeps the history at the end. And check the export format in the first week of any tool, because a product that only draws dashboards will leave you rebuilding a year of history by hand. Which export formats each product offers is not something we have tested, so verify it in your own account rather than trusting a feature list.

Costing the period without surprises

The spend section fails in one predictable way: a per mailbox price is quoted for one mailbox, then the invoice arrives for the whole fleet. Warmup is sold per mailbox at MailReach and at Warmup Inbox, placement testing is sold in credits at GlockApps, list verification is sold per address at ZeroBounce, and Instantly folds warmup into its sending plans instead of billing it separately. Four different units, so a single number for the period means nothing without them.

Entry level per mailbox pricing sits at $19.50 per month for the MailReach all-in-one plan and $15 per month for the Warmup Inbox entry plan, before any multiplication by mailbox count, by month and by client. Price the fleet in the cost calculator, put the result in the spend section, and keep test credits on their own line: they are consumed per run, so a month with a re-test costs more than a quiet one.

The sentences that get agencies into trouble

Write this

  • "We published DKIM on day 1 and verified the list on day 3. Seed placement at provider B was 19 inbox out of 38 seeds at the end of the period."
  • "Hard bounces fell from 4.1% to 1.3% on your own sends after the list verification. This figure covers real recipients."
  • "Two changes were made on your side during the period, so this reading cannot be attributed to any single action."
  • "Open question: provider B stays below the others. Next step is a repeat test on the same seed list before any change."

Not this

  • "Deliverability improved by 23% this month."
  • "You are now landing in the primary inbox."
  • "Warmup fixed your reputation."
  • "We guarantee inbox placement on the next campaign."

Every sentence in the right column is either a causal claim without a control, a rate for recipients drawn from seed addresses, or a promise about a filter you do not operate. The left column says less and holds up a year later, which is the only test that matters for a document a client keeps.

Questions people also ask

What belongs in a client report and what does not?

In: the dated change log, authentication status per domain, placement observations with their sample and unit, the client's own bounce and complaint figures, the open questions, and the spend. Out: any deliverability rate attributed to your work, any guarantee, any headline percentage without its denominator, and any forecast presented as a commitment.

Why is the change log more important than the numbers?

Because a reading is only interpretable against what changed. A month with six changes, two of them made by the client, cannot attribute anything to a single action, and the log is what makes that visible. Written after the fact, the log becomes a reconstruction, which is why it is filled in as the work happens.

How do we handle access to client mailboxes?

One ledger row per grant: mailbox, tool, grant type, who approved it, where the written approval lives, the exact revocation step, and the removal date planned and done. Test the revocation path once before you need it. On Google accounts, app passwords are removed from the App Passwords list and authorised apps from the linked apps list, and removing access stops future access without deleting data the vendor already holds.

Should the tools be bought in the client's name or ours?

Decide at onboarding and write it in the ledger, because it decides who keeps the history and the credits when the engagement ends. Accounts opened in the agency's name are simpler to operate and leave the client with nothing at the end unless you export everything. Either choice is defensible, an undocumented one is not.

Can we report an inbox rate for the client's recipients?

No. Seed based placement testing measures seed addresses, which never open, never reply and never complain, and whose provider mix is not the client's provider mix. Report the seed split with its counts and its unit, and keep the bounce, complaint and unsubscribe figures from the client's sending platform as the section about real people.