How to Send a Conditional Email in WordPress
Every submission lands in the same inbox. A sales lead, a support ticket, and a billing question all arrive looking identical, and someone has to open each one just to figure out who should actually be answering it. On a good day that’s a few minutes of manual sorting. On a busy day, it’s a sales inquiry sitting unread in a support queue for two days, or a billing dispute getting forwarded three times before it reaches the person who can fix it.
The fix isn’t a better inbox. It’s getting the message to the right person automatically, the moment the form is submitted, based on what the visitor actually told you.
That’s what conditional email routing does. You build one form, but the notification behind it changes depending on what someone selects: a dropdown, a set of radio buttons, a list of checkboxes. Pick “Support” and the support team gets the email. Pick “Billing” and it goes somewhere else entirely. This guide walks through the exact setup, how it holds up once you’re routing to four or five destinations instead of two, and the handful of ways it silently breaks (and how to fix them).
What you’ll need
To follow along, you’ll need Ninja Forms (free) and the Conditional Logic add-on (included with memberships or available as a standalone add-on).
If you haven’t used Conditional Logic before, our guide to conditional logic in WordPress forms is a good primer on the basics before diving into the email-routing use case below.
How do you send a conditional email in WordPress?
You send a conditional email in WordPress by pairing one option on a list-type field (a dropdown, radio button group, or checkbox list) with a separate Email action for each destination, then using Ninja Forms’ Conditional Logic add-on to tell each action to fire only when its matching option is selected. The visitor never sees any of this. They see one form and one submit button.
Behind the scenes, whichever option they pick triggers only the Email action built for that destination. A Sales inquiry never lands in the Support inbox, because the Support action’s condition was never met.
Conditional Logic can trigger more than email notifications alone (success messages, redirects, and other actions all support the same conditions). If you’re looking for that broader picture, our guide to conditional actions in WordPress covers the full range. This one focuses specifically on getting submissions into the right inbox.
Route one department’s submissions automatically
Start with the simplest version: one list field, one destination, one rule. Once this pattern clicks, adding more destinations is just repetition.
- Build your form with a list-type field the visitor will use to route themselves, such as a Select List field labeled “What is this about?” with options like Sales, Support, and Billing. Note the exact values you set for each option, not just the labels. This matters later.
- Click into the Emails & Actions tab.
- Click the blue plus icon to open the Actions window and add an Email action for your first destination. Fill in its To, Subject, and Message fields the same way you would for any notification email.

- Click back into the action you just created to reopen its settings, then expand the Advanced accordion.
- A separate Conditional Logic accordion appears just below Advanced. Expand it.
- Leave the “Process This” dropdown as-is, then set the condition row: choose your routing field, leave the comparator on “Has Selected,” and pick the option for this destination.
- Click the checkmark to close the action’s settings panel.

- Click Publish in the top right of the builder. This step is easy to skip, and it matters: the checkmark on an individual action only stages the change in your browser. Nothing saves to your site until you publish.
That’s the whole mechanic. One list option, one Email action, one Conditional Logic rule tying them together. The visitor’s side of it stays simple: they just see a normal dropdown field on your form.

Give Ninja Forms a try today!
Ninja Forms is free! Optional premium features available with any membership.
Scale to more departments without a tangle of rules
The pattern above doesn’t change as you add destinations. Whether you’re routing to three departments or seven, it’s still one Email action plus one Conditional Logic rule per destination, added independently. There’s no separate “advanced mode” to learn and no built-in routing table that maps many recipients from a single action. You repeat steps three through eight for each destination.
A small business might route by department: Sales, Support, Billing. An agency managing several client sites might route by which client the inquiry is about. A nonprofit might route by program area. The mechanism is identical in every case; only the option labels change.

If two options should reach the same person, you don’t need two separate actions. Inside a Conditional Logic rule, click the plus icon to add a second condition row, then set the “When” dropdown to “Any.” Now the action fires if either option is selected. This is useful when, say, both “New Client Onboarding” and “Renewal” should land with the same account manager.
Keep one action unconditioned. On the demo form used for this guide, an “Admin Email” action has no Conditional Logic rule at all, so it fires on every submission regardless of what the visitor picked. That’s not an oversight. It’s the recommended pattern: a shared catch-all notification that always goes out, sitting alongside your conditioned department routes, so nothing falls through if a submission doesn’t match any specific rule.
You can also combine conditions across different fields on the same action. Set the “When” dropdown to “All” instead of “Any,” add a second condition row referencing a different field, and both have to be true for that action to fire. That’s how you’d build something like “route to the on-call manager only when department equals Support and urgency equals Rush,” using two fields together instead of one.
Why isn’t my conditional email firing?
Most failures come down to one of a few things: the add-on isn’t active, an option’s stored value changed after the rule was built, or the condition points at the wrong field entirely. Each is easy to fix once you know where to look.
Confirm Conditional Logic is active, not just installed
If you open an Email action’s settings and there’s no Conditional Logic accordion at all, this is almost always why. The add-on can be installed but sitting inactive, which hides the entire feature with no error message anywhere in the builder. Check your plugin list and activate it if it isn’t already.
Watch for the silent trap: editing an option’s value after the rule exists
A Conditional Logic rule for a list field stores the option’s underlying value, not just its visible label. If you go back later and edit that option’s value in the field’s Options table, perhaps while cleaning up a messy import, the label a visitor sees can stay exactly the same while the rule quietly stops matching it.
Nothing looks wrong on the front end. The dropdown still shows “Sales.” The form still submits successfully. But the Sales routing action stops firing, and only your unconditioned catch-all email goes out. There’s no warning in the builder when this happens.
The fix: whenever you edit an option’s value on a field that already has routing rules built on it, open each affected action’s Conditional Logic accordion and reselect the option in the condition row. This resets the rule to match the option’s current value.

Check that the condition points at the right field
Every form has multiple fields in that condition dropdown, grouped and labeled by name, and it’s a quick misclick to select the wrong one, especially on a longer form. An action whose condition references a field the visitor never actually interacts with the way you expect will effectively never match. Open the action’s Conditional Logic accordion and confirm the field named in the condition row is genuinely the one your routing option lives on.
Keep one unconditioned action as your safety net
A condition that doesn’t match fails silently. No error, no log entry, and the form still submits fine from the visitor’s perspective. That silence is exactly why the unconditioned catch-all action described above is worth keeping even after your routing rules are all working. If a rule ever breaks (a value gets edited, a field gets swapped, a new option gets added and forgotten), the catch-all still lands in an inbox someone is watching.
Start routing submissions to the right inbox
You’ve now got a pattern that scales from one department to as many as you run: a list field the visitor fills out once, one Email action per destination, and a Conditional Logic rule tying each pair together, with a catch-all action watching for anything a rule misses. When a new department comes along, that’s one more option, one more action, one more rule. If you don’t have the add-on yet, grab Conditional Logic and your first routing rule can be live before the next submission comes in.
Try Ninja Forms Today
Always free, with premium features available through our memberships.
Can conditional logic be applied to the “Collect Payments” action?
Yes it can!
Hi. Will NinjaForms conditional logic same as the above scenario works if the field value is change from the submission list edit screen and not from the frontend?
Hi,
Changes made in the back-end would not affect the conditional logic. Conditional Logic and emails are process at the time of the initial submission.
I hope that this helps to guide you in the right direction.
Best Regards,
Curtis
How do I use conditional logic to send reminder email using a formula for date.
Hi,
Hello! What you’re describing is something that would require custom modification of the plugin to achieve. Unfortunately, custom modification of the form builder is outside the scope of support that we are able to offer.
If you need assistance with custom development, we have a partnership with the folks at Codeable.io. You can reach out to them here: https://codeable.io/partners/ninja-forms/?ref=nVHqbÂ
Best regards,
Curtis
Good morning,
could I with Conditional Logic send email replies in different languages to the one who submitted the form according to the language he has declared to speak?
Thanks,
Stefano
Sure could! Just make each email action in its own language, then fire only the action in the language that the user’s chosen from a field. e.g. Action 1 = French, Action 2 = English, Action 3 = German; user selects German, only Action 3 fires.
Cheers,
Quay
Hi Guys,
There is one limitation of the conditional logic feature on emails.
You can only apply one set of rules to each email, and this isn’t always enough. It would be good if you could add multiple layers of conditional logic in the same way that you can with the form fields.
For example, we have a form with an optional multi-select option containing four tick boxes. We want to fire email 1 if they tick no boxes, email 2 if they tick any of the first 3 tick boxes but not box 4, and email 3 if they ticked box 4 (they may have also ticked any of the first 3 options).
It would be really good if this could be incorporated into a future release.
Thanks for your thoughts! I’ll get this into a Conditional Logic feature request for our devs to take a look at when they next turn to feature updates for CL.
Cheers,
Quay
Is there any reason why I do not have “conditional logic” feature on my form? I also notice that Advanced feature on the form is not showing up with the same detail as in the Sending Email video at 4:40 mark — https://ninjaforms.com/docs/email/
Regina- hey! Apologies, this post is showing its age. You’ll need the Conditional Logic add-on in order to access conditional options on your form. The Advanced features can be displayed simply by enabling Dev Mode in your plugin settings.
Cheers,
Quay
Hi
Can I perform a condition based on the text value of a field?
I have a single form used in many pages. Each page is for a give UK postcode area.
The form is a sent to the appropriate email address for the postcode location (different people provide a service in different areas).
This generally works well in the people land on the correct page for their area, complete an enquiry and the right person gets it.
It falls over when the user lands on the wrong page for their area and send an enquiry. The wrong person gets the email.
I want to validate the form on submit to check that the postcode they have entered in one of the fields is the correct postcode for that form.
So, we have a form for postcode area B1. Somebody types into that form that their postcode is CV1. I need to let the user know that they are on the wrong form and give them a link to a page where they can search for the correct one (a postcode search page).
Can I achieve this in the form with conditional logic?
Presently I’m having to wait until the form is submitted, its integrates into ActiveCampaign, AC then holds the logic to check the postcode is correct for that form (based on a hidden field with the staff members name in) and if not send them another email saying “hold on, you filled in the wrong form” and ask them to click a link to have another go. Its messy. Would be great to not let them submit the form.
Thanks
It would be great to be able to have conditional content in a single email. For example, if a field is not empty, display a chunk of HTML in the email. I am having an issue with my emails containing labels with empty data because an optional field was not filled out. It would be nice to be able to pretty that up without having to create a bunch of separate emails with duplicate content.
Is it possible to include field value(s) in the subject line of the notification email? This would make it easier for busy recipients to scan email messages and prioritize them without having to open each email.
Hello Kat,
To add field values to the subject line of the Email action, click on the merge tag icon to the right of the subject field. This will bring up a list of merge tags including the form fields. If you need additional assistance, please reach out to our support team, here.
Is it possible to use google recaptcha to prevent bots to send emails?