WordPress PluginManage Donations, Donors & CampaignsModern & Easy to Use

Back to Blog

Giftflow's operating model

Overview

Giftflow is implemented as a WordPress-based system that manages fundraising activity and donation processing through:

  • WordPress Custom Post Types (CPTs) for core domain objects (Campaigns, Donors, Donations)
  • Page-level options / settings to configure payment, email, and other operational behavior
  • A donation form per campaign, used by donors to submit donations
  • Email notifications sent to both admins and donors after a successful donation

Workflow diagram

+-----------------------------------+
| Admin creates / updates Campaign  |
+-----------------------------------+
                |
                v
+-----------------------------------+
| Campaign page + Donate CTA        |
+-----------------------------------+
                |
                v
+-----------------------------------+
| Donor opens donation form         |
+-----------------------------------+
                |
                v
+-----------------------------------+
| Submit donor details + amount     |
+-----------------------------------+
                |
                v
+-----------------------------------+
| Create / update Donor record      |
+-----------------------------------+
                |
                v
+-----------------------------------+
| Create Donation record            |
+-----------------------------------+
                |
                v
        +---------------------+
        |   Payment result    |
        +---------------------+
             /           \
            /             \
           v               v
+-------------------+   +--------------------+
| Mark as PAID      |   | Mark as FAILED     |
+-------------------+   +--------------------+
           |                     |
           |                     |
           v                     v
+-------------------+   +--------------------+
| Send email        |   | Send email         |
| to Admin          |   | to Admin           |
+-------------------+   +--------------------+
           |
           v
+-------------------+
| Send email        |
| to Donor          |
+-------------------+

Core entities (WordPress CPTs)

Campaign

A Campaign represents a fundraising initiative. It is the primary object that donors interact with.

  • Owned by: Admin / operators
  • Used by: Donors (via the donation form)
  • Key responsibility: Define the campaign content and connect to a corresponding donation form

Donor

A Donor represents a person who makes a donation.

  • Created/updated when: A donor submits a donation form
  • Purpose: Provide a consistent identity for donations and donor communications
  • Typical data: Name, email, phone, address (as required), consent flags (as applicable)

Donation

A Donation represents a single donation transaction/attempt associated with a donor and campaign.

  • Created when: Donor completes the donation form (and payment step if applicable)
  • Linked to: One Campaign + one Donor
  • Typical data: Amount, currency, payment method, status, timestamps, receipt/reference IDs

Settings & configuration (Page options)

Operational behavior is configured through page options (settings screens / page-level configuration), including:

  • Payment method settings
    • Payment provider selection (e.g., card/bank transfer/etc.)
    • Provider credentials (stored securely via WP configuration)
    • Supported currencies, minimum/maximum amounts (if needed)
  • Email settings
    • Admin notification recipients (one or more email addresses)
    • Donor email sender details (from name/address)
    • Email templates (admin + donor)
  • Other settings
    • Donation form fields (required/optional)
    • Thank-you page behavior
    • Compliance options (consent, terms, privacy links)

Campaign → donation form mapping

Each campaign has a corresponding donation form. The mapping is one-to-one from the donor’s perspective:

  • Campaign page: Presents campaign details + call-to-action to donate
  • Donation form: Collects donor info and donation details for that campaign

Implementation detail (conceptual):

  • The donation form must know the Campaign ID so every Donation is created with the correct association.

Donation flow (end-to-end)

1) Donor starts a donation

  • Donor visits a campaign and opens the campaign donation form.
  • Donor enters:
    • Donor contact details
    • Donation amount and any options (e.g., message, anonymity, recurring if supported)
    • Payment details (if required by the chosen payment method)

2) System creates/updates records

When the donation form is submitted:

  • Donor CPT: Created or updated (commonly matched by email)
  • Donation CPT: Created and linked to the Campaign + Donor
  • Status: Set based on the payment method outcome (e.g., pending/paid/failed)

3) Email notifications

After the donor completes the donation flow (and the system records the donation):

  • Admin email is sent with donation details
    • Campaign name
    • Donor identity/contact (as permitted)
    • Amount, payment method, status, reference IDs
  • Donor email is sent as confirmation/receipt (as configured)
    • Donation summary
    • Receipt/reference details
    • Any next steps (e.g., bank transfer instructions if applicable)

Operational responsibilities

  • Admins/operators
    • Create and manage Campaigns
    • Configure payment methods and email settings
    • Monitor Donations and handle exceptions (failed/pending)
  • System
    • Maintain Donor + Donation records
    • Ensure each donation is associated with the correct Campaign
    • Send admin and donor emails after donation completion