How to Troubleshoot Email Sending (SMTP, Spam, Dynamic Recipients)

Learn how to troubleshoot email delivery issues in JetFormBuilder, check form submissions, configure dynamic recipients, and display the correct field labels and values in emails.

If a JetFormBuilder form is submitted successfully but the email is not delivered, arrives in the spam folder, or contains unexpected recipient or field data, check the form’s post submit actions and email configuration first. Then verify WordPress email delivery and the dynamic data used in the email.

Table of Contents:

Check the “Send Email” Action

First, check whether the form has the “Send Email” Post Submit Action added, and check the following settings:

send email pop-up
  • MAIL TO — make sure the recipient is configured correctly;
  • FROM FIELD — if the recipient or sender is taken from a submitted field, make sure the required form field is selected;
  • REPLY TO — check whether the expected email address is specified;
  • SUBJECT — make sure the subject contains the expected text or macros;
  • CONTENT — check the email body and any macros used in it.

JetFormBuilder provides several options for the MAIL TO field, including the administrator email, an email taken from a submitted form field, and a custom email address. CC and BCC recipients can be configured separately when needed.

Check the recipient first

If the form is submitted but the expected recipient does not receive an email, verify the value that is passed to MAIL TO.

For example, when using “Email from submitted post field”, make sure that:

  • the form contains an “Email” field;
  • the correct field is selected in the FROM FIELD option;
  • the submitted value is a valid email address.
from field in the edit send email pop-up

If the recipient is generated dynamically, continue with the Configure dynamic email recipients section.

Configure dynamic email recipients

A recipient does not always have to be a static email address. You can pass a dynamically generated email to the “Send Email” action.

One approach is to use a Hidden Field as a data bridge. For example, JetFormBuilder’s “Send Email” tutorial demonstrates retrieving the current post author’s email with a “JetEngine Data” shortcode, storing it in a Hidden Field, and then using that field as the custom email recipient.

dynamic email hidden field

The general flow is:

Dynamic data > Hidden Field > Send Email > Email from submitted field

This pattern can be useful when the recipient depends on the post, user, or other dynamic data available when the form is submitted. 

Dynamic recipient from user data

If the recipient email belongs to a user, retrieve the required user email dynamically and pass the result to the “Send Email” action. 

For example, the recipient can be obtained from the current post author’s user data using a “JetEngine Data” shortcode. The generated value is then placed into a Hidden Field and passed to “Email from submitted field” in the “Send email” action.

hidden field selected in the from field

Dynamic recipient from CPT/CCT data and relations

If the recipient email is stored in a custom field of a post or Custom Content Type item, retrieve that value dynamically and pass it to the “Send Email” action.

Before testing the form, make sure that: 

  • the source object can be resolved when the form is submitted;
  • the email field contains a valid email address;
  • the dynamic value is actually passed to the field used as the recipient.

If the dynamic value is empty, the “Send Email” action cannot send the message to the expected recipient.

When the recipient is determined through a relation, first make sure that the required repeater item and email value can be resolved before the “Send Email” action runs.

If the email is not available directly in the MAIL TO settings, use a field or dynamic-value mechanism to pass the resolved email address to the “Send Email” action.

NOTE

The exact dynamic-value configuration depends on where the recipient email is stored and how the related data is retrieved. Test the resulting recipient value before troubleshooting email delivery itself.

Check Form Records

If the form appears to submit successfully but the email is missing, check whether the submission was actually saved. 

The “Save Form Record” Post Submit Action stores submitted form data in the database and makes it available on the Form Records page.

Add or check the “Save Form Record” action in the form’s Post Submit Actions.

After submitting the form, open the corresponding form record and verify:

  • whether the submission was saved;
  • which values were submitted;
  • whether the email field contains the expected values.

This helps distinguish between a form submission problem and an email delivery problem. 

If the record contains the expected data, but the email is not received, continue troubleshooting the email delivery configuration.

form record saved

Check SMTP and WordPress Email Delivery

JetFormBuilder uses the WordPress email-sending mechanism for the “Send Email” action. If the form is submitted and the expected data is present in Form Records, but no message arrives, check the site’s email delivery configuration.

SMTP

Configure an SMTP service or SMTP plugin if your hosting environment does not reliably deliver WordPress emails.

After configuring SMTP, submit the form again and check whether the message is delivered.

SPF and DKIM

If emails are sent but are rejected or placed in spam, check the sender domain’s email authentication records.

Make sure that the required SPF and DKIM records are configured for the email service used to send messages.

Spam folder

Always check the recipient’s spam or junk folder before changing the form configuration. 

If the email is consistently delivered to spam, check the sender address, domain authentication, and SMTP configuration.

Hosting and optimization plugins

Some hosting environments or optimization/security configurations can affect WordPress email processing.

If the form works correctly but email delivery fails, temporarily check whether server-level email restrictions, caching, optimization, or security plugins affect the result.

Display Labels Instead of Field Values

By default, a form field can submit its stored value rather than the label displayed to the user. For example, a “Select” or “Checkbox” option may have:

Label: Premium plan

Value: premium

If the email displayed “premium” instead of “Premium” plan, use the appropriate macro to retrieve the label.

JetFormBuilder provides macros for working with field values and post/term data in emails. For fields that use a JetEngine Glossary, the official macro for retrieving the glossary label is:

%field_name|get_label_by_glossary(N)%

Replace “field_name” with the actual form field name and “N” with the glossary ID.

This is especially useful for Select, Radio, and Checkbox fields whose stored values differ from their user-facing labels.

glossary macro in the edit send email pop-up

Use Macros to Add Dynamic Data to Emails

Macros allow you to insert submitted form data and dynamically generated values into the Subject and Content fields of the “Send Email” action.

For example, %field-name% returns the value submitted in the corresponding form field.

JetFormBuilder also provides macros for specific data types. To see the available macros while configuring the email, use the “wrench” icon near the Content field.

Also, check our How to Use Macros in Email Formatting guide to see the list of available macros.

wrench icon next to the content field

Display repeater data

Macros can also be used to display data submitted through a Repeater Field.

JetFormBuilder provides a dedicated example for formatting repeater data in the “Send Email” action.

When troubleshooting a repeater-based email, first verify that the repeater values are correctly submitted in the form record. Then check the macro used to format those values in the email.

Check our How to Customize the Output Repeater in the Send Email Action guide to find out more.

Troubleshooting Checklist

If a JetFormBuilder email is not received, check the following in order:

  • The form contains the “Send Email” Post Submit Action.
  • The MAIL TO option points to the expected recipient.
  • Any dynamic recipient field returns a valid email address.
  • The FROM EMAIL and REPLY TO settings are configured correctly.
  • The form submission appears in Form Records.
  • The submitted email and dynamic values are correct in the form record. 
  • The recipient’s spam/junk folder has been checked.
  • SMTP is configured if required by the hosting environment.
  • SPF and DKIM records are configured for the sending domain.
  • Hosting restrictions or optimization/security plugins are not blocking email delivery.
  • Email macros return the expected values.
  • Glossary fields use the correct macro when labels need to be displayed instead of stored values.

FAQ

Why is my JetFormBuilder form submitted but no email is received?

First, check Form Records to confirm that the submission was saved and that the submitted data is correct. Then check the “Send Email” recipient and your WordPress/SMTP email delivery configuration.

Why does my email contain the field value instead of its label?

The email may be displaying the field’s stored value. If the field uses a JetEngine Glossary, use the %field_name|get_label_by_glossary(N)% macro to retrieve the user-facing label, where “N” is the ID of the glossary.

How can I send an email to a dynamically determined recipient?

Retrieve the required email address dynamically and pass it to the “Send Email” action. For example, a “JetEngine Data” shortcode can retrieve a post author’s email, which can then be stored in a Hidden Field and used as the Custom email recipient.

Where can I check the data submitted through the form?

Use the “Save Form Record” Post Submit Action and check the corresponding entry on the Form Records page.

How can I add submitted form values to an email?

Use JetFormBuilder macros such as %field-name% in the “Send Email” action’s SUBJECT and CONTENT fields.

That’s all about ways of troubleshooting JetFormBuilder email sending for WordPress.