Skip to main content

Donor Page Manager

Donor Page Manager

Component File: src/features/donors/components/DonorPageManager.tsx Route / navigation: Donor Hub → Giving Pages Access Level: Parent Org and Fund Users with Donor Hub access; write actions additionally require canWrite() Last Updated: April 21, 2026

Overview

The Donor Page Manager is the admin surface for the custom giving-page feature. It loads giving pages from Supabase, scopes them to the selected entity, and coordinates the three live views:

  • list
  • builder
  • preview

Current List View

The live list is a compact row-based manager, not a thumbnail grid.

Each row can show:

  • page title
  • fund name
  • lifecycle status
  • goal badge when present
  • copy URL
  • QR modal
  • embed-code modal
  • preview
  • edit
  • delete

Non-draft pages now also expose an Active / Inactive switch:

  • published = active
  • archived = inactive
  • switching to inactive shows a warning dialog before the page is blocked

View Modes

List

Primary management surface backed by fetchDonorPages.

Builder

Launches DonorPageBuilder for create/edit.

Preview

Launches DonorPagePreview, which wraps the same DonorLandingPage used by the public route.

Data Flow

1. Resolve the selected entity from the user role and entity switcher state 2. Load donor_pages with fetchDonorPages 3. Map each row into DonorPageConfig 4. Build canonical public URLs from public_url when present or from org key + org slug + page slug 5. Route into builder / preview using the recordId URL helper state

Entity Scoping

Parent org users

  • If a child fund is selected, the manager shows only that fund's pages
  • If admin/all view is selected, it fetches across the org tree

Fund users

  • Only pages for assigned organizations are shown

Inactive organizations

  • Admin reads filter out giving pages for inactive organizations
  • Public delivery now also blocks inactive organizations in get-public-donation-page

Save Behavior

  • Create: still follows the current builder publish flow
  • Edit: now preserves the current page status instead of silently republishing archived pages
  • Deactivate: updates the page to archived
  • Reactivate: updates the page back to published

Status Model

  • draft - not publicly available
  • published - active and publicly reachable
  • archived - inactive and blocked from the public route

Archived pages currently show up under the All filter; there is no dedicated archived tab yet.

Public URL / Share Tools

Copy URL

Uses the canonical public URL when already stored, otherwise rebuilds it from:

https://donate.alignmint.app/{public-org-key-or-prefix}/{org-slug}/{page-slug}

QR

Uses the same canonical page URL and renders via AlignmintBrandedQr.

Embed

Builds an iframe snippet with:

  • embed=true
  • payment/passkey allow attributes
  • a postMessage resize listener

Known Limitations

  • The list does not yet load live raised/donor counts even though fetchDonorPageStats exists
  • Archived pages do not have their own filter tab
  • Brand-new pages still publish immediately through the current builder flow

Related Files

  • src/features/donors/components/DonorPageBuilder.tsx
  • src/features/donors/components/DonorPagePreview.tsx
  • src/lib/db/marketing.ts
  • src/lib/donorPageUrls.ts

Related Documentation


Synced from IFMmvp-Frontend documentation: pages/donor-hub/05-DONOR-PAGE-MANAGER.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

Ready to get started?Start Plus Trial