DOCS

Creating a campaign

The Action Wizard is the main way supporters create their own fundraising pages on your site. It is available in the free plugin with no PRO license required. Completed pages publish immediately. There is no moderation queue in the free version.

Why use it

The wizard walks supporters through creating a fundraising page in a few steps without any WordPress knowledge. You can allow guest creation (no account required), automatic account creation, or require an existing login, depending on your site’s needs.

What it does

The wizard accepts a title, description, fundraising goal, end date, and optional image. It creates a get_fund_action post, saves all relevant meta, and sends confirmation emails. Depending on the authentication mode, it may create a new user account or link the page to an existing one.

Three authentication modes are available:

  • allow_new (default): If the visitor is not logged in, a new fund_member user account is created using the submitted email address. If an account already exists for that email, the wizard logs the user in and re-uses that account. A welcome email with a password-set link is sent in both cases.
  • guest: No account is created. Contact details are saved to the page as meta. A confirmation email is sent containing a claim button with a 30-day token. The visitor can later claim the page and link it to an account.
  • If an unrecognised value is set, the wizard falls back to allow_new.

Three campaign structure types are available:

  • individual: A standalone fundraising page not linked to any team or campaign.
  • join_team: The page is linked to an existing team under a campaign.
  • create_team: A new team is created, then linked to the page.

A fundraising page publishes immediately after the wizard completes.

Wizard step 1

How to use it

For supporters

  1. Go to the fundraising wizard page on the site (usually linked from the main campaign page or navigation).
  2. Enter your name and email address. If you already have an account, a login prompt may appear.
  3. Fill in a title for your fundraising page.
  4. Write a description explaining what you are fundraising for.
  5. Set a fundraising goal amount.
  6. Optionally set an end date.
  7. Upload a featured image (JPEG, PNG, or WebP, maximum 5 MB).
  8. If the site allows it, choose whether your page is individual, or linked to a team.
  9. Submit the form. You will receive a confirmation email, and your page is live immediately.
Wizard form complete

For administrators

  1. Go to Fundations > Settings > Wizard in the WordPress admin.
  2. Set the Authentication Mode to match your site’s registration policy.
  3. Configure email options: welcome email, confirmation email, and guest confirmation email can each be enabled or disabled independently.
  4. Optionally enable event assignment so supporters can tag their pages with a fundraising event.

Settings & options

OptionDefaultDescription
get_fund_wizard_auth_modeallow_newControls how user accounts are handled: allow_new, guest
get_fund_event_creationadmin_onlyWho can assign or create event tags: admin_only or all_users
get_fund_url_structureoriginalURL slug format: original (FREE), hash (PRO), combined (PRO)
get_fund_wizard_currency_symbolCurrency symbol shown in the wizard form
get_fund_welcome_email_enabledtrueSend a welcome email with a password-set link to new users
get_fund_confirmation_email_enabledtrueSend a confirmation email to registered users after creation
get_fund_guest_confirmation_email_enabledtrueSend a confirmation email with claim link to guest creators
get_fund_claim_page_url(page ID)The page where guests claim their fundraising page

What you can and cannot do

You can:

  • Create fundraising pages without a WordPress account (guest mode).
  • Join an existing team or create a new one during the wizard.
  • Upload a featured image and gallery images.
  • Assign an event tag if the admin has enabled that for all users.

You cannot:

  • Use hash or combined URL structures without Fundations PRO. The wizard silently falls back to original slugs.
  • Create a page under a campaign that has disabled child actions.
  • Skip the goal amount field. It is required.
  • Moderate pages before they go live (the free version has no approval workflow).

Known behaviour: In allow_new mode, the welcome email (containing a password-set link) is also sent to supporters who already have an account and are creating an additional fundraising page. This means an existing user will receive a second password-reset link each time they use the wizard.

Guest claim tokens expire after 30 days. After expiry, there is no frontend mechanism to request a new token.

Examples

Charity run with guest mode: A charity enables guest mode so participants can start a fundraising page without registering. Each participant receives a claim link by email. They can optionally claim the page later to manage it with a full account.

School fundraiser with teams: A school creates a campaign. Students use the wizard to join a class team. Each student’s structure_type is set to join_team, linking their page to their class team and the parent campaign.

Troubleshooting

ProblemLikely causeFix
“This campaign is not accepting new supporters”The parent campaign has _get_fund_children_disabled set to trueAsk the admin to re-enable child actions on the campaign
No confirmation email receivedThe email option is disabled or server mail is misconfiguredCheck Settings > Wizard and verify your server can send mail
I did not receive a passwordThe welcome email sends a password-set link, not a passwordCheck email (including spam) for the link titled “Set your password”
The URL slug looks like random characters instead of my titlehash URL structure requires PROContact your site admin or upgrade to Fundations PRO
Cannot create an event tagget_fund_event_creation is set to admin_onlyAsk the admin to change the setting to all_users

Developer reference

Hooks and filters

HookTypeDescription
get_fund_wizard_campaign_query_argsfilterModify the WP_Query args used to search campaigns in the wizard
get_fund_wizard_form_datafilterModify the sanitized form data array before processing begins
get_fund_wizard_validation_errorsfilterAdd custom validation errors; return a non-empty array to block submission
get_fund_wizard_post_datafilterModify the wp_insert_post arguments before the post is created
get_fund_wizard_meta_valuesfilterModify the meta values saved to the new post
get_fund_wizard_allowed_image_typesfilterModify allowed MIME types for the featured image upload
get_fund_wizard_upload_imagefilterFires after a featured image is uploaded; receives attachment ID
get_fund_wizard_redirect_urlfilterModify the URL the supporter is sent to after creation
get_fund_wizard_user_createdactionFires when a new user account is created; receives user ID, email, first name, last name
get_fund_action_createdactionFires after all meta is saved on the new post; receives post ID and empty data array

Signatures

// Validate or block submissions
add_filter( 'get_fund_wizard_validation_errors', function( array $errors, array $data ) {
    if ( empty( $data['custom_field'] ) ) {
        $errors[] = __( 'Custom field is required.', 'my-plugin' );
    }
    return $errors;
}, 10, 2 );

// Redirect to a custom page after creation
add_filter( 'get_fund_wizard_redirect_url', function( string $url, int $post_id ) {
    return home_url( '/thank-you/?fund=' . $post_id );
}, 10, 2 );

// Run code after a new user is created via the wizard
add_action( 'get_fund_wizard_user_created', function( int $user_id, string $email, string $first_name, string $last_name ) {
    // e.g. add the user to a mailing list
}, 10, 4 );

Meta saved on creation

Meta keyDescription
_get_fund_amountFundraising goal
_get_fund_raised_amountInitialised to 0
_get_fund_statusSet to active
_get_fund_structure_typeindividual, join_team, or create_team
_get_fund_creator_idWordPress user ID (0 for guests)
_get_fund_end_dateEnd date in Y-m-d format
_get_fund_creator_anonymousWhether the creator name is hidden
_get_fund_campaign_idParent campaign post ID (if joining a campaign)
_get_fund_team_idTeam post ID (if joining or creating a team)
_get_fund_guest_*Guest name and email (guest mode only)
_get_fund_claim_token30-day claim token (guest mode only)
_get_fund_claim_token_expiresToken expiry timestamp (guest mode only)