User Guide

Everything you need to
build converting funnels

Funnelium lets you create professional sales funnels β€” landing pages, sign-up forms, checkout pages, and more β€” directly inside your WordPress website. No coding needed.

⚑ Works inside WordPress
πŸ“§ Connects to MailerWave
🎨 18 ready-made designs
✏️ Edit text directly on-page

What Funnelium does

Think of Funnelium as a guided path you build for your visitors β€” from first click to sign-up, purchase, or download. Here is everything it can do:

🏠

Landing Pages

Beautiful entry pages that introduce your offer and get visitors excited to take the next step.

πŸ“§

Email Capture Forms

Collect visitor names and emails. Subscribers are automatically added to your MailerWave list.

βœ…

Thank You Pages

Confirmation pages shown after someone subscribes. Include download links, WhatsApp groups, next steps.

πŸ›’

Checkout Pages

Take payment directly inside your funnel using WooCommerce β€” no redirect to a generic cart page.

Requires WooCommerce
⬆️

One-Click Upsells

After purchase, offer a special add-on. Customer accepts with one click β€” card already charged.

Requires WooCommerce
πŸ””

Abandoned Recovery Emails

Automatically email people who started signing up but didn’t finish β€” bring them back.

πŸ“Š

Analytics Dashboard

See how many people visit each page, how many sign up, and where they drop off.

🎯

Ad Tracking Pixels

Connect Facebook, Google Analytics 4, and TikTok pixels to track your paid traffic results.

Installing the plugin

Installation takes about 3 minutes. You only need access to your WordPress admin area.

1

Upload the plugin

In your WordPress dashboard, go to Plugins β†’ Add New β†’ Upload Plugin. Click Choose File, select the funnelium-plugin.zip file you downloaded, then click Install Now.

2

Activate it

Once uploaded, click Activate Plugin. Funnelium will set itself up automatically in the background.

3

One important step β€” save your permalinks

Go to Settings β†’ Permalinks in your WordPress menu and click the Save Changes button β€” even without changing anything. This tells WordPress how to find your funnel pages. Skip this and your pages will show “404 Not Found”.

4

Add your MailerWave API key

Go to Funnelium β†’ Settings in your WordPress sidebar. Paste your MailerWave API key in the field provided. You’ll find this in your MailerWave account under Settings β†’ API Keys. Click Save.

⚠

Important: If your WordPress is set to use plain URLs (like yoursite.com/?p=123), Funnelium will not work. Go to Settings β†’ Permalinks and choose Post name instead. This is a good practice anyway.

Building your first funnel

Let’s build a simple lead-generation funnel β€” a landing page, an email sign-up form, and a thank you page. This is the most common setup and takes about 10 minutes.

1

Create a new funnel

Click Funnelium in your WordPress sidebar, then click Funnels β†’ New Funnel. Give it a name β€” something like “Free Guide Funnel”. Your funnel starts in Draft mode, which means visitors can’t see it yet while you’re building.

2

Add a Landing Page

Click + Add Step, choose Landing Page as the type, pick a design (we’ll talk about designs in the next section), give the page a name, and click Add. Funnelium creates the page instantly with a URL like yoursite.com/free-guide/.

3

Add an Opt-In Form page

Add another step, this time choosing Opt-In Form. After adding it, click Edit Settings on that step and paste your MailerWave List UID into the List UID field. This is the list new subscribers will be added to.

4

Add a Thank You page

Add a final step β€” Thank You. This is where visitors land after subscribing. You can add a download link, your WhatsApp group invite link, or anything else they need after signing up.

5

Edit each page to match your content

Click Edit Settings on each step. The full-screen editor opens β€” your actual page appears on the right, and all the settings are on the left. Change your headline, button text, colours, and everything else right there. More on this in the Editing your pages section.

6

Go live!

Back in the Funnel Editor, change the funnel status from Draft to Active and save. Your funnel is now publicly accessible. Copy the landing page URL and start sharing it!

πŸ’‘

While your funnel is in Draft, only you (as a logged-in admin) can see the pages. Your visitors will be sent to the homepage instead. This gives you time to perfect everything before revealing it to the world.

Page types explained

Each page in your funnel has a specific job. Here’s what each one is for and when to use it.

🏠
Landing Page β€” Your welcome mat

The first page visitors see. Its job is to grab attention, explain your offer in a compelling way, and get people to click through to the next step. No form here β€” just great copy and a clear button.

πŸ“§
Opt-In Form β€” Your email collector

A simple page with a form asking for the visitor’s name and email. When they submit, they’re added to your MailerWave email list automatically and moved to the next step in your funnel.

βœ…
Thank You Page β€” Your delivery room

Where visitors land after subscribing. Tell them what to do next β€” check their email, download their freebie, join your WhatsApp group, or watch a video. A good thank you page sets the tone for the relationship.

πŸ›’
Checkout Page β€” Your payment desk Needs WooCommerce

A payment page embedded inside your funnel design. Customers pay without being taken to a generic WooCommerce cart page. Keeps the experience clean and on-brand.

⬆️
Upsell Page β€” Your post-purchase offer Needs WooCommerce

Shown right after a customer pays. Offer them something extra β€” a complementary product, an upgrade, more of what they just bought β€” at a special price. One click charges their card again. No re-entering payment details.

⬇️
Downsell Page β€” Your fallback offer Needs WooCommerce

If a customer says no to your upsell, show them a cheaper alternative. It’s your last chance to make an additional sale before they leave. Same one-click experience.

Choosing a design

Funnelium comes with 18 ready-made designs (called templates). Pick one that fits your brand and audience β€” you can always change it later. All your text and settings carry over when you switch.

Available designs

🎯

Classic Hero

Dark background, bold headline, benefit list. Professional and trust-building.

All step types
πŸ“„

Minimal

Clean white layout. No distractions β€” just the essentials. Works for any audience.

All step types
⚑

Bold Dark

Black background, electric accent colour, large text. Grabs attention fast.

Landing Β· Opt-In
πŸ‡³πŸ‡¬

Naija Market

Green and gold. Urgency-driven. Designed specifically for Nigerian audiences.

Landing Β· Opt-In Β· TY
✨

Clean Light

Elegant serif font, generous whitespace. Suits coaching, courses, and professional services.

Landing Β· Opt-In
▢️

Video Hero

Your YouTube or Vimeo video plays front and centre. Perfect for video sales letters.

Landing only
πŸ’‘

Which one should I pick? If you’re targeting a Nigerian audience, start with Naija Market. For a professional or corporate feel, try Clean Light. For high-energy offers, go with Bold Dark. You can always switch in seconds from Edit Settings.

Create your own design

If you want a design that’s completely yours, create a PHP template file in your WordPress theme folder. Funnelium will automatically detect it and add it to the design picker. It won’t be overwritten when the plugin updates. Ask a developer to help with this if needed.

Editing your pages

Click Edit Settings on any step in your Funnel Editor to open the full-screen Live Editor. Your actual page appears on the right. Your settings are on the left. Everything you see is what your visitors will see.

Template Mode β€” editing a ready-made design

This is the default mode. Your page loads in the preview panel on the right:

✏️
Click any text to edit it

Headlines, paragraphs, button labels, list items β€” click directly on them in the preview and start typing. Changes appear as you type. A purple dashed outline shows what’s editable when you hover.

🎨
Click any coloured section to change the colour

Hover over a section background with a colour and an amber outline appears. Click it and a colour picker pops up β€” drag the picker to preview live, then click Apply to keep the colour.

πŸ–Ό
Click any image to replace it

A green outline appears on images when you hover. Click and paste a new image URL to swap it out instantly.

πŸ“‹
Use the settings panel on the left for everything else

Headline, subheadline, badge text, button text, button colour, privacy note, urgency bar text, video URL, social proof badges, WhatsApp group link β€” all in labelled fields on the left. Changes sync live to the preview.

🎭
Switch the design from the top of the left panel

Change the Active Template dropdown to instantly swap to a different design. Save to confirm.

β„Ή

Press Ctrl + S (or ⌘ + S on Mac) at any time to save. The preview reloads with your saved changes. You’ll see a green “βœ“ Saved” confirmation at the top.

Viewport preview

Use the πŸ–₯ πŸ“± πŸ“² buttons in the preview toolbar to switch between desktop, tablet, and mobile views. Make sure your page looks good on all screen sizes before going live.

Editing body content

The main body content β€” longer paragraphs, bullet lists, embedded images, videos β€” is edited separately in the standard WordPress editor. Click Edit Body Content β†’ (in the left panel) to open it. After saving there, click the πŸ”„ Reload button in the preview toolbar to see your changes.

Block Builder

Want to build a page from scratch exactly the way you want it? Switch to Block Builder mode using the button in the top bar of the editor. Drag blocks from the left panel onto your page and arrange them in any order.

Available blocks

🎯

Hero / Headline

A big bold section at the top of your page with a headline, subtext, and background colour.

πŸ“

Text

A block of regular paragraph text. Set the size, colour, and alignment.

πŸ‘†

Button

A clickable button. Set the text, link, colour, and size.

πŸ–Ό

Image

Add a photo or graphic. Upload from your computer or paste a URL.

▢️

Video

Paste a YouTube or Vimeo link and it embeds automatically, full-width.

πŸ“§

Opt-In Form

A name + email form that subscribes visitors to your MailerWave list.

βœ…

Bullet List

A list of benefits or points. Choose your own emoji as the bullet icon.

⏱

Countdown Timer

Set a deadline date and time β€” a live countdown runs on your page to create urgency.

πŸ’¬

Testimonial

A quote from a happy customer with their name, role, and optional photo.

πŸ›‘

Trust Badges

A row of reassurance icons β€” “100% Free”, “Secure”, “Instant Access”, etc.

βž–

Divider

A horizontal line to separate sections. Set the colour and thickness.

↕

Spacer

Invisible breathing room between sections. Set the height in pixels.

How to use the Block Builder

1

Drag a block from the left panel

Hold and drag any block type from the left list. Blue drop zones appear between existing blocks showing you where it will land. Release to drop it.

2

Click a block to edit its settings

Click any block on the canvas and its settings appear in the right panel. Everything is labelled clearly.

3

Reorder with drag or the arrow buttons

Drag blocks up or down on the canvas. Or use the ↑ ↓ buttons in the block’s toolbar to move it one position at a time.

4

Duplicate or delete blocks

Each block shows a small toolbar when selected: ⧉ to duplicate it, πŸ—‘ to delete it (you’ll be asked to confirm).

5

Save your page

Click πŸ’Ύ Save or press Ctrl+S. Your page goes live with the block layout instead of the template design.

β„Ή

Template Mode and Block Builder are separate. If you build a page in Block Builder, that replaces the template design entirely. To go back to using a template, switch back to Template Mode and save β€” the block layout will be kept but the template will render instead.

Connecting MailerWave

Funnelium was built for MailerWave. When someone submits your opt-in form, they are instantly added to the email list you choose in MailerWave β€” no manual importing needed.

Quick setup

1

Get your API key from MailerWave

Log into app.mailerwave.com. Go to Settings β†’ API Keys. Copy your API key.

2

Paste it into Funnelium

In WordPress, go to Funnelium β†’ Settings. Paste the key into the API Key field. Click Test Connection to make sure it works, then Save.

3

Find your List UID

In MailerWave, go to Lists. Find the list you want subscribers added to. Look in the URL β€” there’s an alphanumeric code like abc123xyz. That’s your List UID. Copy it.

4

Add it to your Opt-In step

Open the editor for your Opt-In page. In the Form section of the left panel, paste the List UID into the MailerWave List UID field. Save. Done β€” new subscribers will now go straight into that list.

Selling products

Want to sell something inside your funnel? Funnelium works with WooCommerce β€” the free WordPress shop plugin β€” to handle payments. You don’t need WooCommerce at all if you’re just collecting emails.

What you need WooCommerce for

FeatureWithout WooCommerceWith WooCommerce
Landing pagesβœ… Works greatβœ… Works great
Email sign-up formsβœ… Works greatβœ… Works great
Thank you pagesβœ… Works greatβœ… Works great
Recovery emailsβœ… Emails workβœ… Emails + cart restore
Checkout / payment❌ Not availableβœ… Full support
One-click upsells❌ Not availableβœ… Full support
Order bumps at checkout❌ Not availableβœ… Full support

Recommended payment options for Nigeria

πŸ’³
Paystack β€” Recommended

Best option for Nigerian businesses. Accepts cards, bank transfer, and USSD. Install the free Paystack WooCommerce plugin. Enable card tokenisation in Paystack settings to unlock one-click upsells.

πŸ’³
Flutterwave

Good alternative. Supports more African payment methods including mobile money. Install the Flutterwave WooCommerce plugin.

⚠️
Bank Transfer / USSD

Works for standard purchases but cannot support one-click upsells β€” because there’s no saved card to charge again. Customers will see the upsell page but won’t be able to accept with one click.

Recovery emails

When someone fills in your opt-in form but doesn’t finish the process, Funnelium can automatically send them up to 3 follow-up emails to bring them back. This is one of the highest-ROI features in the plugin.

How to turn it on

1

Enable it in Settings

Go to Funnelium β†’ Settings β†’ General. Tick Enable Abandonment Recovery. Set the delay β€” this is how long Funnelium waits before sending the first email. 60 minutes is a good starting point.

2

Write your 3 recovery emails in MailerWave

In your MailerWave account, create 3 transactional email templates. Email 1 should be a friendly reminder. Email 2 (sent 24 hours later) should highlight the value. Email 3 (sent 48 hours later) should create urgency. Each email must include a recovery link button β€” use the merge variable {{ recovery_url }} as the button URL.

3

Add the template IDs to Funnelium

In MailerWave, each email template has a numeric ID. Copy each one and paste them into the three Abandonment Template fields in Funnelium β†’ Settings. Save.

πŸ’‘

If you don’t set up MailerWave templates, Funnelium will still send basic plain-text recovery emails using your WordPress hosting β€” so the feature works even before you create the templates. Add the templates later to make the emails look professional.

Viewing your recovery stats

Go to Funnelium β†’ Abandonment to see a list of everyone who started but didn’t finish, along with their email addresses and whether they were recovered.

Tracking your results

Funnelium automatically tracks how your funnel is performing so you know exactly what’s working and what to improve.

What gets tracked

πŸ‘€
Page views

How many people visit each page in your funnel.

✍️
Sign-ups (opt-ins)

How many people fill in and submit your email form.

πŸ’°
Purchases

How many people complete a WooCommerce payment through your funnel (if you’re selling).

View all this in Funnelium β†’ Analytics. Select your funnel and choose a date range. You’ll see the total numbers for each page and a drop-off chart showing where people are leaving your funnel β€” that’s where you focus your improvements.

Connecting ad tracking pixels

If you’re running paid ads on Facebook, Google, or TikTok, you can connect your tracking pixels so your ad platforms know which ads are actually driving results.

Go to Funnelium β†’ Settings β†’ Tracking Pixels and paste your pixel IDs:

PlatformWhat to pasteWhere to find it
Facebook / MetaYour Pixel ID (a 15-digit number)Meta Business Suite β†’ Events Manager
Google Analytics 4Your Measurement ID (starts with G-)Google Analytics β†’ Admin β†’ Data Streams
TikTokYour Pixel IDTikTok Ads Manager β†’ Assets β†’ Events

The pixel codes fire automatically on every page in your funnels. You don’t need to add them to each page separately.

Common questions

Quick answers to the questions we hear most often.

Do I need WooCommerce to use Funnelium? β–Ά
No. WooCommerce is only needed if you want to accept payments inside your funnel (checkout pages, upsells). For lead generation funnels β€” landing page, email form, thank you page β€” WooCommerce is not needed at all.
My funnel page shows “Page Not Found”. What do I do? β–Ά
Go to Settings β†’ Permalinks in WordPress and click Save Changes (without changing anything). This resets the URL system and usually fixes the issue immediately. If it still doesn’t work, make sure your permalink structure is not set to “Plain”.
Can visitors see my funnel before I’m ready? β–Ά
No. While your funnel is in Draft status, only you (when logged in as an admin) can view the pages. Anyone else is redirected to your homepage. Set the funnel to Active when you’re ready to go live.
Can I use the same funnel step URL as an existing WordPress page? β–Ά
If a WordPress page already exists at the same URL slug (e.g. /contact/), the WordPress page will always win and your funnel step won’t show. Choose a different slug for your funnel step or delete the conflicting WordPress page.
How do I change the URL / slug of a funnel step? β–Ά
Go to Funnelium β†’ Funnel Steps, find the step, and click Edit Content. In the WordPress block editor, look for the Permalink section on the right side panel and change the URL slug there. Save the post.
What happens if a subscriber signs up twice? β–Ά
MailerWave handles duplicate subscriptions. If the email already exists on your list, it will update the subscriber’s details rather than creating a duplicate. Abandonment recovery will also recognise them as already recovered.
Can I use Funnelium with any WordPress theme? β–Ά
Yes. Funnelium completely replaces the theme for funnel pages β€” your active theme’s header, footer, and sidebar do not appear on funnel step pages at all. This is intentional β€” it keeps visitors focused on your funnel with no distractions.
The live editor preview is blank or just shows my theme. What’s wrong? β–Ά
This usually happens when you’re not logged into WordPress in the same browser session, or when the funnel step page isn’t published yet. Make sure you’re logged in as an admin, and check that the step’s page is published (not draft) in Funnelium β†’ Funnel Steps.
Can I have multiple funnels at the same time? β–Ά
Yes, you can create as many funnels as you like. Each funnel has its own set of pages and its own settings. They’re completely independent of each other.

Troubleshooting

Something not working? Check here first.

πŸ”§
Page shows “404 Not Found”

Go to Settings β†’ Permalinks β†’ Save Changes. Also check your permalink structure isn’t set to “Plain”.

πŸ”§
Wrong page is showing at my funnel URL

A WordPress page or post exists at the same URL slug. Either rename your funnel step to a different slug or delete the conflicting WordPress page.

πŸ”§
Funnel page shows the theme (header, sidebar, footer)

This means the funnel wrapper didn’t load. Check that the funnel is Active (not Draft), and that the step’s page_id is correctly assigned. Try deactivating and reactivating the plugin.

πŸ”§
Editor preview shows a blank white page

You’re not logged into WordPress in the same browser. Log in and reload the editor. Also check the funnel step page is published.

πŸ”§
Editor keeps loading and never finishes

This was caused by a PHP session conflict in earlier versions β€” it’s fixed in the current version. Update to the latest version of the plugin.

πŸ”§
My changes aren’t saving

Check your browser console (F12) for errors. Make sure you’re clicking Save or pressing Ctrl+S. If the save button spins indefinitely, your server may have a timeout issue β€” contact your hosting provider.

πŸ”§
Form submits but nobody goes into my MailerWave list

Check your API key in Funnelium β†’ Settings β€” click Test Connection. Also confirm you’ve entered the List UID (not the list ID number) in your opt-in step settings.

πŸ”§
I’m getting an API error on the Test Connection button

Your API key is probably wrong. Copy it fresh from MailerWave β†’ Settings β†’ API Keys. Make sure there are no extra spaces when pasting.

πŸ”§
I can’t find my List UID

In MailerWave, go to Lists and click on your list. Look at the URL in your browser β€” the UID is the alphanumeric code in the URL, not the name of the list.

πŸ”§
Recovery emails aren’t sending

WordPress sends emails on a timer that only runs when someone visits your site. On quiet sites, emails can be delayed. For testing, set the delay to 1 minute in Settings and visit your site a few minutes after the test sign-up.

πŸ”§
Recovery emails are sending but look plain / unstyled

You haven’t added MailerWave template IDs yet. The plain emails are a fallback. Create your templates in MailerWave and add the IDs to Funnelium β†’ Settings.

πŸ”§
People are still getting recovery emails after purchasing

Make sure you’ve added the WooCommerce recovery hook to your theme’s functions.php as shown in the developer reference section. Without it, purchases don’t automatically mark records as recovered.

Keyboard shortcuts

Quick actions available inside the full-screen Live Editor.

Save your changes
Ctrl + S
Save your changes (Mac)
⌘ + S
Finish editing a single-line text field
Enter
Navigate away (you’ll be warned if there are unsaved changes)
← Back button
Developer Reference

The sections below are for developers and technically advanced users. Average users can ignore everything from here down.

System requirements

RequirementMinimumRecommended
WordPress5.86.4+
PHP7.48.1+
MySQL / MariaDB5.6 / 10.08.0+ / 10.5+
WooCommerce (optional)6.0Latest stable
Permalink structureAny non-PlainPost name (/slug/)

URL routing architecture

The fn_step CPT is registered with rewrite => false. Routing is handled via the request filter in Funnelium_CPT::intercept_step_request(). No rewrite rules are written to the database. The filter checks for an existing WP page/post at the slug first (giving them priority), then queries wp_posts for a matching fn_step by post_name. If found, it rewrites query vars to ['post_type'=>'fn_step','p'=>$ID].

The post_type_link filter in Funnelium_Funnel::clean_step_permalink() ensures get_permalink() for fn_step posts returns the clean root URL.

Hooks & Filters

Actions

// Fires after a step is fully loaded
add_action( 'funnelium_step_loaded', function( $step, $funnel ){}, 10, 2 );

// Fires after a successful opt-in submission
add_action( 'funnelium_optin_success', function( $email, $first_name, $funnel_id ){}, 10, 3 );

// Fires before a template file is included
add_action( 'funnelium_before_render_template', function( $path, $step_type, $slug ){}, 10, 3 );PHP

Filters

// Modify step settings before template renders
add_filter( 'funnelium_step_settings', function( $settings, $step_type, $post_id ){
    return $settings;
}, 10, 3 );

// Override the resolved template file path
add_filter( 'funnelium_template_path', function( $path, $step_type, $slug ){
    return $path;
}, 10, 3 );

// Override the redirect URL after a successful opt-in
add_filter( 'funnelium_optin_redirect', function( $url, $email, $funnel_id ){
    return $url;
}, 10, 3 );PHP

Database tables

7 tables created on activation. All prefixed with your WordPress table prefix (default: wp_).

TableWhat it stores
fn_funnelsFunnel name, status, timestamps
fn_funnel_stepsStep type, template, sort order, settings JSON (including builder_layout), linked wp_posts ID
fn_analyticsView / optin / purchase events with timestamps and session hashes
fn_abandonmentCaptured emails, recovery tokens, email sent flags, recovered status, cart data
fn_order_bumpsWooCommerce order bump configuration per checkout step
fn_upsell_offersUpsell / downsell offer configuration, accept/decline routing
fn_ab_testsA/B test definitions (reserved for future use)

AJAX API quick reference

All admin endpoints require nonce: fn_nonce. All return standard WP JSON.

ActionAuthDescription
fn_save_funnelAdminCreate / update a funnel
fn_save_stepAdminCreate a new step
fn_delete_stepAdminTrash a step and its WP page
fn_save_step_settingsAdminSave template settings for a step
fn_save_builder_layoutAdminSave block builder JSON layout
fn_load_builder_layoutAdminFetch saved block layout
fn_upload_imageAdminUpload image to WP media library
fn_reorder_stepsAdminUpdate step sort order
fn_optin_submitPublicHandle opt-in form; subscribe to MailerWave; return redirect URL
fn_accept_upsellPublicAccept one-click upsell; charge saved WC token
fn_decline_upsellPublicDecline upsell; redirect to decline step
fn_capture_checkout_emailPublicCapture billing email on checkout page for abandonment tracking

Building a custom template

Create a file at your-theme/funnelium/{step-type}/your-template-name.php. It will auto-appear in the template dropdown. The funnel wrapper handles the HTML shell β€” your file only outputs the body content.

// your-theme/funnelium/landing/my-template.php
<?php
defined( 'ABSPATH' ) || exit;

$step     = Funnelium_Funnel::$active_step;
$settings = $step['settings'] ?? [];

// Read settings with sensible fallbacks
global $post;
$headline = $settings['headline'] ?? get_the_title( $post );
$cta_text = $settings['cta_text'] ?? 'Get Started β†’';

// Auto-get the next step URL
$steps   = Funnelium_Funnel::get_funnel_steps( $step['funnel_id'] );
$cta_url = '#';
foreach ( $steps as $s ) {
    if ( (int)$s->page_id === (int)$step['post_id'] ) {
        $cta_url = Funnelium_Funnel::get_next_step_url( $step['funnel_id'], $s->sort_order ) ?: '#';
        break;
    }
}
?>
<div class="my-template">
    <h1><?php echo wp_kses_post( $headline ); ?></h1>
    <a href="<?php echo esc_url( $cta_url ); ?>"><?php echo esc_html( $cta_text ); ?></a>
</div>PHP