1 new donation
No active campaign

Nothing has been assigned to your role yet

Nothing is wrong with your account. Once a module is added to your role, it appears in the menu the next time a page loads.

Showing 0 donations · Total $0Click any row to view full record
Showing 7 of 7 donorsClick any row to view full record
Showing 0 of 0 contacts
NameEmailStatusSourceAdded
FEEDBACK ·
Details
Showing 5 of 5 studentsClick any row to view full record
Showing 5 of 5 teachersClick any row to view full record
Showing allClick any row to view full record
CampaignStatusDatesDays LeftGoalRaisedDonors30-day TrendSlug

Live Performance

38%
—
of — goal
Donors
—
Avg per donor
—
Pledged match
—
Match received
—
Days left
—
Form views
—
Campaign Playbook
Activities, messaging variations, and events teachers use to drive participation. Each activity is a unique "source" donors can select on the form, so you can measure which approaches actually move the needle.
ActivityTypeWeekStatusDonationsRaisedLever
How attribution works: When a donor fills out the form, an optional "What inspired you?" dropdown lists the active playbook activities. Donations attribute back here automatically, so you'll see which messaging variations actually drive giving. Use this to double-down on what works next campaign cycle.

Tasks

Received

This campaign only
Total Raised
—
Donor Count
—
Avg Gift
—
Last 7 Days
—
DateDonorAmountMethodStudentsTeacherStatusMatch
Page size: —

Corporate matching

This campaign's match money

Match money for this campaign

Pledged match
—
Match received
—
Claims, linking, unallocating and candidates are in the one queue for the whole PTA, under Donations, Matches.

Manual entry

Cash, check or a pledge you record by hand

Record a donation

Opens the same New Donation form as everywhere else, with this campaign already chosen. A corporate match ratio, when the donor gave one, is entered in that form.

Exports

This campaign only

Download

The report covers the donations the list above is showing. The CSV is this campaign's full export from the server.

Progress visual

Shows on: this campaign's page in Panther Hub, the campaigns list and the dashboard
Website only: the public site's progress gauge

Public progress gauge

Shape, size and colours for the donation total
Stored as 120-600 (the server validates that range). A horizontal bar scales its thickness from this value; a vertical thermometer uses it as the tube height.
Preview Sample numbers - not this campaign's totals
Not on the public page yet. These settings are saved and served by the server, but the public fundraising page still draws its own fixed bar and ignores them. Until it is updated, changing these does not change what visitors see.

Celebrations

Shows where you choose below: Panther Hub, the website, kiosk screens

Website card

Shows on: poinsettiapta.org/fundraising

Words on the card

Brand

Custom hex:
Each item separated by " | " becomes a scrolling segment
Not live yet: the public site does not read this setting, so changing it would change nothing anyone sees.

Blocks

Lower numbers appear higher on the public page
Not live yet: the public site does not read this setting, so changing it would change nothing anyone sees.

Draft preview

Draft preview · a rough sketch, not the public page
Preview updates as you type. Changes don't go live until you click Publish.

General

Name, goal and dates

Days left = end date minus today, never below 0.

Duplicate

Copies the content into a new draft. Donations, totals and the run are not copied.

Publish state

What the public can see, and when

Publish

Saved changes stay a draft until they are published here.
Staged until you publish. To unpublish, use the status pill in the campaigns list.

Campaign status

Current
Quick status · Publish, unpublish, or move to draft without leaving this screen. Each transition shows a confirmation explaining exactly what will happen.

Public form

The donation form this campaign uses

Linked Donation Form

Only donation-enabled forms appear here. Enable donations on a form from the Forms module first.

Suggested Amounts

Pre-filled buttons on the form. Click any tile to edit.
Stored on the linked donation form

Public donation link

Link a published donation form to see the public URL
This is the address to print on a flyer or encode in a QR code. It comes from the donation form linked to this campaign under Donations > Form, not from the campaign itself.

Sharing & QR

Shareable Links

Form Views This Week

Not tracked yet - view, scan, and embed counts aren't collected by the server.
Campaign QR Code
Scan to donate
Print on flyers, posters, sign-up tables
SVG: not live yet
No public donation page linked yet

Public Embed Code

Note: There is no hosted script embed. Use the standalone panther-pride-campaigns-block.html file - drop it into your site as a paste-ready section, and click Download above to generate its campaign data.

Notifications

Notifications

Not built yet. Panther Hub does not send any donation notification emails - there is no scheduled job or handler that sends a per-donation alert, daily summary, weekly treasurer summary, large-gift alert, match reminder or failed-payment alert. The toggles that were here controlled nothing, so they have been removed rather than left looking functional.

Tax receipts

Receipts are sent automatically for online payments. When a card payment succeeds the server emails the donor a tax receipt, subject "Your donation receipt - Poinsettia PTA". The donation is marked as receipted only once that email has actually gone out, so a send failure leaves it honestly unsent rather than claiming otherwise. The PTA tax-ID line is included only when an EIN is configured on the server.
A form can replace the standard receipt. If a donation form has an email response marked as the receipt, that response is sent instead. If it fails to send, the standard receipt goes out as a fallback, so a donor is never left with nothing. A non-receipt response is sent in addition to the standard receipt, not instead of it.
What is not built. Donations you log by hand (cash, check, or a manual entry) do not trigger any email - only completed online payments do. There is no year-end tax letter or annual statement and no downloadable receipt PDF. A completed donation can be opened as a printable receipt and re-sent to the donor from that donation's Receipts tab. Receipt wording and the sender address are server settings, not per-campaign ones.

Not built yet

Listed so it is clear what Panther Hub does not do
Show the six features that are not built

Payments & Stripe

Stripe status is not surfaced here. This app does not read your Stripe account state, and the connection status, account id and payout figure previously shown on this panel were not real data. Check the Stripe dashboard directly for account status and payouts. Environment, statement descriptor, accepted payment methods and fee handling are determined by the server-side Stripe configuration and the payment intent it creates, not by any setting on this page.

Webhooks & integrations

Not built yet. Panther Hub does not send donation events to Slack or to a custom webhook URL - no outbound webhook exists, so the URL fields, the event checkboxes and the test button were removed. (Stripe calling Panther Hub to report a payment is a separate, inbound webhook and it does work - it is what records donations.)

Fiscal year & accounting

Not configurable here. Fiscal year start and reporting currency were removed because nothing read them - reports are bounded by calendar dates and amounts are always USD. The EIN is real, but it is a server setting, not a field on this page: when one is configured, it appears on the emailed donation receipt. There is no tax-classification field anywhere.

Data retention & privacy

Not built yet. Deleted records are purged on a fixed schedule set on the server, which this page cannot change, so the retention selector was removed. There is no inactive-donor anonymization job. The Export donor data, Right-to-be-forgotten request and Anonymize all PII buttons performed no action at all and have been removed - do not treat any past click of them as a completed compliance action.

Brand defaults

Not built yet. Default brand colour, font, tagline pattern and email signature were removed because nothing stored or applied them - creating a new campaign does not pre-fill from here. Set branding on each campaign in its Branding tab.

Campaign close behavior

Campaigns do not close themselves. Nothing runs on a campaign end date: the campaign is not marked closed, it is not archived, and the linked donation form stays live and keeps accepting payments until someone unpublishes it. The auto-close, auto-archive, late-donation and wrap-up-email settings were removed because no job existed to carry them out.

To actually end a campaign you must do both, by hand: set its status to Closed on this tab, and unpublish the donation form in the Forms module. Doing only the first leaves the form taking money.

Danger zone

Advanced & Danger zone

Archive campaign
Removes from active list but preserves all data. Reversible.
Archiving isn't available yet. Nothing is archived from here.
/* PH_163_TRUTH_V1: B1: the button said "Campaign archived" and archived nothing - off until archiving exists */
Permanently delete
Cannot be undone. Donations remain (required for accounting) but campaign and metadata are removed.
Clear local cache
Clears this browser's copy of the campaign editor. Nothing on the server is touched.
0 events

Pick a starting point. This only decides which pieces the next screen asks you for. You can change it later, and nothing is saved until you press Save draft.

Preview of content
This shows the wording and values you have entered, so you can see what is still empty. It is not a copy of the public events page, which is built by a different system this screen cannot read.

Change the starting point?

    0 programs
    Opening the store...
    Click any row to view full record

    Before these tiers are saved

      Add
      Check the bank
      Reports

      TimeUserTypeActionTargetDetails

      From addresses

      The addresses newsletters and receipts are sent from. The domain is fixed and cannot be changed here.
      Loading...

      Stripe

      Reading from the server...

      Google Calendar Integration

      Push events from this calendar to your public website
      Google Calendar — Not configured
      Configure your calendar ID below so events appear on the public website
      No Calendar ID saved yet. Test connection and Sync are disabled so they cannot report a false result.
      Find this in Google Calendar → Settings → your calendar → "Integrate calendar" → Calendar ID. The calendar must be set to Public for our service to read it.
      This is the link parents use to subscribe in Apple/Google/Outlook calendars.

      How to find your Calendar ID

      1. Open Google Calendar from a desktop browser
      2. In the left sidebar, hover over the calendar you want to share → click the three dots → Settings and sharing
      3. Under Access permissions, check "Make available to public" with "See all event details"
      4. Scroll down to Integrate calendar section
      5. Copy the Calendar ID (looks like abc123@group.calendar.google.com)
      6. Paste it above and click Test connection
      Recommended: Create a shared calendar specifically for PTA events (separate from anyone's personal calendar) so multiple board members can add events without exposing their private schedules.

      Branding and display

      Moved here from the old Display themes tab.

      Click any row to open the task
      Preview - this module is not connected yet. Nothing here is saved.
      This Week
      0hrs
      across 0 entries
      This Month
      0hrs
      across 0 entries
      Year to Date
      0hrs
      across 0 entries
      Pending Approval
      0hrs
      0 entries waiting
      May 2026
      Preview - this module is not connected. The filings shown are sample data, not the PTA's actual tax records.
      All Forms
      Federal · IRS
      State · California
      Templates
      ⚠️ Action Needed
      Available placeholders: {donor_name} {amount} {campaign_name} {org_name} {date} {children} {sender_name}

      Roles

      roles
      Select a role to open it. Owner, Assigned access only and Viewer are built in. Owner and Assigned access only open read-only; Viewer's modules can change, its name cannot.

      Link expiry

      Pending invitations

      People who have been invited and have not set a password yet. Expires is when the current link stops working; an expired invitation can be sent again with Resend invite. The server does not report when an invite was sent, so Sent shows a dash.

      Activity

      User and role events from the audit log - the last 100 rows, filtered here.
      PERSON

      What they can do
        The setup link is the same self-serve link as Forgot password on the sign-in page - it goes to their email, it is not shown here. Sign out everywhere is not available yet; it needs a worker route. Deactivating signs them out.
        This panel decides what to show. The server decides what is allowed and refuses on its own, whatever this panel shows.
        Showing 0 records Soft-deleted records auto-purge after 30 days
        Type Name Email Phone Deleted Actions

        Reading from the server...

        Business
        A payment at a tier’s exact amount sets this automatically, and only ever upward - a smaller matching gift never demotes a business.
        Primary Contact
        Pledge
        From recorded payments. Record a check or cash payment below.
        Record a payment
        Logo
        Public website
        Published sponsors appear on the public website. Unpublished sponsors stay internal.
        Lower numbers appear first.
        The public website shows only the sponsor's name, tier, website and logo. Contact details, pledged and paid amounts, and notes are never published.
        Payment links
        Issue a link this business can use to pay online. Each link pays one fixed amount for the tier and school year on the sponsor record and works for 30 days. It is never emailed from here: you send it yourself. Issuing a new link cancels the unpaid one before it.
        DASHBOARD
        Recent activity
        The most recent recorded events, newest first.
        DASHBOARD
        Open tasks
        Tasks that are not done yet.
        DONATION · —
        —
        Donor
        Name
        Email
        Phone
        Allocation
        Campaign
        —
        Fund
        —
        Linked students
        Counts toward these classrooms.
        Payment
        Amount
        —
        Method
        Stripe Charge
        Date
        Open a donation to see its receipt status.
        DONOR
        Primary Contact
        First Name
        Edit
        Last Name
        Edit
        Email
        Edit
        Phone
        Edit
        Address
        Edit
        Employer Match
        Employer
        Edit
        Match Status
        None
        Edit
        Notes
        Family Notes
        Click to add note...
        Edit
        DateCampaignAmountStatus
        Loading donations...
        Loading family...
        Loading communications...
        SPONSOR
        Sponsor
        CONTACT
        Contact
        Contact
        First Name
        —
        Last Name
        —
        Email
        —
        Status
        —
        Source
        —
        Use Edit below to change the name or status. Email and source cannot be changed here.
        Parent portal account
        FORM ENTRY
        Submission

        Are you sure?

        This action cannot be undone.

        Notice

        TASK
        Task
        Created by ...
        Description
        Description
        Edit
        Checklist
        Status & Assignment
        PLAYBOOK ACTIVITY · Week 2-4
        Class Pride Challenge
        Challenge   Active   ·   $3,420 raised from 38 donations
        SAMPLE CONTENT - NOT SAVED ANYWHERE. This activity is not stored on the server, so nothing here can be edited or saved. Rows shown empty have nothing behind them. Do not read the script or message text below to a class as this activity's own.
        Activity Setup
        Title
        Class Pride Challenge - Pizza Party Stakes
        Type
        Week / Date Range
        Status
        Channel
        Messaging
        Short Description
        Whichever classroom hits 100% family participation first wins a pizza party.
        Teacher Script
        Parent Text Template
        Psychological Framing
        Primary Lever
        Status & competition
        Secondary
        Social proof Belonging
        Effective For
        Donations where the donor selected this activity on the form as "what inspired you to give":
        DateDonorClassroomAmount
        No attributed donations yet.
        Total raised
        $3,420
        Donations
        38
        Avg gift
        $90
        vs. Campaign Avg
        -18%
        Insight: Avg gift is below campaign avg ($90 vs $499), but participation breadth is strong. This activity drives more donors but smaller checks. Pair with a Match Offer next time to lift gift size.
        0 selected
        Lifetime
        Donations
        J K navigate Enter open ? shortcuts