Re:Maily – Contact Form Builder with Conditional Fields & Entries
Re:Maily – Contact Form Builder with Conditional Fields & Entries

Re:Maily – Contact Form Builder with Conditional Fields & Entries

0/5 (0 ratings) — active installs Updated Nov 10, 2026
The form editor: plain HTML with a chip for each field, the field buttons above and the form's fields beside it.

The form editor: plain HTML with a chip for each field, the field buttons above and the form's fields beside it.

🧪 Try it in WordPress Playground · 📖 Documentation · 💬 Ideas or bugs? Tell us

Your form is ready before your coffee gets cold. Drag fields into it, click one to set it up, and see the form with your own theme’s look before you save. Every message is mailed to you and kept in Entries too, so a mail that goes astray doesn’t cost you a customer.

Make the form your site actually needs:

  • A contact form with a department picker that sends each message to the right person.
  • A booking request where guests add themselves row by row.
  • A quote form that asks the extra questions only when they apply.
  • An order form that takes the payment with Stripe or PayPal before the message goes.

Spam stays out on its own, with checks your visitors never see; a captcha is there when you want one. The form looks right in any theme, and a theme can restyle every part of it.

Moving from Contact Form 7? Re:Maily imports your forms and keeps their shortcodes working, so your pages don’t change.

Everything here is free, with no Pro version and nothing locked. Add-ons bring extras for jobs only some sites have, such as bookings into Google Calendar, a price calculator or Telegram alerts.

✍️ An editor that stays out of the way

  • Plain HTML with a chip for each field. Drag fields in, drag chips around, double-click one to remove it.
  • Click a chip to set the field up in the sidebar: its type, options, limits, style, classes and attributes.
  • Preview: the unsaved form with your theme’s styles, updated as you type. Try the fields there, and use a field’s gear to edit it.
  • A tip with an example for the field you picked, at the bottom of the editor.
  • Describe your form (WordPress 7.0+ with an AI service connected): say what you need and the site’s AI writes the form. One click undoes it.
  • Save as draft, duplicate, and a Beautify button for the markup. Right-click a chip to duplicate the field or remove it.
  • CSS and JavaScript tabs for each form: selector stands for the form, so its styles reach no other form.

🧩 19 field types

  • Text, email, URL, phone, number, date and textarea.
  • Phone masks: one country’s format, your own, or a list of countries visitors pick from. The number formats itself as they type.
  • Select, checkboxes and radio buttons. Checkboxes can allow one at a time.
  • Country, a list of countries, all or the ones you choose.
  • Acceptance, a quiz against bots, file upload and hidden values.
  • Submit, as a button or a link.
  • Output, a live mirror of what someone types in another field (“Thanks, Olga!”).
  • Count, the characters typed in another field (“120 characters left”).
  • Show a field’s settings in your text, so it never goes out of date: “up to 10 MB”, “JPG, PNG, PDF”, or a live “120 characters left” as visitors type. Click or drag it in from the field’s settings.
  • Stripe and PayPal payments: visitors pay in the form before their message goes. A set amount, or one taken from a field such as a select of plans.
  • Every field can be required and get its own classes, ID, attributes and style, and a browser autofill hint picked from a list (first name, city…).
  • A field can start with a value from the link (?product=pro), a shortcode attribute, a custom field of the page or the logged-in user.

🔀 Conditions

Select some code, right-click and make it a group. Show or hide the group depending on what visitors pick or type: is, is not, contains, is empty, greater than and more, with all or any of the rules. Groups can be nested. Fields in a hidden group aren’t checked or sent, and the server checks the same rules again. Turn on repeating for a group and visitors add as many rows of it as they need, such as guests or products; the mail gets them as a table.

✉️ Mail

  • Two mails per form: one to you, one optional copy for the sender.
  • Mail tags such as [your_name], option labels or raw values, and blocks that show only when their group does.
  • Let visitors pick who gets the mail: give a select’s options addresses (“[email protected] : Sales”) and put its tag in To. The addresses never show in the page’s code.
  • Special tags for the site, the page, the visitor and the date, and the visit’s campaign: [_utm_source], [_gclid] and the like.
  • HTML or plain text, and uploaded files as attachments.
  • The Mail tab points out unknown tags and addresses that won’t work.

🗄️ Entries

  • Every message is saved in Contact Form Entries, even when the mail fails.
  • Unread ones stand out. Filter by form and export a CSV.
  • Each message keeps the campaign that brought the visitor (utm_source, utm_campaign, gclid, fbclid, yclid…), for webhooks too.
  • WordPress’s personal data export and erase tools find them, and a suggested text for your privacy policy is ready in Settings Privacy.
  • The visitor’s IP is saved shortened by default; save it whole, or not at all, in Settings Entries.
  • Delete them after a number of days, or turn saving off for a form.

💳 Payments

  • A Payment field: visitors pick Stripe or PayPal and pay inside the form before their message goes.
  • A set amount, or one taken from a field: a select of plans, a number, checkboxes that add up.
  • The amount is worked out again on your server, and each payment is checked with Stripe or PayPal before the mail goes. One payment sends one message.
  • The payment shows in the mail and in Entries. Test keys and PayPal’s sandbox work for trying it out.
  • No fees from Re:Maily: you paste your own keys in Settings Payments.

🛡️ Spam

  • On every form, without bothering anyone: a hidden trap for bots (honeypot), a minimum time to fill the form, a limit per visitor and your Disallowed Comment Keys (Settings Discussion).
  • Cloudflare Turnstile, hCaptcha, Google reCAPTCHA v3 and Yandex SmartCaptcha: save their keys once and they run on every form, alone or together. A form can skip them. They go before the send button, or wherever you drop the Captcha chip. reCAPTCHA’s badge can be hidden.
  • Check messages with Akismet.

🎨 Made for themes

  • Each field and the response box are templates your theme can override, or add styles to, from its own remaily/ folder.
  • The default look uses CSS variables, and one setting or filter turns it off.
  • Hooks for every step, and an API to add field types and chips of your own to the editor.
  • Right-to-left languages: forms, the editor and the settings read the right way round in Arabic, Hebrew or Persian.

⚡ Lightweight

  • One script of 15 KB (5 KB gzipped) and about 15 KB of styles, only on pages that show a form. No jQuery.
  • Payment and captcha scripts load only when a form needs them; Stripe’s or PayPal’s only once a visitor pays.
  • Forms still work with JavaScript turned off.
  • The whole plugin is a download of about 620 KB, most of it the form editor, which loads only in the admin.

🔒 Private and safe

  • GDPR in mind: the visitor’s IP is saved shortened by default, or whole, or not at all.
  • Messages work with WordPress’s privacy tools: a visitor can get a copy or have them erased.
  • Delete entries after a number of days, or don’t save them for a form.
  • A suggested text for your privacy policy, in Settings Privacy.
  • Uploads are images, audio, video, PDF or plain text only, their real type checked, kept in a folder the web can’t open and deleted once mailed.
  • Email addresses and phone numbers in a form’s options stay off the page, so bots can’t collect them.
  • Webhooks are set by administrators only and never reach your own network.
  • Outside services (captchas, Akismet, webhooks, Stripe, PayPal) stay off until you turn them on.

📍 Place it anywhere

The Re:Maily Contact Form block, Elementor widget, WPBakery element or classic widget, or the [remaily id=”…”] shortcode.

🚚 Move in and out

  • Import your Contact Form 7 forms with their fields, mails and messages. Mail tags stay the same, and old [contact-form-7] shortcodes keep working once CF7 is off.
  • Export every form to one file and import it on another site (Settings Export & import).
  • Copy a single form’s code to another site from its Advanced tab.

🧪 Safe to test

Test mode checks the fields and sends nothing; “Don’t send mail” still saves entries. Turn them on per form, or for the whole site with REMAILY_TEST_MODE and REMAILY_DISABLE_MAIL in wp-config.php.

🧰 Add-ons, for when your site needs more

Re:Maily does all of the above on its own. Add-ons are separate plugins for jobs only some sites have; Contact Form Add-ons lists them. A few of the ways people use them:

  • A salon, barber or consultant taking bookings. Bookings & Time Slots shows only the free times, and each booking lands in your Google Calendar. Nobody gets the same hour twice.
  • A renovation quote or a price list. Calculator works out the total as visitors pick the options, shows or hides parts of the form on it, and the Payment field charges that total.
  • A sale or a newsletter promo. Coupons adds a promo code field: SALE10 takes 10% off the payment or the calculated total, with an end date and a limit of uses. The codes never show in the page.
  • A team that answers from the phone. Telegram puts each request in your chat or your team’s group the moment it’s sent. WhatsApp answers the customer on WhatsApp right away and sends you the request too.
  • Requests the whole team works through. Google Sheets adds each message as a row of your spreadsheet, a column per field.
  • Knowing which ads bring requests. Analytics counts each message and payment in Google Analytics, Yandex Metrica or the Meta Pixel, with its value, and shows the field where visitors give up on a form.
  • Growing a mailing list. Mailchimp, MailerLite, Kit (ConvertKit) or Brevo adds the people who write to you to your list, with double opt-in, their details and your tags.
  • Taking payments where Stripe and PayPal don’t fit. Square and Authorize.Net take cards in the US, UK and Europe, Mercado Pago cards, Pix and boleto in Latin America, YooKassa and Robokassa cards and SBP in Russia, and Razorpay cards, UPI and wallets in India.
  • Support for themes, plugins or courses you sell. ThemeForest, Gumroad, Lemon Squeezy, Easy Digital Downloads, Paddle and Freemius check the buyer’s purchase code in the form, so only buyers reach your support. Suggested answers shows the articles from your docs that may answer a question while it’s typed, and Help Scout turns each message into a conversation in your help desk.
  • Reviews and feedback. The free Star rating add-on adds stars visitors click, with your own icon if you like.

🔌 Also

  • Webhooks: each message posted as JSON to Zapier, Make, n8n or your own code.
  • “Logged-in users only” per form.
  • Abilities for AI assistants (WordPress 6.9+): list, read, create and update forms, and read entries.

External services

Re:Maily connects to these services only when you turn them on:

  • Cloudflare Turnstile, when a form uses it: the widget loads from challenges.cloudflare.com and each answer is checked there. Terms, privacy policy.
  • hCaptcha, when a form uses it: the widget loads from js.hcaptcha.com and each answer is checked at api.hcaptcha.com. Terms, privacy policy.
  • Google reCAPTCHA v3, when a form uses it: the script loads from google.com and each token is checked there. Terms, privacy policy.
  • Yandex SmartCaptcha, when a form uses it: the widget loads from smartcaptcha.yandexcloud.net and each answer is checked there, with the visitor’s IP address. Terms, privacy policy.
  • Akismet, when you turn it on in Settings Spam: the sender’s name, email, message, IP address and browser are sent to Akismet to be checked. Privacy policy.
  • Webhooks, when you add addresses to a form: each message is sent to the addresses you entered.
  • Stripe, when a form’s Payment field offers Stripe and the visitor picks it: once the visitor sends the form, the payment’s amount, currency, description and the visitor’s email are sent to api.stripe.com, the card fields load from js.stripe.com, and the payment is checked there before the message goes. Terms, privacy policy.
  • PayPal, when a form’s Payment field offers PayPal and the visitor picks it: once the visitor sends the form, the payment’s amount, currency and description are sent to api-m.paypal.com, the buttons load from paypal.com, and the payment is checked and taken there before the message goes. Terms, privacy policy.

Credits

  • Icons: Lucide, ISC license (assets/icons/lucide/LICENSE).