Things I figured out the hard way.
Forms, integrations, performance, deliverability, the occasional rant. Written by a WordPress practitioner who spent too long getting these wrong so you don't have to.
-
Address Line 1 vs Address Line 2: What Goes in Each
Line 1 is your street number and name; line 2 is the apartment, suite, or unit — and it's optional. No unit? Leave it blank. Examples for every case inside.
Read → -
Contact Form 7 Messages: Every Setting, Explained
Every string Contact Form 7 shows visitors is editable in the Messages tab — no code. Here's what each one controls and how I'd rewrite the defaults.
Read → -
30 Customer Satisfaction Survey Questions That Get Honest Answers
The 30 customer satisfaction survey questions I actually use with clients, grouped by goal — plus the 3 rules that keep answers honest.
Read → -
Datepicker vs Timepicker: What Each Field Collects, and When You Need Both
A datepicker collects a date, a timepicker collects a time. Here's how I pick between them, and why I reach for native inputs before any JS widget.
Read → -
Google Forms Alternatives When You Run WordPress
You already pay for hosting and a domain. The best Google Forms alternative is a form on your own site — here's my honest comparison of the options.
Read → -
Gravity Forms Alternatives, From Someone Who Builds Forms Plugins
The right Gravity Forms alternative depends on why you're leaving — price, page weight, or the builder itself. I map each reason to a plugin.
Read → -
"How Did You Hear About Us?" — The Question Your Analytics Can't Answer
The exact how did you hear about us survey question I put on client forms, the 7 answer options that work, and where to place it without hurting conversion.
Read → -
"What Is the Primary Reason for Your Score?" — The NPS Question, Explained
It's the standard NPS follow-up: after your 0–10 rating, the company wants the one factor behind it. Here's how to answer it, and how to ask it right.
Read → -
Radio Buttons vs Checkboxes: When to Use Which
Radio = pick exactly one, checkbox = pick any number. I've fixed this on dozens of client forms — here's the rule, the yes/no trap, and the edge cases.
Read → -
How to Stop Google Form Spam (5 Fixes, Plus Their Limits)
Google Forms has no CAPTCHA setting. I walk through the 5 fixes that actually cut google form spam — sign-in, validation, unlisted links — and where each fails.
Read → -
What Is a Honeypot Field? Invisible Spam Protection, Explained
A honeypot field is a hidden input only bots fill in. Here's how it works, how to add one to any form, and where it fails — from 100+ client forms.
Read → -
Where WordPress Stores Form Submissions (and How to Find Yours)
WordPress core stores zero form submissions — your form plugin does, in one of three places. Here's how to find yours in two minutes, no SQL required.
Read → -
WordPress Form Not Sending Email? Work Through This List
Nine times out of ten your form works fine — the email dies at delivery. Here's the checklist I run on client sites, in the order that finds it fastest.
Read → -
A WordPress Contact Form Without a Plugin (Full Code, Plus the Catch)
Yes, you can build a WordPress contact form without a plugin — I've done it in ~80 lines. Here's the full working code, and the five things it won't do.
Read → -
WPForms Alternatives Worth Your Time
WPForms is fine — the upsell wall isn't. I compare the five WPForms alternatives I'd actually consider, and name which one fits which kind of site.
Read → -
GDPR consent pattern for WordPress forms
Most form GDPR setups are theater. Here's the pattern that holds up to a real audit, with the consent fields, the storage, and the audit trail.
Read → -
Gutenberg block vs shortcode for forms
Both work. They're not equivalent. Here's the rule for when to use the Core Forms block versus the shortcode, with the actual tradeoffs.
Read → -
Migrating from Contact Form 7
Contact Form 7 ships on millions of WordPress sites. Migrating off it is mostly painless. The 5 things that aren't are worth knowing in advance.
Read → -
Save-and-resume on long forms
Save-and-resume turns a 30-field application form from a 28% completion rate into a 65% one. Here's the data, and the implementation.
Read → -
Webhooks vs Zapier vs native integrations
Three ways to wire form submissions to external tools. Each has a sweet spot. Picking the wrong one costs money or maintenance time.
Read → -
25 Core Forms data variables, explained
Core Forms ships 25+ template variables for emails, redirects, and webhooks. Most users only know three. Here's the full reference.
Read → -
Multi-step forms: when they help vs hurt
Multi-step forms boost completion on long forms and tank conversion on short ones. The decision is research, not preference. Here's the rule.
Read → -
File uploads on WordPress forms
File uploads are a paid add-on in most WordPress forms plugins. Here's why they shouldn't be, and the four things you need to get them right.
Read → -
Forms for agencies: handing off to clients
How to set up form submissions so your agency clients can manage their own leads, without giving them WordPress admin access. The full pattern.
Read → -
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.
Read → -
Headless WordPress forms with Core Forms — the calm way to embed a WP form on Astro, Next.js, Vue, or plain HTML
Use WordPress as a form backend and render the form anywhere — Astro, Next.js, plain HTML, or a mobile webview. Three integration modes, one API key.
Read → -
When NOT to use a WordPress forms plugin
There's a real ceiling where forms plugins (any of them, including Core Forms) become the wrong tool. Here's where the line is and what to use instead.
Read → -
WP_DEBUG every form submission
Most form-related bugs are silent failures. Turning on WP_DEBUG plus Core Forms' email log catches them in 30 seconds. Here's the setup.
Read → -
100+ WordPress forms, no form builder
After a hundred-plus client form deployments, the visual builder is a tool I've stopped reaching for. Here's what I do instead, and why it scales.
Read → -
Why I bundle every feature into the price
Most WordPress plugins charge extra for file uploads, webhooks, and Mailchimp. Core Forms doesn't. Here's the math, and the philosophy.
Read → -
Why your form emails land in spam
Form notifications in the spam folder is a deliverability problem, not a forms plugin problem. Here's the four-step fix that actually works.
Read → -
Akismet isn't enough — what to layer
Akismet is the WordPress default for spam. But it's not a complete solution. Here's the four-layer setup I run on production sites.
Read → -
reCAPTCHA v3 vs Turnstile vs hCaptcha
Three captchas, three privacy stories, three setups. After running all three on production sites for a year, here's what holds up.
Read → -
Send WhatsApp from a WordPress form
WhatsApp notifications on form submission are coming in Core Forms 4.1. Here's how to do it today via webhook + Meta Cloud API, and the gotchas.
Read → -
FluentCRM vs HubSpot vs Mailchimp for forms
Three CRMs, three pricing models, three ways form leads land. After running all three on client sites, here's the actual decision matrix.
Read → -
From Google Sheets to Airtable for forms
Google Sheets is the lazy default for form submissions. After a year of clients hitting its limits, I moved everything to Airtable. Here's why.
Read → -
A fast Mailchimp signup form for WordPress
Mailchimp's official embed code is 90 KB on a fresh page. Here's how to wire a Mailchimp signup form that's 4 KB and still does double opt-in.
Read → -
Use Slack as your contact form inbox
Form submissions in your team's Slack channel beat email by a wide margin. Here's how to wire it up and what message format actually works.
Read → -
Send form submissions to Notion in 3 min
Pipe leads, bug reports, and feedback into a Notion database with field mapping. The full setup, with the screenshots and the gotchas.
Read → -
Conditional form fields without drag-and-drop
How to build show/hide field logic in WordPress forms using HTML data attributes. No builder, no logic graph, no plugin upsell.
Read → -
Stop the forms-plugin stylesheet bloat
Most forms plugins force-load 30-100 KB of CSS on every page, whether the page has a form or not. Here's the audit, and the fix.
Read → -
The honest case for AJAX form submission
AJAX submission is the default in every modern forms plugin. But should it be? When it helps, when it hurts, and how to switch modes.
Read → -
Load a WordPress form without 200 KB of JS
A breakdown of what's in a typical forms plugin's frontend bundle, and how to cut it without losing anything important.
Read → -
Your contact form doesn't need a builder
After 15 years of building forms, I stopped using drag-and-drop builders. Here's the math on what you actually lose, and what you get back.
Read →
Stop reading. Ship a form.
All these notes are from running Core Forms on real client sites. Use code
CFLAUNCH for 20% off either plan.