Fundraising Campaigns

Payments & Donationsfundraisingdonations

Fundraising Campaigns

Available for all plans. Requires Stripe Connect.

Fundraising campaigns let you collect donations with a progress tracker, suggested amounts, and donor messages — ideal for charities, community projects, or personal causes.

Creating a Campaign

  1. Go to Money → Campaigns in the sidebar
  2. Fill in the campaign details:
Field Description
Title Campaign name (e.g., "Build a Community Garden")
Description What the campaign is for
Image Upload a campaign banner image via the image picker
Target Amount Your fundraising goal (e.g., £5,000)
Currency GBP, USD, EUR, etc.
Min Donation Minimum accepted donation (e.g., £1)
Max Donation Maximum accepted donation
Suggested Amounts Preset buttons (e.g., "5, 10, 25, 50, 100") — donors click to select
Allow Custom Amount Let donors type their own amount
End Date Optional deadline — campaign auto-closes after this
Thank You Message Shown to donors after payment
Short Code Unique URL code for sharing (e.g., flnk.it/my-campaign)
  1. Click Create Campaign

Campaign Dashboard

The Campaigns page at /payments/campaigns shows summary cards at the top:

  • Total Campaigns — all campaigns created
  • Active — currently accepting donations
  • Total Raised — sum of all donations across campaigns
  • Total Donations — number of individual donations

Each campaign card displays:

  • Campaign image (if uploaded)
  • Title and description
  • Progress bar showing raised amount vs target with percentage
  • Donation count and total raised amount
  • Status badge (Active/Inactive/Ended)

How Donations Work

  1. A donor visits your campaign page (or embedded widget)
  2. They see the campaign image, description, and progress bar showing how much has been raised
  3. They select a preset suggested amount or enter a custom amount
  4. They optionally provide their name, email, and a personal message
  5. They can choose to donate anonymously
  6. They're redirected to Stripe Checkout to complete payment
  7. On success:
    • The donation is recorded
    • The campaign's raised amount and donation count are updated in real time
    • A branded payment confirmation email is sent
    • The donor is shown a thank-you page before being redirected back

Embedding on Your Website

WordPress

[flnkit_fundraise campaign_id="your-campaign-short-code"]

This renders a complete fundraising widget with:

  • Campaign image and description
  • Progress bar with raised/target and percentage
  • Suggested amount buttons (highlighted on selection)
  • Custom amount input (if enabled)
  • Donor form (name, email, message, anonymous option)
  • Donate button with loading state

You can also create campaigns directly from the WordPress admin — see the WordPress Plugin Fundraising tab.

Via API

For custom integrations:

  1. Fetch campaign info: GET /api/fundraising/campaigns/{shortCode}/public
  2. Create donation: POST /api/fundraising/campaigns/{shortCode}/donate

The donate endpoint returns a checkoutUrl — redirect the donor there.

Managing Campaigns

  • Toggle Active/Inactive — pause donations without deleting the campaign
  • Edit — update title, description, image, amounts, dates at any time
  • Copy Short Link — share the campaign URL
  • Delete — permanently remove a campaign

Campaign Images

Upload a banner image for your campaign to make it visually appealing:

  • Use the image upload button on the create/edit form
  • Images are stored in your file storage and displayed on the campaign card and embedded widgets
  • Recommended size: landscape orientation, at least 600px wide

Domain Validation

When a donation request comes from an embedded widget (WordPress, etc.), FastLinkIt validates that the request's origin domain is in your Authorized Domains list. Make sure to add your website's domain before embedding campaign widgets.

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.