{"id":318365,"date":"2026-05-29T18:26:17","date_gmt":"2026-05-29T18:26:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/trumailo-email-verification\/"},"modified":"2026-05-29T18:53:09","modified_gmt":"2026-05-29T18:53:09","slug":"trumailo","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/trumailo\/","author":17095537,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Trumailo \u2014 Email Verification","header_author":"Trumailo","header_description":"Real-time email verification for forms, newsletters, registration, and checkout. Blocks invalid, disposable, and risky email addresses before they enter your list.","assets_banners_color":"","last_updated":"2026-05-29 18:53:09","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/trumailo.com\/wordpress","header_author_uri":"https:\/\/trumailo.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":35,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"rexotech1","date":"2026-05-29 18:25:50"},"1.0.1":{"tag":"1.0.1","author":"rexotech1","date":"2026-05-29 18:53:09"}},"upgrade_notice":{"1.0.1":"<p>Cosmetic-only update \u2014 plugin icon. No functional changes.<\/p>","1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3554071,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3554071,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Dashboard with verification counters and 14-day trend","2":"Settings \u2014 API key, blocking policy, fail-open","3":"Integrations \u2014 detected plugins with per-integration toggle","4":"Inline front-end validation badge"}},"plugin_section":[],"plugin_tags":[1152,18971,1033,286,130711],"plugin_category":[45],"plugin_contributors":[265007],"plugin_business_model":[],"class_list":["post-318365","plugin","type-plugin","status-publish","hentry","plugin_tags-contact-form-7","plugin_tags-email-verification","plugin_tags-mailpoet","plugin_tags-woocommerce","plugin_tags-wpforms","plugin_category-ecommerce","plugin_contributors-rexotech1","plugin_committers-rexotech1"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/trumailo\/assets\/icon-128x128.png?rev=3554071","icon_2x":"https:\/\/ps.w.org\/trumailo\/assets\/icon-256x256.png?rev=3554071","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Trumailo<\/strong> verifies every email address submitted to your WordPress site \u2014 in real time, with one drop-in plugin \u2014 and stops fake, throwaway, mistyped, and risky addresses <em>before<\/em> they touch your CRM, mailing list, or order pipeline.<\/p>\n\n<h4>Why bother<\/h4>\n\n<ul>\n<li>Spam signups inflate your list and tank deliverability.<\/li>\n<li>Disposable inboxes (Mailinator, 10MinuteMail, etc.) never convert.<\/li>\n<li>Typo'd emails (<code>gmial.com<\/code>, <code>yhaoo.com<\/code>) are lost forever.<\/li>\n<li>Role addresses (<code>admin@<\/code>, <code>info@<\/code>) hurt sender reputation.<\/li>\n<\/ul>\n\n<p>Trumailo catches all of those at the form, with a friendly inline message.<\/p>\n\n<h4>Works out of the box with<\/h4>\n\n<ul>\n<li>WordPress core (registration, comments, REST users)<\/li>\n<li>WooCommerce (classic checkout, block checkout, registration)<\/li>\n<li>Easy Digital Downloads<\/li>\n<li>Contact Form 7<\/li>\n<li>WPForms<\/li>\n<li>Gravity Forms<\/li>\n<li>Ninja Forms<\/li>\n<li>Fluent Forms<\/li>\n<li>Elementor Pro Forms<\/li>\n<li>Forminator<\/li>\n<li>Formidable Forms<\/li>\n<li>MailPoet<\/li>\n<li>FluentCRM<\/li>\n<li>Mailchimp for WordPress<\/li>\n<li>Newsletter (by Stefano Lissa)<\/li>\n<li>Groundhogg<\/li>\n<li>BuddyPress<\/li>\n<li>Ultimate Member<\/li>\n<li>MemberPress<\/li>\n<li>LearnDash<\/li>\n<\/ul>\n\n<p>No configuration per integration \u2014 add your API key, the plugin detects what's installed and starts verifying.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Server-side blocking<\/strong> \u2014 survives JavaScript-disabled bots; the rejection happens during form validation.<\/li>\n<li><strong>Real-time inline validation<\/strong> \u2014 debounced typing check with \"did you mean\" suggestions and accessible status badges.<\/li>\n<li><strong>Per-status policy<\/strong> \u2014 choose what to block: invalid, disposable, risky, role addresses, or anything below a quality threshold.<\/li>\n<li><strong>Whitelist \/ blacklist<\/strong> \u2014 skip the API for trusted internal domains; always reject specific bad ones.<\/li>\n<li><strong>Cache<\/strong> \u2014 repeat verifications served instantly from local transients (configurable TTL).<\/li>\n<li><strong>Fail-open by default<\/strong> \u2014 if the API is unreachable, submissions go through (configurable to fail-closed).<\/li>\n<li><strong>Verification log<\/strong> \u2014 opt-in, with optional email-hashing for GDPR compliance and configurable retention.<\/li>\n<li><strong>Dashboard<\/strong> \u2014 counts of allowed, blocked, cached, and per-day trend.<\/li>\n<li><strong>REST endpoint<\/strong> \u2014 for custom front-ends and third-party integrations (<code>\/wp-json\/trumailo\/v1\/verify<\/code>).<\/li>\n<li><strong>Multisite-aware<\/strong>, <strong>i18n-ready<\/strong>, <strong>GPL-2.0<\/strong>.<\/li>\n<\/ul>\n\n<h4>Getting started<\/h4>\n\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Get an API key at https:\/\/trumailo.com.<\/li>\n<li>Settings \u2192 Trumailo \u2192 paste the key.<\/li>\n<li>Done \u2014 every supported form on your site is now verifying emails.<\/li>\n<\/ol>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the Trumailo email-verification API to determine whether each submitted email address is deliverable. The API is provided by Trumailo (https:\/\/trumailo.com), the same vendor that publishes this plugin.<\/p>\n\n<p><strong>What the service is and what it is used for<\/strong><\/p>\n\n<p>Trumailo is a real-time email-verification API. It checks an address for syntactically-valid format, MX records, disposable \/ role \/ catch-all signals, and (where the recipient mail server cooperates) an SMTP-level deliverability probe. The plugin uses it so your site can reject invalid, disposable, and risky addresses before they enter your forms, lists, or checkout.<\/p>\n\n<p><strong>What data is sent and when<\/strong><\/p>\n\n<ul>\n<li>The plugin sends the <strong>email address being verified<\/strong> to <code>https:\/\/api.trumailo.com\/v1\/verify<\/code> over HTTPS, together with your API key in the <code>Authorization: Bearer<\/code> header. This happens every time a supported form is submitted with a value the plugin hasn't already cached.<\/li>\n<li>The plugin sends a lightweight request to <code>https:\/\/api.trumailo.com\/v1\/account<\/code> to read the calling key's remaining monthly credits. This is used to populate the credits gauge on the plugin dashboard and is polled at most every 5 minutes.<\/li>\n<li>No other personal data, form fields, page URLs, or visitor identifiers are transmitted.<\/li>\n<li>Verification results are cached locally in WordPress transients to minimise repeat API calls; you can configure the TTL and toggle full-email vs hashed-email storage in the plugin settings.<\/li>\n<\/ul>\n\n<p><strong>Service provider, terms, and privacy<\/strong><\/p>\n\n<ul>\n<li>Service: <strong>Trumailo<\/strong> \u2014 https:\/\/trumailo.com<\/li>\n<li>Terms of Service: https:\/\/trumailo.com\/terms<\/li>\n<li>Privacy Policy: https:\/\/trumailo.com\/privacy<\/li>\n<\/ul>\n\n<p>Use of this plugin requires that you (the site owner) agree to Trumailo's Terms of Service and Privacy Policy linked above. You should disclose Trumailo as a sub-processor in your own site's privacy notice if you operate in a jurisdiction that requires such disclosure.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>trumailo<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate it through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Trumailo \u2192 Settings<\/strong>, paste your API key, save.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20without%20an%20api%20key%3F\"><h3>Does this work without an API key?<\/h3><\/dt>\n<dd><p>The plugin loads, but actual verification is skipped. You need a free or paid key from trumailo.com.<\/p><\/dd>\n<dt id=\"will%20this%20slow%20my%20forms%20down%3F\"><h3>Will this slow my forms down?<\/h3><\/dt>\n<dd><p>A single verification call typically completes in 200\u2013800ms (cached calls are sub-millisecond). Choose <strong>Fail-open<\/strong> in settings if you'd rather let a submission through than ever wait on the API.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20custom%20or%20unsupported%20form%20plugins%3F\"><h3>Does it work with custom or unsupported form plugins?<\/h3><\/dt>\n<dd><p>Yes \u2014 use the <code>do_action( 'trumailo_verify', $email )<\/code> hook, the REST endpoint, or wire your own integration on the <code>trumailo_verdict<\/code> filter.<\/p><\/dd>\n<dt id=\"is%20it%20gdpr%20safe%3F\"><h3>Is it GDPR safe?<\/h3><\/dt>\n<dd><p>By default the plugin stores only an MD5 hash of each address in the log table. Enable \"Store full emails\" only if you need it. Logs auto-purge after the retention window.<\/p><\/dd>\n<dt id=\"what%20happens%20at%20the%20rate%20limit%3F\"><h3>What happens at the rate limit?<\/h3><\/dt>\n<dd><p>Trumailo's API returns HTTP 429 when you exceed your plan's per-minute limit. The plugin retries with backoff; if all retries fail it falls back to your fail-open \/ fail-closed setting.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added plugin icon (visible on the WordPress.org plugin directory listing and search results).<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release. 20 integrations, inline AJAX validation, dashboard, log, whitelist\/blacklist, fail-open.<\/li>\n<\/ul>","raw_excerpt":"Real-time email verification for WordPress. Block invalid, disposable, and risky emails before they enter your forms, lists, or checkout.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/318365","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=318365"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/rexotech1"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=318365"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=318365"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=318365"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=318365"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=318365"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=318365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}