For course creators
Lean WordPress forms for course creators
Course landing pages live or die on funnel speed. Here's the form stack I use on course sites where every kilobyte counts.
Course landing pages have a specific shape: hero, social proof, curriculum outline, instructor bio, FAQ, CTA. Three forms, usually: a free-lesson signup at the top, a “wait list” mid-page, a checkout-ish form at the bottom.
The whole page needs to load in under 2 seconds on mobile. Every form on the page costs you against that budget. Picking the wrong forms stack here is how a 5% conversion rate becomes 1.5%.
Here’s the stack I deploy on course sites.
The funnel-speed budget
Open the network tab on a typical course landing page. Strip JavaScript down to:
- The framework (Astro / WP theme): ~30 KB.
- Analytics: ~20 KB (Plausible, Fathom) or ~70 KB (GA4).
- The forms plugin: 4 KB (Core Forms) to 200 KB (most builders).
- Fonts: ~80 KB.
Total bundle should land under 200 KB on a course landing page. The forms plugin is the biggest variable.
If you’re seeing 600 KB of JavaScript on a landing page, the forms plugin is usually 60% of that. Cutting it makes more difference than any other single optimization.
Form 1: Free-lesson signup (hero CTA)
The form most likely to convert. Single-purpose: capture the email, drop them into a free email sequence.
Three fields max. I default to one:
<p>
<label for="email" class="visually-hidden">Email</label>
<input type="email" name="email" id="email"
placeholder="you@example.com" required />
</p>
<p>
<button type="submit">Get the free first lesson</button>
</p>
Wired to:
- Mailchimp or MailerPress for the email sequence.
- Slack for team-side notification (optional).
That’s it. No name field. No phone field. No “what’s your goal?” dropdown. Every extra field cuts conversion. The drip sequence asks for the name later, when it matters.
Form 2: Wait list (mid-page or footer)
For courses that aren’t always open. Capture interest, drip a “we open in October” sequence.
Same form as the hero, slightly different success message:
You’re on the waitlist. We open enrollment October 15. We’ll email you the moment doors open.
Same Mailchimp action, different audience or different tag:
Tag: waitlist-2026-fall
Tagging instead of using a separate audience is what I’d recommend. Lets you do segmented broadcasts later. “Send only to waitlist-2026-fall” is a one-line filter.
Form 3: Checkout-adjacent (apply or book a call)
For higher-ticket courses ($500+) where the funnel is “land → free training → apply to enroll.” The application form is heavier — you genuinely need 8-12 fields to qualify the lead.
Wire it to:
- HubSpot or FluentCRM (the lead becomes a real CRM contact).
- Slack (team triages applicants).
- A drip sequence in your ESP (the applicant gets context emails).
This is the form where you can afford captcha. Keep Cloudflare Turnstile on it (lighter bundle than reCAPTCHA), and rate-limit aggressively (5/IP/hour).
The “submit then redirect” pattern
For a course funnel, this is the only correct pattern.
In Core Forms’ form settings → Confirmation → Redirect to URL, set it to a /thanks/ page (or /start/, /welcome/, whatever). The page should:
- Confirm the action (“Check your email for the first lesson.”).
- Fire conversion pixels (Google Ads, Meta, LinkedIn).
- Have one CTA to keep them moving (start the lesson, join the community, etc.).
The form is AJAX-submitted, validation errors stay inline, but on success the user lands on the thank-you page where pixels can fire. The hybrid pattern I covered in the AJAX piece.
Without this redirect, every paid ad campaign you run loses attribution data. Don’t skip it.
Anti-patterns I see often
1. The 14-field “tell us about yourself” form on the homepage. Conversion-killer. Save the qualification questions for the application form. The free-lesson signup needs an email and nothing else.
2. Modal popups that auto-show on page load. Every course site I see thinks this is a conversion booster. The data says it cuts conversion by 20-30% on most audiences. Show it on exit-intent or after 30 seconds of engagement, not on page load.
3. The “double opt-in” toggle off “to maximize signups.” Yes, you’ll get more email addresses. No, they won’t open your emails. ESP-side metrics tank, deliverability drops, the whole list rots. Keep double opt-in on.
4. The “we’ll be in touch” message instead of the redirect. Generic, low-effort. Replace with a thank-you page that has the next step pre-loaded. Conversion-rate downstream goes up.
The CRM choice for course creators
If you’re running:
- A small course (one cohort, one product): Mailchimp or MailerPress is enough.
- Multiple courses with different audiences: FluentCRM with tag-based segmentation.
- A high-ticket course with a sales team (yes, even one person): HubSpot for the deal pipeline.
I covered the comparison in FluentCRM vs HubSpot vs Mailchimp.
The performance audit
On any course landing page:
1. Open Lighthouse → Mobile → Performance.
2. Note "Largest Contentful Paint" and "Total Blocking Time."
3. If LCP > 2.5s or TBT > 200ms, the forms plugin might be the cause.
4. Check the network tab. Is the forms plugin's JS bundle in the top three by size?
If yes, you’re paying funnel-conversion tax. The fix is a lighter forms plugin or fewer scripts, not “buy a faster host.”
The next step
Pick the highest-traffic course landing page in your funnel. Run Lighthouse mobile. Find the heaviest script. If it’s a forms plugin, that’s where the conversion gain is hiding.
Core Forms on a course site usually saves 200-400 KB versus the heavier alternatives. On the funnel-speed budget, that’s a real number.