Snail Mail (direct mail)
Snail Mail (direct mail)
Last updated: March 23, 2026 Status: Implemented (upload-first templates + campaign send/progress); advanced builder workflows remain planned.
Product name: Snail Mail (Fundraising hub). Channel: PCM Direct Mail API v3 (configurable; mock mode when credentials unset). Route / navigation: Path /fundraising, Zustand fundraisingTool = snail-mail. See 00-FUNDRAISING-HUB.md.
Primary component: src/features/fundraising/components/SnailMail/SnailMailHub.tsx
Data / send path: src/lib/db/directMail.ts → Supabase Edge Function send-direct-mail (MintBucks, demo guard, job rows). Optional webhook stub: pcm-webhook.
Donor Reporting handoff: Reports → Donor Reporting can open Snail Mail with mailable donors pre-selected via sessionStorage key snailMailIntent (donorIds, year). Printed tax PDFs per donor are a separate future slice (reuse send-tax-reports data).
Delivery issues: Issues tab in the hub; PCM status POSTs to pcm-webhook update direct_mail_job_recipients and raise in-app notifications (direct_mail_delivery). See PCM-DIRECT-MAIL-INTEGRATION.md § Webhooks.
Frontend styling notes
- Breadcrumb labels are hardcoded per styling standard (
Fundraising > Snail Mail), with breadcrumb rendered first on page. - Data-heavy views use shared shadcn
Tableprimitives (table-fixed w-full, tieredw-[Xpx]widths, one flex column). - Issue/delivery statuses use semantic
Badgevariants (success,warning,error,info,outline) rather than custom color classes.
Related docs
- ../../plans/PCM-DIRECT-MAIL-INTEGRATION.md — env vars, lifecycle notes
- ../../plans/SNAIL-MAIL-PRODUCT-AND-PRICING.md — MintBucks SKUs
- 08-DONOR-JOURNEYS.md —
send_postcard/send_letter/send_handwrittensteps call the same edge function viaprocess-automation
Synced from IFMmvp-Frontend documentation: pages/fundraising/13-SNAIL-MAIL.md
Ready to Get Started?
See how Alignmint can simplify your nonprofit's operations. Schedule a free demo with our team and we'll walk you through everything.
Questions? Email us at steven@getalignmint.org