Casa Mail
Casa Mail is an end-to-end email platform for WordPress sites. It intercepts every wp_mail() call and delivers it through the Casa Mail gateway operated by CodeCasa Studios on the OnlineStoreNotifications infrastructure (api.onlinestorenotifications.com). On top of reliable transactional delivery it adds a full marketing platform, branded webmail mailboxes, and one-click sender-domain authentication, all driven from the WordPress admin. If your site doesn’t send mail reliably today, Casa Mail is the simplest way to start. If you’re already paying for an SMTP plugin plus a separate marketing tool plus a separate webmail provider, Casa Mail consolidates the three so you can run customer email, broadcasts, and inbox replies from one place. What you get Transactional email (every plan, including Free) Every wp_mail() is routed through the Casa Mail gateway with DKIM, SPF, and aligned Return-Path on onlinestorenotifications.com (or your own domain after one-click authentication). Durable retry outbox: if the gateway is briefly unreachable, the payload is persisted and retried automatically with 30s, 2m, 10m backoff. wp_mail() never blocks, never loses a message, never returns false to the caller. Per-tenant inbox at @onlinestorenotifications.com. Replies to your customer emails come back to that inbox; on the Free tier they auto-forward to your contact address. On webmail-enabled plans you can also receive replies on your own domain (e.g. @yourdomain.com). Paginated send log on the Logs page with up to 30 days of history retained (hard-capped at 2,000 rows per WordPress install). The Dashboard surfaces the most recent activity at a glance. Optional default-From override so every site email uses one consistent sender. Sender domain authentication (every plan) Add your own domain in the admin and the plugin prints three DNS records (DKIM, SPF, Return-Path). One-click “Check my domain” verifier. Once verified, customer emails go from @yourdomain.com so Gmail and Outlook show your brand in the From, not “via onlinestorenotifications.com”. Inline plain-English helpers for Cloudflare, GoDaddy, Namecheap, and Google Domains. Cloudflare grey-cloud guidance for replies is built in. Free plan can opt out of domain authentication entirely and send from the shared @onlinestorenotifications.com address with DKIM/SPF/Return-Path already configured on the gateway. Marketing Studio (Growth and higher) Contacts: add manually, import from CSV, or one-click sync your WooCommerce customer base. Segments: saved queries (all contacts, contacts with a specific tag) with a sample-preview before you send. Campaigns: schedule a broadcast to a segment, watch send progress on a per-campaign report (sent, opens, unique-by-contact open + click rate). Composer: full block-based visual editor with heading / paragraph / image / button / divider / spacer / two-columns / raw-HTML blocks, per-block and global style settings, Visual / Source HTML / Wrapper / Preview tabs, desktop + mobile preview, 50-step undo/redo, emoji picker, drag-and-drop images into the WordPress media library, per-tenant saved templates. Personalization tokens: [FIRST_NAME], [LAST_NAME], [FULL_NAME], [EMAIL], [UNSUBSCRIBE_URL]. Suppressions: paginated list with bounce / complaint / unsubscribe filters, manual add, CSV export. Bounces and FBL complaints are fanned out from the gateway automatically so you never have to clean a list by hand. Casa Webmail mailboxes (Growth and higher) Self-hosted branded webmail at webmail.onlinestorenotifications.com. Sign in with @onlinestorenotifications.com from any browser and read and reply to customer replies from a clean inbox. Use your own domain too: point your domain’s MX records at mx.sendemailtoday.io and replies to @yourdomain.com land in the same webmail UI, signed by the platform DKIM. Real Maildir storage on the Casa Mail backbone. No third-party Gmail forwarding. Billing and plan management One-click upgrade from Free to Starter, Growth, Business, or Agency. Stripe Checkout opens in a new tab; the plugin never sees your card details. Paid plans are also available straight from the onboarding wizard, so you can start on the right tier from day one. In-WordPress quota-usage display with an “approaching cap” banner so a busy month doesn’t surprise you mid-send. Stripe-hosted billing portal for change-card, change-plan, view-invoices, cancel. Built-in trust and safety Sender-domain enforcement so a misconfigured WordPress install can never send under someone else’s domain by accident. Gateway-side content review on marketing broadcasts: a separate moderation layer scans campaigns and pauses anything that looks like phishing, brand impersonation, or credential harvesting before it reaches your recipients. The gateway operator reviews flagged content and contacts you with the reason. This protects your sender reputation. Pricing Free: 10,000 transactional emails per month, full quota from day one (no daily ramp), 500/day soft cap. Custom-domain authentication included. No credit card required. Starter (GBP 9/month): 25,000 emails per month, 2,500/day cap. Custom-domain authentication. Growth (GBP 29/month): 100,000 emails per month, Marketing Studio (contacts, segments, campaigns, visual editor, suppressions), 1 branded Casa Webmail mailbox. Business (GBP 79/month): 500,000 emails per month, Marketing Studio, 5 mailboxes. Agency (GBP 199/month): 2,000,000 emails per month, Marketing Studio, 25 mailboxes. Upgrades and downgrades are entirely self-serve from Settings -> Casa Mail -> Billing. Cancellation is one click from the Stripe-hosted portal; you keep service through the end of your billing cycle. How it works (transactional path) pre_wp_mail is hooked at priority 1. Each call is converted to a JSON payload and POSTed to the gateway. If the gateway accepts on the first POST, wp_mail() returns true and the message is durably enqueued upstream. If the gateway is unreachable on the first POST, the payload is written to a durable outbox table ( casamail_outbox) and a cron tick retries with 30s, 2m, 10m backoff. A separate transmit log table ( casamail_sends) records every attempt for visibility on the plugin dashboard. Rows older than 30 days are pruned automatically. Onboarding After activation, an in-WordPress wizard collects: Site name, site URL, contact email address. A 6-digit code emailed by the gateway to confirm the address. The handle to use for your inbox (defaults to a friendly version of your site URL, e.g. acmestore). Plan selection. Five tiers shown side-by-side (Free, Starter, Growth, Business, Agency); pick Free to get started immediately, or pick a paid tier to launch Stripe Checkout in a new tab. Either way your tenant is already provisioned so you can keep onboarding while you complete payment. Where customer emails should come from: the shared Casa Mail address, or your own authenticated domain (with one-click DNS verification). The whole onboarding is one screen with five short steps. No SMTP keys to copy, no DNS console to leave WordPress for. Trademark note This plugin is not affiliated with or endorsed by WooCommerce, Automattic, or any third party. The WooCommerce name appears only as a compatibility note (when WooCommerce is detected, the plugin’s admin menu attaches under it for convenience; otherwise it lands under Settings). External services This plugin transmits data to a third-party SMTP gateway. WordPress.org policy requires this be disclosed. Endpoints contacted The plugin makes HTTPS requests to: https://api.onlinestorenotifications.com/v1/onboard/request – during onboarding, to send your verification email. https://api.onlinestorenotifications.com/v1/onboard/verify – during onboarding, to confirm the code and provision an account. https://api.onlinestorenotifications.com/v1/send – for every wp_mail() call once the plugin is onboarded. https://api.onlinestorenotifications.com/v1/email/domain (GET / add / verify) – when the site administrator interacts with the Sender Domain page. https://api.onlinestorenotifications.com/v1/billing/* – checkout, billing portal, plan status. Only invoked when the site administrator interacts with the Billing page or picks a paid tier during onboarding. The gateway is operated by CodeCasa Studios under the Casa Mail brand and runs on the OnlineStoreNotifications infrastructure. Casa Mail and OnlineStoreNotifications are sister brands of the same company; the API hostname reflects the shared backbone rather than a third-party dependency. Data sent During onboarding (one-time, before any send): site administrator email address, site name, site URL. For each wp_mail() call once onboarded: sender email address, sender name, recipient email address(es), subject, message body, message headers (after stripping From/To/Subject/Date/Message-ID/MIME-Version/Content-Type/Content-Transfer-Encoding). Terms and privacy Terms of service: https://sendemailtoday.io/terms.html Privacy policy: https://sendemailtoday.io/privacy.html Privacy When activated, this plugin transmits email content (recipient, sender, subject, body, headers) to a third-party SMTP gateway for delivery. This is the plugin’s only purpose. The data lifecycle is described above under “External services” and on the linked privacy policy. The plugin also writes a wp_add_privacy_policy_content() block describing what is transmitted; this lets site administrators include the disclosure in the WordPress-managed privacy policy page (Settings -> Privacy). Account deletion: a “Request account deletion” button on the plugin’s Settings page emails the gateway operator. Upon confirmation, the tenant record, API key(s), domain-authentication records, and recent sending history are removed from the gateway side. The plugin uninstall additionally removes the plugin’s WordPress-side options + tables.
Top keywords
- mail18×1.23%
- com15×1.02%
- gateway15×1.02%
- onlinestorenotifications15×1.02%
- casa12×0.82%
- domain12×0.82%
- email12×0.82%
- onlinestorenotifications com12×0.82%
- site11×0.75%
- casa mail10×0.68%
- month10×0.68%
- emails9×0.61%
Email Essentials
Email Essentials vastly reduces the chances of your emails being marked as spam or being rejected. Originally a debugging tool, it has grown into a full-fledged email enhancement plugin. Please note that this plugin is not a “we support any type of transport” Email plugin. For other protocols than SMTP, but rather to enhance the email sending capabilities of WordPress. If you need to send emails with other protocols than SMTP, this plugin is not for you. You might want to look at plugins like Post SMTP (not affiliated). And since version 6.0.0, after more than 10 years of development and internal use, this plugin is now a FOSS plugin, meaning it is free to use, modify and distribute under the GPLv2 license. In return, we ask you to support the development of this plugin by contributing to the codebase, reporting bugs, and helping others in the community. Responsible disclosure: If you find a vulnerability, please email us at
[email protected]. Features Set a good From name and email address, automatically correcting it if needed. For example, a contact form is sent from the visitors email address, resulting in an invalid Sender address. This plugin will correct it to a valid email address. This plugin automatically corrects it. Correct envelope-from address; often forgotten, but important for deliverability. Reformat as HTML with plain text alternative; will detect the use of HTML ensures that emails are sent as HTML with a plain text alternative. Process shortcodes in your email content. UTF8 recoding, to ensure that special characters are correctly encoded in the email. Email Essentials allows for adding CSS, header, footer, and body template using filters, see below. Convert CSS to inline styles for better support in email clients SMTP configuration Send emails to multiple addressees as separate emails S/MIME signing, using a supplied certificate, to ensure the authenticity of the email. DKIM signing, and providing all information needed to set up DKIM signing for your domain. Allow redirecting emails sent to the administrator to other email addresses based on the email subject. Allow redirecting emails sent to the moderators (e.g., for comments). Keep a history of outgoing emails (debugging, cleared on deactivation) Email receipt tracking (for investigative purposes only, see GDPR note) Re-send button for failed emails Allow sending emails delayed, to prevent sending too many emails at once. (Beta feature) Important Note This tool is for users who understand email delivery. If unsure, ask for help. Under GDPR, storing and tracking emails is prohibited. The history feature is for investigative purposes only! External services Email Essentials uses one external service by default, two if you create and define your own IP services. CloudFlare DNS over HTTPS (DoH). This is used to resolve domain names to IP addresses when (for example) checking SPF or DKIM records. In theory, it is possible to use PHPs own dns_get_record function, but in practice this often fails due to server DNS-resolve misconfiguration. Using CloudFlare’s DoH service ensures reliable DNS resolution. We only send the hostname (the domain part) to CloudFlare, no other data. Explicitly, we do NOT send any other information. The plugin can use an IP-address relay service to accurately determine the sender’s IP address. This is required to accurately check that the sender’s IP address is authorized to send email for the domain (SPF check). To use this, you will need to set up your own service, see documentation on filter acato_email_essentials_ip_services. Without this service, IP detection can be inaccurate because it will use the website itself as a relay. Use of a reverse proxy, load balancer etc. can lead to incorrect IP detection. WordPress Filters acato_email_essentials_settings — Filter plugin settings. acato_email_essentials_defaults — Filter default settings. acato_email_essentials_subject — Filter email subject. acato_email_essentials_body — Filter HTML body of the email. acato_email_essentials_head — Filter HEAD section of HTML email. acato_email_essentials_css — Filter CSS for the email. acato_email_essentials_minify_css — Filter CSS minification. acato_email_essentials_mail_is_throttled — Check if mail should be throttled. acato_email_essentials_mail_throttle_time_window — Set mail throttle time window. acato_email_essentials_mail_throttle_max_count_per_time_window — Set max emails per time window. acato_email_essentials_mail_throttle_batch_size — Set mail batch size. acato_email_essentials_ip_services — Define custom IP services for accurately determining the sender’s IP address. acato_email_essentials_ip_service — Filter individual IP service URLs. acato_email_essentials_website_root_path — Filter to supply the correct website root path in case of non-standard setups. acato_email_essentials_development_tlds — Filter development/local TLDs. WordPress Filters in detail Plugin Settings acato_email_essentials_settings Parameters: – (array) $settings The current settings of the plugin. Expected return: – (array) The new settings of the plugin. acato_email_essentials_defaults Parameters: – (array) $defaults The current default settings of the plugin. Expected return: – (array) The new default settings of the plugin. Email Content acato_email_essentials_subject Parameters: – (string) $the_subject Subject for the email. – (PHPMailer) $mailer The PHPMailer object (by reference). Expected return: – (string) The (altered) Subject. acato_email_essentials_body Parameters: – (string) $should_be_html A text that should be html, but might not yet be, your job to make a nice HTML body. – (PHPMailer) $mailer The PHPMailer object (by reference). Expected return: – (string) A text that should be html. acato_email_essentials_head Parameters: – (string) $the_head_section HTML that is the HEAD section of the HTML email. – (PHPMailer) $mailer The PHPMailer object (by reference). Expected return: – (string) The altered HEAD section of the HTML email. acato_email_essentials_css Parameters: – (string) $the_css CSS for the email (empty by default). – (PHPMailer) $mailer The PHPMailer object (by reference). Expected return: – (string) The (altered) CSS. acato_email_essentials_minify_css Parameters: – (string) $css CSS to be minified. Expected return: – (string) The minified CSS. Mail Throttling acato_email_essentials_mail_is_throttled Parameters: – (bool) $is_throttled Whether the mail is currently throttled. – (string) $ip The sender’s IP address. – (int) $mails_recently_sent Number of mails recently sent from this IP. Expected return: – (bool) Whether the mail should be throttled. acato_email_essentials_mail_throttle_time_window Parameters: – (int) $time_window Time window in seconds for counting sent emails. Expected return: – (int) The (altered) time window in seconds. acato_email_essentials_mail_throttle_max_count_per_time_window Parameters: – (int) $count Maximum number of emails allowed per time window. Expected return: – (int) The (altered) maximum count. acato_email_essentials_mail_throttle_batch_size Parameters: – (int) $size Number of emails to send in a single batch. Expected return: – (int) The (altered) batch size. IP Detection acato_email_essentials_ip_services Parameters: – (array) $services The current list of IP services used to determine the sender’s IP address. Expected return: – (array) The (altered) list of IP services. The services must be keyed with ipv4, ipv6 and dual-stack. The values must be URLs that return the IP address in plain text. The dual-stack service should return an IPv6 address if available, otherwise an IPv4 address, never both. You can set-up your own service like this; You will need a webserver that can run PHP, and you need a DNS service that allows you to manually add records. You will need three webspaces, for example; ipv4.myservice.com, ipv6.myservice.com and dual-stack.myservice.com. You could use the same webspace for all three, but you will still need three subdomains on the service. For the ipv4 subdomain, ONLY register an A record, pointing to the webserver’s IP address. For the ipv6 subdomain, ONLY register an AAAA record, pointing to the webserver’s IPv6 address. For the dual-stack subdomain, register both an A and an AAAA record, pointing to the webserver’s IP addresses. Create a file called index.php in each of the webspaces with the following content: php <?php header('Content-Type: text/plain'); print $_SERVER['REMOTE_ADDR']; That’s it. You can now use these services in the plugin settings like this; `php add_filter(‘acato_email_essentials_ip_services’, ‘my_custom_ip_services’); function my_custom_ip_services($services) { // Add your custom services here $services[‘ipv4’] = ‘https://ipv4.myservice.com’; $services[‘ipv6’] = ‘https://ipv6.myservice.com’; $services[‘dual-stack’] = ‘https://dual-stack.myservice.com’; return $services; } ` acato_email_essentials_ip_service Parameters: – (string) $service The URL of the IP service for the given type. – (string) $type The type of IP service (‘ipv4’, ‘ipv6’, or ‘dual-stack’). Expected return: – (string) The (altered) IP service URL. Filter to modify individual IP service URLs based on type. acato_email_essentials_website_root_path Parameters: – (string) $path The current website root path. Expected return: – (string) The (possibly altered) website root path. Filter to supply the correct website root path in case of non-standard setups. acato_email_essentials_development_tlds Parameters: – (array) $tlds Array of top-level domains considered as development environments. Expected return: – (array) The (altered) array of development TLDs. Filter to modify which TLDs are treated as development/local environments. Default values are ‘local’ and ‘test’. Scripts/styles In the public/scripts and public/styles folder you find the JS and CSS files used in the plugin admin area. These files are processed with Webpack, just so it works in all recent browsers. Script is nearly identical to the source. You can find the source files in the src/scripts and src/styles folders. If you feel the need to modify these files, you can change them there, and run npm install ; npm run build to create the production files. Translation files You can use npm run i18n to generate the POT file for translation, update the PO files in the languages folder, and compile to MO/php files. This is a one-task-does-all; run it, change the translations, run it again. Done. See package.json for more details or individual commands. Tools In the tools folder you will find a script to generate DKIM keys, should you want to use DKIM signing. rename to remove the .txt extension and run it in a shell. Tools are provided as-is, without support. Use at your own risk. Read the scripts before using them. You DO NOT HAVE TO USE these scripts, you can generate DKIM keys with any tool you like. Arbitrary section For advanced configuration and custom IP services, see the plugin documentation or source code.