With Thanks — Charity Thank-You Video Platform
A donor-gratitude portal that turns every gift into a personalised thank-you video — delivered, tracked and measured at scale

Charities know that a personal thank-you drives donor retention, but personalised video does not scale by hand. With Thanks needed a platform that could generate a unique thank-you video per donor, deliver it reliably, and prove the impact with real engagement data — without a video editor in the loop.
- •Generate a personalised thank-you video for every donor, automatically
- •Deliver thousands of emails reliably with bounce and complaint handling
- •Track opens, clicks, video plays, completions and watch-time per recipient
We built a Laravel platform with a Filament admin and an Inertia/React member portal. A job pipeline generates each video with an AI voice intro and a charity template, delivers it via a tracked email, and rolls every signal up into a live campaign report.
- •Designed a four-stage delivery pipeline: prepare → generate media → deliver email → finalise
- •Generated personalised intros with ElevenLabs TTS and stitched video with FFmpeg
- •Hosted and streamed video through Cloudflare Stream with signed, expiring watch links
A closer look
Inside the build
Real screens from With Thanks's charity saas portal.


Project Overview
Retention is the quiet engine of fundraising, and nothing moves it like a donor feeling genuinely thanked. The problem is that personal does not scale — a hand-made video for every gift is impossible above a handful of donors. The With Thanks portal solves that: it generates a personalised thank-you video for each donor, delivers it by email, and measures exactly how donors respond.
We built the portal — the product behind portal.with-thanks.co.uk — as a multi-tenant Laravel platform with a Filament operator panel and an Inertia/React member experience.
The Strategic Challenge
- Personalisation at volume. Every donor needed their own video, generated without a human editor.
- Reliable delivery. Thousands of emails had to land, with bounces, complaints and unsubscribes handled properly.
- Provable impact. Charities needed to see opens, clicks, plays, completions and watch-time — per recipient, per campaign.
- No accidental sends. Importing a donor file must never fire emails before a human confirms the preview.
How We Built It
A pipeline, not a script
Each thank-you flows through a four-stage job chain — prepare → generate media → deliver email → finalise — running on Laravel Octane with split queue workers so long FFmpeg jobs never block ordinary sends.
Video without an editor
We generate a personalised intro with ElevenLabs text-to-speech, stitch it to the charity’s template with FFmpeg, and push the result to Cloudflare Stream for adaptive HLS playback behind a signed, expiring link. The donor just clicks and watches.
Measurement built in
Email goes out through Resend with open, click and unsubscribe tracking; the watch page reports plays, progress and completion. The campaign report rolls it all up — email and video side by side, with a geography view of where donors engage — and exports to PDF for trustees and funders.
Thank-yous on autopilot
An hourly Blackbaud Raiser’s Edge sync discovers qualifying new gifts and creates thank-you deliveries automatically, so gratitude happens whether or not anyone remembers to press send.
Results & Impact
The portal turns a one-line “thank you” email into a measurable engagement channel. In a representative campaign, personalised video drove roughly a 73% open rate and a ~79% video completion rate, with every open, click, play and completion captured per recipient. Imports are safe by design — nothing sends until the preview is confirmed — and the Blackbaud sync keeps thank-yous flowing without manual effort.
Technology
Laravel 13 + Octane, a Filament admin and an Inertia/React 19 portal, with Cloudflare Stream video, FFmpeg + ElevenLabs for generation, Resend for tracked email, and a Blackbaud SKY API integration.
Run a charity or membership organisation? We build custom platforms and workflow automation that turn manual processes into measurable ones. Talk to us.
Key Features
Automated Personalised Video
Each delivery generates a unique intro (AI voice + charity template) and stitches it to the thank-you video, with no editor in the loop.
- A unique video per donor
- AI voice intro via ElevenLabs
- Repeat-donor gratitude variants
Campaign Analytics
A live report unifies email and video engagement — sends, opens, clicks, plays, completions, watch-time and a geography view.
- Email and video side by side
- Per-recipient engagement signals
- PDF export for stakeholders
CSV & API Ingest
Bring donations in by spreadsheet upload or API, grouped into batches, with a preview that must be confirmed before anything sends.
- Nothing sent unreviewed
- Bulk ingest up to 500 per request
- Idempotency prevents duplicates
Tracked Email Delivery
A queued pipeline delivers each email through Resend with open, click and unsubscribe tracking and bounce/complaint webhooks.
- Reliable at thousands of sends
- Suppression and unsubscribe handling
- Signed, expiring watch links
Blackbaud CRM Sync
An hourly Raiser’s Edge NXT sync discovers qualifying new gifts and creates thank-you deliveries automatically.
- Thank-yous on autopilot
- Filter by gift type and amount
- No manual data entry
"A text email saying "thank you" gets ignored. A short, personalised video gets watched — and now we can actually prove it, because we see opens, plays and completion rates for every campaign. The Blackbaud sync means the thank-you goes out without anyone remembering to send it."
Related Projects
CFP Lottery & Raffles
We built Insyte for CFP Lottery & Raffles: a Django platform that reads scanned donation forms with Document AI, runs QA and reconciles banking for charities.
CFP Lottery & Raffles
We built the CFP Raffle platform: a Django back office for running charity raffles end to end, from tickets and OCR to banking reconciliation and exports.
Dropvi
We designed, built and launched Dropvi, our own large file transfer service on Cloudflare Workers, R2 and D1, live in five days with live Stripe payments.
Ready to Transform Your Business?
Let's discuss how we can help you achieve similar results