Skip to main content

Foundation — post-enable runbook

Foundation is now on. Until you connect a payment processor, the module looks complete but cannot accept money — and the public donate pages will not appear. The next half hour is mostly Stripe wiring plus one starter campaign so the surface looks alive.

For the surface-level overview, see the Foundation module reference.

Prerequisites

Before Foundation will function end to end, confirm:

  • A Stripe account exists for the foundation entity. Typically this is a separate Stripe account from the one used for dues, because foundation funds flow to a tax-deductible entity.
  • You have the Stripe secret key, publishable key, and a webhook signing secret at hand. The webhook secret comes from the endpoint you add in your Stripe dashboard.
  • Storage is configured and verified — campaign hero images and the foundation logo land there.
  • Email delivery is configured at the platform level. Tax receipts and donor acknowledgments are emailed.
  • The foundation entity has a legal name and EIN for tax-deductible receipts.

Who can enable it

Only a platform admin can toggle Foundation for your org. Org admins request the change through their platform admin.

What gets auto-created

When a platform admin enables Foundation and assigns the first foundation admin, the platform creates:

  • A FoundationConfig record with the placeholder name <org name> Foundation — you will rename this on the settings page.
  • A FoundationAdmin record for the assigned user.

A FoundationPaymentProcessor record is created the first time you save the payment-processor form. It exists in a Stripe / not active / not verified state until credentials are saved.

What appears in the sidebar

A new Foundation group appears for org admins. Inside it:

  • Dashboard
  • Campaigns
  • Donations
  • Donors
  • Bulletins
  • Reports
  • Settings

Non-admin members only see Campaigns under Foundation — the donate-facing surface — and only when Foundation is enabled.

First 30 minutes — required steps

  1. Open Org → Foundation → Settings. Rename the foundation to its real legal name, fill in the EIN, mailing address, and contact email. Toggle Tax deductible if donations qualify. Save.
  2. In the same page, scroll to the Payment Processor card. Enter the Stripe secret key, publishable key, and webhook secret. Save. The Active badge turns on; the Verified badge turns on once a real charge has succeeded.
  3. In your Stripe dashboard, add a webhook endpoint pointing at the foundation's webhook URL (visible in the payment-processor card). This is what closes the loop on completed donations.
  4. Open Foundation → Campaigns and publish a single test campaign with a small suggested-amount ladder (e.g., $5 / $10 / $25). Set the slug.
  5. Visit the public donate URL for the campaign and make a $5 test donation with a real card. Confirm the donation appears in Donations, the donor appears in Donors, and a receipt arrives by email. This is what flips the processor to Verified.
  • Customize the receipt template in Settings → Receipt template — the default uses generic language; donors prefer to see your foundation's name and a personal note.
  • Add at least one Fund so donations have a designation other than the general fund.
  • Set up your first Bulletin scheduled for the campaign — even a "we just launched" note moves the campaign past the empty-page feel.
  • Decide whether to turn on Fee pass-through so donors can opt into covering processing fees.

What happens if you disable

Turning Foundation off hides the Foundation sidebar group and returns 403 on the related endpoints. Data is preserved — campaigns, donations, donors, recurring pledges, bulletins, receipts, and Stripe webhook events all stay in the database. Re-enabling restores access.

Note that disabling does not cancel active Stripe subscriptions for recurring pledges. If you intend to stop charging donors, you must cancel the subscriptions in Stripe (or use the pledges page before disabling).

Common gotchas

  • Donations cannot complete without a verified processor. The donate page may render, but Stripe will reject the charge if credentials are wrong.
  • Tax receipts require an EIN and a tax-deductible flag set to true. Without those, receipts render without IRS-required language.
  • The annual statement task runs in mid-January. If you enable Foundation in February, no annual statement goes out for the previous year — you generate those manually if needed.
  • Public donate URLs are public. A campaign slug is guessable; do not put confidential pricing or internal notes in the public description.
  • Recurring pledges create Stripe subscriptions. Cancelling on the platform also cancels the Stripe subscription, but refunds always go through Stripe directly.

Where to go deeper

Last verified against v0.62.1 (2026-05-10).