Donor Page Builder
Donor Page Builder
Component File: src/features/donors/components/DonorPageBuilder.tsx Route / navigation: Donor Hub → Giving Pages → Builder Access Level: Parent Org and Fund Users with Donor Hub access and write permission Last Updated: April 21, 2026
Overview
The live Donor Page Builder is a form-based editor for custom giving pages. It is not a drag-and-drop website builder.
Users can:
- choose the fund that owns the page
- set the page title, slug, description, and fundraising goal
- configure suggested donation amounts
- enable custom amounts and recurring monthly giving
- choose whether the donor-facing fee toggle defaults on
- attach a hero image, uploaded video, or VideoBlast video
- attach an optional thank-you video
- link the page to a
purpose_idfor donation earmarking and reporting - preview the public page before saving
Current Builder Surface
Basic fields
- Fund selector
- Optional purpose selector
- Page title
- URL slug
- Description
Media
none- uploaded image / uploaded video
- VideoBlast selection
The builder stores media as image_url and video_url. There is no separate persisted layout JSON.
Donation settings
- Goal amount
- Suggested amounts
- Allow custom donation amount
- Allow recurring monthly donations
- Cover processing fee default
- Thank-you message
- Optional thank-you video
Save Behavior
- New pages: the builder flow currently publishes on save (
Save & Publish). - Existing pages: saves now preserve the current lifecycle status (
draft,published, orarchived) instead of silently republishing archived pages. - Preview: uses the same
DonorLandingPagerenderer as the public experience, with the real organization UUID resolved from the selected fund when possible.
Validation Rules
Frontend validation
- Fund is required
- Title is required
- Slug must be at least 3 characters
- Slug is generated from the title and normalized to lowercase hyphenated text
- Reserved public-route slugs are blocked
- Slug uniqueness is enforced per organization before save
Media validation
- Image upload requires an image MIME type
- Video upload requires a video MIME type
- Uploads require a selected fund so files can be stored under the correct org path
Data Model Used by the Builder
The builder reads and writes donor_pages rows through src/lib/db/marketing.ts.
Key persisted fields:
organization_idtitleslugdescriptionimage_urlvideo_urlgoal_amountpreset_amountsallow_custom_amountallow_recurringthank_you_messagethank_you_video_urlstatuspublic_urlpurpose_idwebsite_config.coverProcessingFee
URL Rules
- Public URLs are canonicalized through
src/lib/donorPageUrls.ts - Canonical route shape is:
https://donate.alignmint.app/{public-org-key-or-prefix}/{nonprofit-slug}/{page-slug}- The canonical organization slug should come from the
organizations.slugrow when available - The builder now uses the entity slug from the selected fund instead of regenerating it from the display name
Important Limitations
- There is no drag-and-drop block system
- There is no custom CSS or theme editor
- There is no page duplication flow in the live UI
- The builder preview does not expose analytics counts beyond what is already on the page config
- The live save flow still behaves as a publish action for brand-new pages
Related Files
src/features/donors/components/DonorPageManager.tsxsrc/features/donors/components/DonorPagePreview.tsxsrc/features/donors/components/DonorLandingPage.tsxsrc/lib/db/marketing.tssrc/lib/donorPageUrls.ts
Related Documentation
Synced from IFMmvp-Frontend documentation: pages/donor-hub/03-DONOR-PAGE-BUILDER.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