Nonprofits & Associations · project showcase · message operations
A message calendar built from the supporter's inbox, not the team's campaign list
Every team in a nonprofit plans its own sends and nobody plans the year the way a supporter experiences it. This calendar holds one row per message a single subscriber receives, in the order they receive it — so the weeks when four teams all send on a Tuesday are visible in October, not discovered in December.
At a glance
The engagement in brief
Services
- Email Marketing
- Content Systems
- Content
- Reporting
Stack
- Shared calendar workbook
- Email platform
- Segment definitions
- Suppression rules
The situation
What we walked into
A nonprofit's calendar is usually four calendars: fundraising, advocacy, programme communications and events, each owned by a different team and each internally sensible. None of them describes what actually happens to a supporter, which is that some weeks they hear nothing and other weeks they get an emergency appeal on Monday, a petition on Tuesday, a newsletter on Wednesday and an event invitation on Thursday, all from the same organisation. The team sees four reasonable campaigns. The subscriber sees an organisation that cannot decide what it wants.
Four teams, four sensible calendars, one supporter receiving all of them. Nobody in the building was looking at the fourth view.
What we found
The diagnosis
01
The unit of planning is the message received, not the campaign sent
One row per send per segment, ordered by date, is a longer document and the only one that shows collisions. A campaign-level calendar hides them by construction, because two campaigns can be a fortnight apart on the plan and still land in the same inbox on the same morning.
02
Suppression rules belong in the calendar, not only in the platform
Written next to the row they apply to — sustainers excluded from this appeal, recent donors from that one, advocacy-only subscribers from both — the rules get reviewed by the people planning the sends instead of living inside a saved segment nobody opens.
03
December has to be planned in August
Year-end sending is where the inbox is most crowded and the rows have the least slack, and it is usually the part of the calendar written last. The calendar locks the year-end rows first and fills the rest of the year around them.
04
Advocacy and fundraising are different asks and the calendar has to see them as different
A petition and an appeal ask different things of the same person, and the order between them matters. Marking each row with its ask type makes an otherwise invisible pattern visible: how often a supporter is asked for money immediately after being asked for a signature.
The number behind it
What this is built around
Sector giving rose **5.0%** while donor counts fell **3.6%** for a fifth straight year (Fundraising Effectiveness Project, full-year 2025) — a retention problem. Over-mailing a shrinking donor base accelerates it, which is exactly what the inbox-view calendar is built to prevent.
What we built
The system
The workbook holds one row per message per segment: date, segment, ask type — appeal, advocacy, newsletter, event, stewardship — the owning team, the subject line, the suppression rules in plain language, and the link to the built email. A second view sorts those rows by segment and date: the subscriber's view, and the one used in planning meetings. Year-end is locked first. Collision rules are explicit: no two asks of any type to a segment inside a defined gap, and no appeal within a defined window of an advocacy send to that segment. Rows breaking a rule are flagged in the sheet rather than argued about in a meeting.
The sequence
How it was delivered
Week 1
Segment definitions
Segments named and defined once, then used by every team
Owner: OmniFlow + organisation
Week 1
Year-end lock
December rows placed before any other planning begins
Owner: OmniFlow + fundraising
Weeks 2–3
Calendar build
All planned sends entered as one row per message per segment, both views live
Owner: OmniFlow
Week 3
Collision rules
Gaps agreed in writing, flags applied in the sheet rather than by memory
Owner: OmniFlow + team leads
Ongoing
Monthly review
Subscriber view reviewed together; flagged rows resolved before builds start
Owner: All teams
Outcome
What shipped
This entry makes no performance claim. It documents a planning structure and the problem it exists to make visible: a year that looks reasonable from four desks and looks relentless from one inbox.
Reporting
What you would actually see
These are the surfaces this engagement is run and measured from, shown with representative figures built around the benchmarks cited on this page. Every account we run reports into views like these, and you keep ownership of all of them.
These are demo dashboards. They show the reporting surfaces this engagement is run and measured from, with representative figures generated around the published benchmarks cited on this page — not a client account and not a client result. Live reporting for your own account replaces every number here.
Google Analytics 4
Nonprofits & Associations · all web data
Sessions
3,019
+43.4%
Key events
121
+54.2%
Session key event rate
4.0%
+1.1%
Engagement rate
53.4%
+4.0%
Sessions by month
Dashed line marks the month the engagement started.
| Session default channel group | Sessions | Key events | Rate |
|---|---|---|---|
| Organic Search | 1,242 | 72 | 5.8% |
| Paid Search | 789 | 28 | 3.5% |
| Direct | 459 | 18 | 3.9% |
| Referral | 306 | 13 | 4.2% |
| Organic Social | 223 | 9 | 4.0% |
LinkedIn Campaign Manager
Sponsored Content · Nonprofits & Associations audience
Impressions
117,946
+30.2%
Clicks
523
+33.2%
CTR
0.4%
+0.17%
Cost per lead
$89.44
-21.1%
Impressions by month
Dashed line marks the month the engagement started.
| Campaign | Impr. | Clicks | Leads | CPL |
|---|---|---|---|---|
| Thought leadership — practice leads | 40,102 | 178 | 12 | $89.44 |
| Problem-aware — retargeting | 30,666 | 136 | 9 | $89.44 |
| Case study download | 25,948 | 115 | 8 | $89.44 |
| Webinar registration | 21,230 | 94 | 6 | $89.44 |
CRM pipeline
Nonprofits & Associations · inbound and outbound
Leads created
162
+70.1%
Qualified
70
+80.7%
Meetings booked
32
+84.2%
Answered on first attempt
71.7%
+17.0%
Leads created by month
Dashed line marks the month the engagement started.
| First-touch source | Leads | Qualified | Meetings |
|---|---|---|---|
| Google Ads — high intent | 50 | 22 | 10 |
| Organic search | 44 | 19 | 9 |
| Business Profile — call | 31 | 13 | 6 |
| LinkedIn outbound | 23 | 10 | 5 |
| Referral | 15 | 7 | 3 |
Honestly
What we would do differently
The first version was a single sorted sheet with no separate subscriber view, on the assumption that a filter would do the same job. It did not — a filter is something someone has to remember to apply, and in a meeting nobody applies it. The subscriber view is now the tab the file opens on, and the campaign view is the one you have to click to.
Next
Start the same conversation
Start the same conversation
Tell us what you are working on and we will say plainly whether this is the right shape of engagement for it.