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_memberuser 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.

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

For administrators
- Go to Fundations > Settings > Wizard in the WordPress admin.
- Set the Authentication Mode to match your site’s registration policy.
- Configure email options: welcome email, confirmation email, and guest confirmation email can each be enabled or disabled independently.
- Optionally enable event assignment so supporters can tag their pages with a fundraising event.
Settings & options
| Option | Default | Description |
|---|---|---|
get_fund_wizard_auth_mode | allow_new | Controls how user accounts are handled: allow_new, guest |
get_fund_event_creation | admin_only | Who can assign or create event tags: admin_only or all_users |
get_fund_url_structure | original | URL slug format: original (FREE), hash (PRO), combined (PRO) |
get_fund_wizard_currency_symbol | € | Currency symbol shown in the wizard form |
get_fund_welcome_email_enabled | true | Send a welcome email with a password-set link to new users |
get_fund_confirmation_email_enabled | true | Send a confirmation email to registered users after creation |
get_fund_guest_confirmation_email_enabled | true | Send 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
hashorcombinedURL structures without Fundations PRO. The wizard silently falls back tooriginalslugs. - 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
| Problem | Likely cause | Fix |
|---|---|---|
| “This campaign is not accepting new supporters” | The parent campaign has _get_fund_children_disabled set to true | Ask the admin to re-enable child actions on the campaign |
| No confirmation email received | The email option is disabled or server mail is misconfigured | Check Settings > Wizard and verify your server can send mail |
| I did not receive a password | The welcome email sends a password-set link, not a password | Check email (including spam) for the link titled “Set your password” |
| The URL slug looks like random characters instead of my title | hash URL structure requires PRO | Contact your site admin or upgrade to Fundations PRO |
| Cannot create an event tag | get_fund_event_creation is set to admin_only | Ask the admin to change the setting to all_users |
Developer reference
Hooks and filters
| Hook | Type | Description |
|---|---|---|
get_fund_wizard_campaign_query_args | filter | Modify the WP_Query args used to search campaigns in the wizard |
get_fund_wizard_form_data | filter | Modify the sanitized form data array before processing begins |
get_fund_wizard_validation_errors | filter | Add custom validation errors; return a non-empty array to block submission |
get_fund_wizard_post_data | filter | Modify the wp_insert_post arguments before the post is created |
get_fund_wizard_meta_values | filter | Modify the meta values saved to the new post |
get_fund_wizard_allowed_image_types | filter | Modify allowed MIME types for the featured image upload |
get_fund_wizard_upload_image | filter | Fires after a featured image is uploaded; receives attachment ID |
get_fund_wizard_redirect_url | filter | Modify the URL the supporter is sent to after creation |
get_fund_wizard_user_created | action | Fires when a new user account is created; receives user ID, email, first name, last name |
get_fund_action_created | action | Fires 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 key | Description |
|---|---|
_get_fund_amount | Fundraising goal |
_get_fund_raised_amount | Initialised to 0 |
_get_fund_status | Set to active |
_get_fund_structure_type | individual, join_team, or create_team |
_get_fund_creator_id | WordPress user ID (0 for guests) |
_get_fund_end_date | End date in Y-m-d format |
_get_fund_creator_anonymous | Whether the creator name is hidden |
_get_fund_campaign_id | Parent campaign post ID (if joining a campaign) |
_get_fund_team_id | Team post ID (if joining or creating a team) |
_get_fund_guest_* | Guest name and email (guest mode only) |
_get_fund_claim_token | 30-day claim token (guest mode only) |
_get_fund_claim_token_expires | Token expiry timestamp (guest mode only) |