Nonprofits don't track links to optimise ad spend. They track to answer "did this newsletter drive donations?" and "how should we allocate next year's budget?" The questions are the same as commercial marketing; the constraints are different — tighter budgets, less tooling expertise on-staff, and (in the UK) Gift Aid claims that hinge on demonstrating the donor's intent. This post is the link architecture for that.
For the broader marketing tutorial, track UTM campaigns end-to-end without a CDP is the cornerstone. This post is the nonprofit-specific subset.
What nonprofits actually need from a URL shortener#
Five things, ranked by how often they bite:
- Source attribution to the donation page. Was this gift from the email appeal, the Instagram post, the print mailer with the QR code, or someone googling the charity name? Without source attribution, every fundraiser argues from anecdote.
- Online↔offline reconciliation. Print mailers carry QR codes; the donor scans, lands on the donation page, gives. The platform should join the QR scan to the donation record so the print campaign's ROI is measurable.
- Gift Aid (UK) intent capture. HMRC requires the charity to demonstrate the donor's intent to claim Gift Aid. If the donor came in via a link that pre-fills the Gift Aid form, the link itself becomes part of the audit trail.
- EU/UK data residency. Donor data + click data are personal data under GDPR. A charity's data protection officer reads vendor T&Cs more carefully than a commercial marketing team would. EU/UK residency cuts the diligence work.
- Cost. Nonprofits run on tight margins. A URL shortener that doubles in price at the volume threshold the charity will hit during a Christmas appeal is a problem.
The first three are the unique-to-nonprofits requirements. The last two also apply to commercial users but matter more here because the slack is smaller.
Source attribution by channel#
The pattern most nonprofits should use: one short domain (give.yourcharity.org), per-channel sub-paths.
give.yourcharity.org/email-spring (email appeals)
give.yourcharity.org/social-instagram (Instagram CTA)
give.yourcharity.org/social-tiktok (TikTok bio link)
give.yourcharity.org/print-mailer-2026 (printed/QR-code mailer)
give.yourcharity.org/event-walkathon (event-specific)
give.yourcharity.org/partner-acme (corporate partnership)
Each slug resolves to the donation page with UTMs baked in. The donation platform (JustGiving, Donorbox, Stripe Donations, GiveWP, etc.) captures the UTMs against the donation record. The short link service captures click counts. Two data sources, one slug.
Why per-channel slugs, not query strings. Two reasons. First, a printed mailer with donate.charity.org/?utm_source=mailer-2026&utm_campaign=spring is unreadable to the donor — the short slug is essential. Second, the click count from a clean slug is a clean attribution. Query-string-only links can be shared without the UTM intact (someone retypes the URL without it); the slug-prefixed approach forces the UTM through whatever sharing path the URL takes.
Online↔offline reconciliation#
Print mailers + door-drops + posters with QR codes are still effective for nonprofits because the donor base skews older + more newspaper-engaged than the average B2B audience. The hard part is measuring ROI on print — print → digital is a one-way crossing that's invisible to most platforms.
The architecture that works:
- Print the QR with a unique slug per print run (
give.charity.org/print-spring-2026-issue-3). - The QR resolves to a dynamic short link in your platform.
- The dynamic link captures the click + redirects to the donation page with UTMs baked in.
- The donation platform records the UTMs against the donation record.
- Your weekly reconciliation joins (a) click count on the slug + (b) donation count with matching UTM. The ratio is your conversion rate. The donation total is your gross.
This isn't novel — it's the same pattern as commercial direct mail. What makes it work for nonprofits is that the slug-per-print-run discipline is what makes the data interpretable. Without it, all print donations look like "direct" traffic and the print budget can't be defended at the next board meeting.
The QR code campaign from scratch post has the production-side detail (ECC level, contrast, printing considerations).
Gift Aid intent capture (UK)#
This is the niche that's hardest to find in commercial URL-shortener documentation. HMRC's Gift Aid scheme lets UK charities reclaim 25p per £1 donated, provided the charity can demonstrate the donor declared the intent to claim. The declaration mechanic is the form's checkbox — but the audit trail proves the donor actually saw and chose, not that the box was pre-ticked.
The link layer plays a role:
- The "give with Gift Aid" link goes to a donation page variant that surfaces the Gift Aid form prominently. The "give without Gift Aid" link goes to a variant that does not.
- The short link service captures the click on the "with" variant; the donation platform captures the form submission. The two records together demonstrate intent: the donor clicked a link labelled "with Gift Aid" and then submitted a form ticking the Gift Aid box.
- Audit retention on the click log should match your charity's Gift Aid claim retention (HMRC currently requires records retained for at least 4 years after the end of the accounting period in which the donation was made).
Most URL shorteners don't surface "click log retention" as a configurable knob. Some retain 30 days by default and then aggregate. Check the vendor's retention policy and confirm in writing — a 4-year audit window is a long time to discover the data was rolled up in year 1.
For the broader compliance picture, GDPR for URL shorteners covers the data retention rules that overlap with Gift Aid retention. The intersection: keep the click log for at least 4 years for Gift Aid; minimise the personal data in it to satisfy GDPR; obtain the donor's data-processing consent at form submission.
EU/UK data residency#
Three categories of vendor:
- US-anchored — Bitly, Rebrandly default, Short.io, Dub. Donor data flows through US infrastructure. SCCs in the DPA cover GDPR; Schrems II considerations apply. For a nonprofit with EU donors specifically, this is the largest paperwork burden.
- EU-resident option — vendors that offer an EU data plane on request. Rebrandly has a EU instance; the configuration is opaque. Often requires a sales conversation.
- EU-anchored default — Elido falls here. All click data lands in EU-region ClickHouse by default; US clients can opt into US residency.
For a UK-based charity with UK-only donors, the GDPR question is moot (the UK GDPR applies; vendor location matters less than vendor terms). For a charity with EU donor exposure, the residency question is hard. The shortest path is picking a vendor whose default is EU residency.
The best EU URL shorteners in 2026 post covers the landscape in detail.
Pricing models that fit nonprofits#
Nonprofit margins make per-click pricing dangerous. A successful Christmas appeal can 5× your monthly click volume in a 2-week window. Vendors that price per-click bill you for that spike; vendors that price on flat tiers don't.
Three models, with how they hurt nonprofits:
- Per-click. Hurts on spikes. The biggest fundraising weeks become the biggest cost weeks. Predictability is poor.
- Per-link. Hurts on accumulation. Last year's campaign links keep counting toward your limit. Archive or delete them annually.
- Flat tier. Predictable. The platform charges a fixed price for N links + M clicks + custom domains. Match the tier to your annual click ceiling.
Most nonprofits should pick flat-tier vendors. Some vendors offer nonprofit discounts; ask before signing. Elido offers a 50% nonprofit discount on Pro and Business tiers — the nonprofit pricing row covers the detail.
Three architectural anti-patterns#
1. Multiple fundraising teams running separate URL shortener accounts. Email team has Bitly. Social team has Rebrandly. The print team has nothing. Attribution is fragmented; the CFO can't reconcile. Centralise on one platform per charity.
2. Using the same slug across multiple years. give.charity.org/spring-appeal resolved to a 2025 page; you reuse it in 2026. Some donors still have the 2025 print mailer; they click and reach a 2026 landing page. Your click data for the 2026 appeal is muddied. Use year-suffixed slugs (give.charity.org/spring-appeal-2026).
3. Forgetting that QR codes outlive paper. The 2024 walkathon brochures are still in a stack at the office. Year-2 someone picks one up and scans. The slug had better still resolve, and to something useful. Either keep old slugs alive (point them at a "we're not currently running this campaign" page that includes a CTA to the live appeal) or rotate the print materials annually.
A reference setup for a small UK charity#
For a charity raising £200k-£2M/year, with a small fundraising team (2-5 people) and seasonal appeals:
- One short domain —
give.yourcharity.org. Registered separately from the main.org.ukso the donation funnel is self-contained. - Per-channel slugs — issue at the start of each calendar year, 10-30 per year, prefixed by channel type (
email-,social-,print-,event-). - Per-print-run slugs — issue at the start of each direct-mail print run. Year-stamped.
- Gift Aid variant — separate slugs for
with-gift-aidandwithout-gift-aidpaths. The "with" variant resolves to a donation page variant where Gift Aid is the prominent CTA; the "without" variant doesn't. - Monthly reconciliation — first Tuesday of each month, join the URL shortener's click data to the donation platform's records via UTM. The output is a Google Sheet with click → donation conversion per channel.
- Annual rollup — January, dump the prior year's click data into a CSV, archive against board-report records. Keep 4 years online for Gift Aid audits; archive cold beyond.
Total setup time: ~4 hours if your fundraising team is comfortable with spreadsheets. Ongoing operational cost: maybe 30 minutes per month for the reconciliation. The payoff is reportable ROI per channel, which makes the next board meeting easier and the next fundraising budget defensible.
Where Elido sits#
We built Elido for marketing teams and developer-led product companies, not for nonprofits specifically. But the requirements above (per-channel slugs, custom domain, UTM through-flow, audit retention, EU residency, predictable pricing) align cleanly with what we offer. A few notes:
- Nonprofit discount — 50% off Pro/Business with proof of registered-charity status. Contact us to set it up.
- Audit log retention — 4-year default on Business tier, configurable to 7 years for charities with longer audit windows.
- EU residency — default for all charity accounts. The relevant US-region opt-in requires explicit selection during account setup.
- Forward conversions to your donation platform — webhook on every click can carry the slug + UTM into your donation platform's hidden-field handler. The forwarding conversions post covers the mechanic.
- CSV import — if you're moving from a current URL shortener, the migration playbook covers Bitly specifically; the same one-click migration works for Rebrandly, Short.io, TinyURL, and Dub.
Related on the blog#
- GDPR for URL shorteners: what your DPO actually wants to see — cornerstone for the compliance cluster
- Track UTM campaigns end-to-end without a CDP — the tutorial cornerstone this post is a vertical of
- URL shorteners for events: registration links, badges, follow-up flows — sibling industry post (events as a charity sub-use-case)
- The best EU URL shorteners in 2026 — the residency landscape
- QR code campaign from scratch — the print-side companion