Requires: Charitable Pro 1.8.16+
Charitable Ambassadors 3.0.0+
When someone clicks an ambassador’s invite link, the first thing they see is the invite landing page. You want this page to look fanstatic and carry all the right information a new ambassador will need to know. It’s the moment of first impression: who’s asking them, which cause they’re being invited to support, and what they’re being asked to do.
The landing page is one of the few pages you can entirely design to fit your brand.
In this guide, we’ll show you how to set up and customize the page.
The technical details: This is the page you’ll set up on your site for the [charitable_invite_landing] shortcode to render on. The shortcode is the renderer, but the surrounding page (hero, navigation, footer) is your normal WordPress page. The shortcode just drops the inviter-and-cause card into wherever you put it.
When You’d Use It
- Setting up Invitations for the first time – you need this page before the feature can do anything.
- Refining the message – the default copy works, but tweaking it for your audience makes the page convert better.
- Theme integration – you want to control the layout (hero image, sidebar, footer) without losing the shortcode’s logic.
Where to Find the Invite Landing Page Settings
The landing page itself is a regular WordPress page. The shortcode that powers it is:
[charitable_invite_landing]
To configure which page Ambassadors treats as the landing page, go to your WordPress admin and head to Charitable » Ambassadors » Invitations » Landing Page.
Creating the Invite Landing Page
- WordPress Admin » Pages » Add New.
- Title it something inviting – “Join Our Team,” “Become a Fundraiser,” “Help Us Reach Our Goal.”
- Paste the shortcode into the page content:
[charitable_invite_landing] - Publish.
- Go to Charitable » Ambassadors » Invitations » Landing Page and pick this page.
The page is now ready to receive recruits.
What Appears on Your Landing Page
The shortcode renders three things in order:
| Section | What’s in it |
|---|---|
| Inviter hero | Avatar (real Gravatar or colored initials), inviter’s name, a verb-phrase like “Sarah invited you to fundraise.” |
| Intro copy (optional) | The rich-text Landing Page Intro Copy you set under Invitations. Skip it if you don’t want one. |
| Cause card | The parent campaign the recruit is being invited to support – hero image, title, raised/goal progress, donor count. |
| CTA | A Become a Fundraiser button that links to your submit-campaign page, pre-filled with the cause via cap_campaign=<id>. |
When the recruit hits the page directly (no token, e.g. clicking an “About this program” link), they see a generic version with placeholder content. The shortcode never renders empty – it always has something to show.
Three Special States
| State | What renders |
|---|---|
| Normal (valid token from someone else) | Inviter hero + cause card + Become a Fundraiser CTA. |
| Self-recruit (the user clicked their own invite link while logged in) | A friendly “you can’t recruit yourself” variant – hero gets a self-recruit message, CTA is suppressed. |
| No token (someone visited the page URL directly) | Generic hero (“Become a fundraiser”) + a cause card showing your most prominent parent campaign, or a fallback image if none is configured. |
Theme Overrides
The shortcode renders from templates/invite/landing.php. To customize the markup or layout, copy it into your theme:
your-theme/charitable-pro/charitable-ambassadors/invite/landing.php
Inside the override, you have access to:
| Variable | Type | Notes |
|---|---|---|
$inviter | WP_User | The inviter (false on the no-token path). |
$inviter_name | string | Display name (or “Your Nonprofit” if empty). |
$avatar_html | string | The inviter avatar – real Gravatar or colored initials. |
$cause | WP_Post | The parent campaign (false on the no-token path). |
$cause_data | array | Cause stats: raised, goal, donor_count, percent. |
$intro_copy | string | The Landing Page Intro Copy setting (rich text). |
$cta_url | string | The Become a Fundraiser URL (with cap_campaign=NNN). |
$cta_label | string | The CTA button label (default “Become a Fundraiser,” filterable). |
$is_preview | bool | True when an admin is previewing without a token. |
$is_self_recruit | bool | True when the logged-in user is the inviter themselves. |
Customizing the Copy
The most-overridden things on the landing page are the labels:
| Filter | Default | Purpose |
|---|---|---|
charitable_ambassadors_invite_landing_cta_label | “Become a Fundraiser” | The button text on the CTA. |
charitable_ambassadors_invite_landing_inviter_verb | “invited you to fundraise” | Used in the hero phrasing (“Sarah invited you to fundraise“). |
charitable_ambassadors_invite_landing_self_recruit_copy | “You can’t recruit yourself…” | The full body shown when self-recruit fires. |
charitable_ambassadors_invite_landing_preview_notice | admin preview notice | The notice shown to admins when they preview the page without a token. |
For longer-form changes (different layout, different sections), do a theme override.
Body Classes
The page gets two body classes you can use for scoped CSS:
charitable-ambassadors-invite-landing
charitable-ambassadors-invite-landing--{state} /* normal | self-recruit | preview */
Combine these with your theme’s design system to make the page look like the rest of your site without forking the template.
Caching
The landing page is dynamic – personalized per inviter token via cookies. Ambassadors marks it as dynamic via Pro 1.8.15.2’s charitable_is_dynamic_page filter so cache plugins skip it. If you’re on an older Pro that doesn’t have that filter, the URL handler emits no-cache headers on the redirect step – but a cache plugin could still cache the landing page itself, which would break attribution. The Invitations admin shows a self-check warning when this state is detected.
Tips
- Keep the page focused. Strip out unrelated nav, sidebar widgets, footer CTAs. The job of this page is to convert a recruit, not browse your site.
- Add a one-line testimonial. “Sarah raised $4,200 last year – join her team and let’s beat that” works better than a generic ask.
- Use Landing Fallback Image. When a parent doesn’t have a featured image (rare but happens), the fallback image keeps the cause card from looking broken.
- Preview without a token. As an admin, visit the page URL directly. You’ll see the generic version – useful for confirming layout without setting up a real recruit.
Developer reference
The rest of this page is for developers customizing the landing page.
Shortcode
[charitable_invite_landing]
The shortcode is registered unconditionally even when Invitations is disabled – so a page using the shortcode shows an admin-only preview notice instead of leaking the literal [charitable_invite_landing] text.
Template path
templates/invite/landing.php # default
Theme override path: your-theme/charitable-pro/charitable-ambassadors/invite/landing.php. The template chooser uses Charitable’s standard charitable_locate_template filter.
Filters
| Filter | Default | Purpose |
|---|---|---|
charitable_ambassadors_invite_landing_cta_label | “Become a Fundraiser” | Button label. |
charitable_ambassadors_invite_landing_cta_url | submit-campaign URL | The full URL the CTA links to. Receives ($url, $cause_id). |
charitable_ambassadors_invite_landing_inviter_verb | “invited you to fundraise” | Verb phrase in the hero. |
charitable_ambassadors_invite_landing_self_recruit_copy | computed string | Self-recruit body. |
charitable_ambassadors_invite_landing_preview_notice | computed | Admin preview notice content. |
charitable_ambassadors_invite_landing_intro_copy | setting value | Filter the rendered intro copy (after wp_kses_post). |
charitable_ambassadors_invite_landing_cause_id | computed | Override which parent campaign is shown on the cause card (e.g. when token has no campaign, pick a specific featured cause). |
charitable_ambassadors_invite_landing_fallback_image_id | setting value | The attachment ID of the fallback image. |
charitable_ambassadors_invite_landing_body_class | array | Modify the body_class array applied to landing pages. |
Actions
| Action | Args | Fires when |
|---|---|---|
charitable_ambassadors_invite_landing_before | $inviter, $cause, $context | Just before the shortcode markup renders. |
charitable_ambassadors_invite_landing_after | $inviter, $cause, $context | Just after. |
charitable_ambassadors_invite_landing_rendered | $inviter, $cause, $context | The shortcode completed its render. |
Body class
charitable-ambassadors-invite-landing is added to body_class on any page that contains the shortcode. The state-suffix variant (--normal, --self-recruit, --preview) is added at runtime. Add to the array via the charitable_ambassadors_invite_landing_body_class filter.
Detection helper
charitable_ambassadors_is_invite_landing_page( $post_id = null ); // bool
Useful when wiring conditional theme behavior (e.g. hide the site search bar on the landing page).
Capabilities
Public read. No capability gate.
Customization examples
Change the CTA label:
add_filter( 'charitable_ambassadors_invite_landing_cta_label', function () {
return 'Sign up to fundraise';
} );
Customize the self-recruit message:
add_filter( 'charitable_ambassadors_invite_landing_self_recruit_copy', function () {
return "Looks like you're already a fundraiser! Share your invite link with friends instead.";
} );
Inject a testimonial below the cause card:
add_action( 'charitable_ambassadors_invite_landing_after', function ( $inviter, $cause, $context ) {
if ( ! $cause ) {
return;
}
echo '<blockquote class="invite-testimonial"><p>"Joining as a fundraiser was the best decision I made this year." - Past Ambassador</p></blockquote>';
}, 10, 3 );
Hide the site nav on the landing page:
add_filter( 'body_class', function ( $classes ) {
if ( charitable_ambassadors_is_invite_landing_page() ) {
$classes[] = 'no-nav';
}
return $classes;
} );
// ...then in your theme's CSS: body.no-nav .site-header { display: none; }
Override the CTA URL to deep-link to a specific submit page:
add_filter( 'charitable_ambassadors_invite_landing_cta_url', function ( $url, $cause_id ) {
return add_query_arg( 'cap_campaign', $cause_id, home_url( '/sign-up-to-fundraise/' ) );
}, 10, 2 );
Related
- Invitations – the parent feature doc.
- How Attribution Works – the click-to-credit flow this page is part of.
- How invitation data is stored – the custom table behind the scenes.
- Submit Campaign – the page the CTA links to.
- Hooks & filters in Ambassadors – full reference.
Helpful Links
🤝 Get help when you need it
Connect with Customer Support →
📑 Find the guide you need
Browse the Documentation Hub →
⬇️ Download proven strategies, campaign ideas, and expert tools
Get the Fundraising Kit →
💸 Get Free Fundraising Resources
Head to the Charitable Fundraising Hub →
🤔 Got questions about Charitable?
Charitable FAQs →
Need help understanding non-profit terms and jargon?
See our Non-Profit Glossary →

