Get in touch
  • WordPress
  • CRM and integrations
  • v1.0.0

Mail OAuth & Email Log for WooCommerce — store email through Microsoft 365 and Gmail with an order email log

The shop sends email through your Microsoft 365 / Outlook.com or Google Workspace / Gmail mailbox with OAuth 2.0 sign-in — no password — or through any SMTP server. The log records every email, and the order page shows which emails to the customer and to the shop went out and which did not, with the exact error. Free — connections, log, emails on the order. Pro — retry queue, backup connection, resend and a fresh copy of order emails, alerts by e-mail and Telegram.

Download Free
Pro · one-year licence The more sites, the less each one costs
Compatibility
WordPress 6.2+ · WooCommerce 8.0+ (tested with 8.0.4 and 11.2.1; without WooCommerce it works as a WordPress mail plugin) · PHP 7.4+ (tested on 7.4 and 8.3) · HPOS and classic order storage · block and classic checkout · interface: English, українська, русский
Licence
one site, annual
Trial
7 days, no card, one per site
Updated
October 2026
Or all 173 Pro modules with All Access — 4 990 ₴ / year

What Free has,
and what Pro adds

The free version works with no time limit. Pro adds the rest of the features in the table.

Feature Free Pro
Microsoft 365 / Outlook.com with OAuth 2.0 sign-in: through the Microsoft Graph API (HTTPS) or SMTP AUTH with XOAUTH2, shared mailboxes in SMTP mode ✔ ✔
Google Workspace / Gmail with OAuth 2.0 sign-in through the Gmail API — only the permission to send email on your behalf ✔ ✔
Any SMTP server: your hosting mailbox, Brevo, Mailgun, Amazon SES, Postmark and others ✔ ✔
An app in your own Microsoft Entra or Google Cloud, set up with the guide on the screen; no mailbox password, client secret and tokens stored encrypted ✔ ✔
Test email through the saved connection with the service's answer or the exact error ✔ ✔
Daily sign-in refresh even when no email goes out, Microsoft client secret expiry date with a warning 14 days ahead, a hint about the Google "Testing" status ✔ ✔
Admin notice and a Site Health test when a connection lost its sign-in; a warning about another active mail plugin ✔ ✔
A log of every email: from, to, Cc, Bcc, subject, who sent it, the order, the connection, the result, the exact error and every attempt ✔ ✔
View an email as it was sent; filters and search by address, subject or order number ✔ ✔
An "Emails to the customer and the shop" box on every order (HPOS and classic storage), including emails WooCommerce did not send: email turned off or no address ✔ ✔
Log retention, a "do not keep the content" switch, personal data export and erasure with the standard WordPress tools ✔ ✔
Shop managers see order emails only; account and password-reset emails are visible to administrators only ✔ ✔
Interface: English, українська, русский ✔ ✔
Retry queue: 5 min, 15 min, 1 h, 3 h, 12 h…, 2 to 10 attempts, WooCommerce emails only or every email — ✔
Emails wait for a new Microsoft or Google sign-in and go out right after it, without using up attempts — ✔
Order notes about retries and delivery; a "New order" email delivered on retry sets WooCommerce's own flag, so the shop gets no duplicate — ✔
A backup connection of any type, also for attachments too large for Microsoft Graph (3 MB) or Gmail (5 MB) — ✔
Alerts by e-mail and Telegram: an order email was not delivered, the queue gave up, a new sign-in is needed, the client secret expires soon — ✔
Resend any email from the log or the order — to the same recipients or to another address — ✔
A fresh copy of an order email built from the current order data: six customer emails and three shop emails — ✔
An "Email" column in the WooCommerce orders list: orders whose emails wait for a retry or did not get through — ✔

What it looks like

Mail OAuth & Email Log connection: Microsoft 365 / Outlook.com, Google Workspace / Gmail, an SMTP server or the server default
The Connection tab: the choice of service, the guide to registering the app in Microsoft Entra, the Redirect URI with its Copy button and the client ID. Test shop — the Microsoft sign-in on the test stand is imitated by a test server, so the mailbox address is a test one.
The "Emails to the customer and the shop" box on a WooCommerce order
Free version, the box on an order: the shop’s “New order” and four customer emails — processing, completed, customer note, refunded — with status, connection, time and a View button.
The email log: status, connection, order and exact error of every email
Pro: the email log — fresh copies sent by hand, a customer email Microsoft Graph refused (400 ErrorInvalidRecipients — the recipient could not be resolved), an alert to the owner, and emails that went out through the backup SMTP connection.

Key points

What customers see

Your shop’s usual emails, sent from your mailbox.

How much it costs

The base version is 0 UAH, with no time limit and no limit on the number of emails: all connections (Microsoft 365 / Outlook.com, Google Workspace / Gmail, SMTP), the log, the “Emails to the customer and the shop” box, the test email, the sign-in watch.

The trial starts when you ask

A fresh install is the free version, nothing switches on by itself. The “Try Pro for 7 days” button → e-mail → the key right in the window and by e-mail.

One key — one site

Moving the store? Unbind the licence on the old domain and activate it on the new one yourself. For studios — keys for 5 or 25 sites, or unlimited.

Technical requirements

  • WordPress 6.2+ · PHP 7.4+ (runs tested on PHP 7.4 and 8.3, code syntax checked on 7.4 and 8.5).
  • WooCommerce 8.0+ for the order features (tested with 8.0.4 and 11.2.1): HPOS and classic order storage, block and classic checkout, WooCommerce’s “Deferred emails” feature (sending through Action Scheduler). Without WooCommerce the plugin works as a WordPress mail plugin: connections, log, test email.
  • Microsoft 365 / Outlook.com — an app in Microsoft Entra with the delegated Mail.Send (Graph) or SMTP.Send (SMTP AUTH) permission and offline_access; for SMTP AUTH the mailbox needs Authenticated SMTP switched on. In some organisations an administrator grants consent to the app.
  • Google Workspace / Gmail — a Google Cloud project with the Gmail API enabled and an OAuth client of the “Web application” type; an external app set to “In production”, because in “Testing” Google issues a sign-in for 7 days only.
  • Server — outgoing HTTPS requests to Microsoft (login.microsoftonline.com, graph.microsoft.com) or Google (accounts.google.com, oauth2.googleapis.com, gmail.googleapis.com); for SMTP — the mail server’s outgoing port open, usually 587 or 465.
  • Interface languages: English, українська, русский.

Version history

v1.0.0 Current October 2026

Microsoft 365 / Outlook.com (Microsoft Graph or SMTP AUTH with XOAUTH2) and Google Workspace / Gmail (Gmail API) with OAuth 2.0 sign-in, SMTP server, email log, the “Emails to the customer…

Frequently bought with Mail OAuth & Email Log for WooCommerce

4 modules in one order — 40% cheaper than separately

“Store starter” bundle Mail OAuth & Email Log Nova Poshta Premium Mono Acquiring Telegram notifications and Viber/SMS for customers Need more — all 173 modules in All Access for 4 990 ₴.
2 490 ₴ / year instead of 4 160 UAH bought separately
Buy the bundle →

Full module description

Mail OAuth & Email Log for WooCommerce sends your shop’s email — order confirmations, account emails, notifications of other plugins — through your own mailbox and records every email in a log. You can connect Microsoft 365 / Outlook.com (through the Microsoft Graph API or SMTP AUTH) and Google Workspace / Gmail (through the Gmail API) with OAuth 2.0 sign-in — the mailbox password is never entered or stored — as well as any SMTP server: your hosting mailbox, Brevo, Mailgun, Amazon SES, Postmark.

For a shop, the main question about email is a simple one: did the customer get the order confirmation? So the log knows which WooCommerce email was sent and which order it belongs to, and every order has an “Emails to the customer and the shop” box: which emails went out, when, through which connection, and with which error if the mail service did not accept them. It also lists the emails WooCommerce did not send at all — when that email type is switched off or the order has no address.

Why OAuth. Microsoft has announced the retirement of password (Basic) authentication for SMTP AUTH in Exchange Online and recommends moving to OAuth 2.0 or Microsoft Graph; the current dates are in Microsoft’s documentation. A shop that sends email from a Microsoft 365 mailbox with a user name and password will then stop sending — and without a log, you hear about it from customers who never got their confirmation.

What the plugin does not promise. “Sent” in the log means Microsoft, Google or the SMTP server accepted the email for delivery. Whether it landed in the customer’s spam folder, the plugin cannot see. It does not change how WooCommerce emails look.

Need to see what an order email looks like and send a test copy? That is the separate Email Preview for WooCommerce module. Mail OAuth & Email Log takes care of delivery: which mailbox the email goes through, whether the mail service accepted it, and what to do when it did not.

What customers see

Your shop’s usual emails, sent from your mailbox. The plugin changes nothing in the storefront or at checkout, and nothing in how WooCommerce emails look: it only hands them to the mail service you chose and records them in the log.

With a Microsoft or Google connection, the sender is the mailbox you signed in with: Microsoft refuses other addresses unless the account has Send As rights, and Gmail puts in its own address. If the mailbox may send as an alias or a shared mailbox, one checkbox in the settings allows it. Bcc copies are kept on every connection; through Microsoft Graph they go out as real hidden recipients.

With Pro, if the mail service did not accept an email for a while, the queue sends it again — so the customer gets the order confirmation later rather than never.

What the admin gets

  • Connections — Microsoft 365 / Outlook.com, Google Workspace / Gmail, an SMTP server or “Server default”: the hosting’s PHP mail(), as WordPress does without plugins, but with the log.
  • Microsoft 365 / Outlook.com — through the Microsoft Graph API (HTTPS, port 443 — works when the host blocks SMTP ports) or SMTP AUTH with XOAUTH2 (which can also send as a shared mailbox). Business mailboxes and personal Outlook.com accounts.
  • Google Workspace / Gmail — through the Gmail API with the narrowest Gmail permission: only sending email on your behalf.
  • Your own app — you register it in your own Microsoft Entra or Google Cloud with the step-by-step guide on the screen; the Redirect URI has a Copy button. Tokens go from Microsoft or Google straight to your site; client secrets and tokens are stored encrypted.
  • Test email through the saved connection: “accepted for delivery” or the service’s exact answer.
  • Sign-in watch — tokens are refreshed once a day even when no email goes out (Microsoft ends a sign-in after 90 days without use, Google after six months); the Microsoft client secret expiry date with a warning 14 days ahead; a hint when the Google app was left in “Testing”; an admin notice and a Site Health test when a connection lost its sign-in.
  • Another mail plugin — if WP Mail SMTP, FluentSMTP, Post SMTP or a similar plugin is active, the screen names it: two mail plugins cannot both send WordPress email.
  • The “Emails to the customer and the shop” box on every order (HPOS and the classic order screen): which email, to whom, status, through which connection, when, and View — the email as it was sent.
  • Emails that never went out — “Not sent: email turned off” or “Not sent: no recipient” (an order without an e-mail, for example): the answer to “why didn’t the customer get anything?” is right on the order page.
  • Email log — every email of WordPress and plugins: date, from, to, Cc, Bcc, subject, who sent it (the WooCommerce email type or a plugin), the order, the connection, the result, the exact error and every attempt.
  • Filters and search — Problems, Sent, Failed, Not sent, “WooCommerce emails only”; search by address, subject or order number.
  • Email view — HTML in a sandboxed frame or plain text, with all headers and attempts.
  • Retention — days to keep (30 by default), a “Keep the email content” switch, the log size and “Delete the whole log”. A customer’s emails are included in WordPress’s Export and Erase Personal Data tools, and the privacy policy guide gets a ready text.
  • Access — shop managers see order emails; account emails (password resets, new accounts) and other site emails are visible to administrators only.
  • Pro: retry queue — an email the mail service did not accept goes out again after 5 min, 15 min, 1 h, 3 h, 12 h…; 2 to 10 attempts (5 by default); WooCommerce emails only or every email. An address the service refused is not retried.
  • Emails wait for the sign-in — while a connection waits for a new Microsoft or Google sign-in, the emails wait too (up to 7 days) and go out right after it; this does not use up attempts.
  • Order notes — about retries, delivery on attempt N and an email that never got through. A “New order” email delivered on retry sets WooCommerce’s own “sent” flag, so a later status change does not send the shop a duplicate.
  • Pro: resend — any email from the log or the order box, to the same recipients or as a copy to another address.
  • Pro: a fresh copy of an order email — the email is built again from the current order data: to the customer — processing, completed, on-hold, order details, cancelled, failed; to the shop — new, cancelled, failed order. WooCommerce’s own order actions can resend only the order details to the customer and the new order notification.
  • Pro: a backup connection of any type — for example your hosting SMTP behind Microsoft 365: when the main one fails, the email goes through it, also when attachments are too large for Microsoft Graph (3 MB) or the Gmail upload (5 MB).
  • Pro: the Email column in the orders list flags orders whose emails wait for a retry or did not get through — visible without opening every order.
  • Pro: alerts — by e-mail (several addresses, comma-separated) and Telegram: an order email to the customer or the shop was not delivered (order number, which email, the error, the next attempt), the queue gave up, a connection needs a new sign-in, the client secret expires soon, or the backup connection took over.
  • Alerts never go through the broken connection — when the main one is the problem, they go through the backup connection or PHP mail(). Customer addresses are masked in alerts. When a connection breaks and emails fail one after another, after three alerts in 15 minutes you get one summary an hour instead of a message per order.

How it works, step by step

  1. WooCommerce → Mail & Email Log → Connection (on a site without WooCommerce — Settings → Mail & Email Log).
  2. Choose Microsoft 365 / Outlook.com, Google Workspace / Gmail, an SMTP server or “Server default”.
  3. For Microsoft or Google, open the guide on the screen: register the app in Microsoft Entra or Google Cloud (copy the Redirect URI with the Copy button), paste the client ID and client secret, click “Save and sign in with Microsoft” (or Google) and sign in with the mailbox the shop sends from. For SMTP — host, port, encryption, user name and password.
  4. “Send test email” — the plugin shows what the mail service answered.
  5. From now on every WordPress and WooCommerce email goes through this connection and lands in the log together with the order it belongs to. The plugin refreshes the access token itself — before it expires and once a day.
  6. A customer did not get an email? Open the order: the “Emails to the customer and the shop” box shows what happened. With Pro the failed email is already in the queue, the owner got an alert, and a fresh copy is one click away.

How much it costs

Pro — 990 UAH, a one-year licence. A year of updates, technical support and all Pro features: the retry queue, the backup connection, alerts by e-mail and Telegram, resending, a fresh copy of order emails, the Email column in the orders list.

You can take a longer term right away — the longer, the cheaper per year:

  • 1 year — 990 UAH
  • 2 years — 1,880 UAH (−5%, 940 UAH per year)
  • 3 years — 2,610 UAH (−12%, 870 UAH per year)
  • 4 years — 3,250 UAH (−18%, 810 UAH per year)
  • 5 years — 3,710 UAH (−25%, 740 UAH per year)

No automatic charges: you renew manually, and reminders come by e-mail. A purchased licence keeps the Pro features for good — when the term ends, the site simply stops getting new versions and support.

The base key covers one site; for several shops and for studios there are keys for 5 and 25 sites and an unlimited one — pick them at the top of this page. Moving the shop — press “Release licence” on the old site and activate the key on the new one.

Trial first, payment later. The free 7-day Pro trial starts with the “Try it for 7 days” button at the top of this page or “Try Pro for 7 days” on the “Pro licence” tab of the Pro build; the key arrives by e-mail, no card needed, and the trial never starts by itself. When the trial ends the Pro features switch off; the connections, the log and the order box keep working.

Under the hood

  • Its own PHPMailer in wp_mail() — the plugin puts its own PHPMailer class into every wp_mail() call, so WordPress, WooCommerce and every plugin that sends mail the standard way go through it: log row → main connection → in Pro the backup one.
  • OAuth 2.0 — authorization code with PKCE (S256); the Redirect URI is simply the admin address, with no query parameters; the access token is refreshed two minutes before it expires, under a lock so two requests never refresh it at once; a revoked sign-in marks the connection “needs a new sign-in”, and later emails do not call Microsoft or Google in vain.
  • Microsoft Graph — /me/sendMail as JSON with real ccRecipients and bccRecipients; SMTP AUTH with XOAUTH2 — its own SMTP client with STARTTLS, works with the PHPMailer of any WordPress 6.2+; Gmail API — the complete RFC 822 message with the Bcc line.
  • Encryption — client secrets, the SMTP password, tokens and the Telegram bot token are stored encrypted (libsodium, the key is derived from the WordPress salts). If the salts change, enter the secret again and sign in once more.
  • WooCommerce context — the email type, the order and “to the customer or to the shop” come from woocommerce_mail_callback_params; switched-off emails and emails without an address are logged as rows of their own.
  • Log — its own table. With 150,000 rows: a log page in 25 ms, search by order number in under 1 ms, search by address in 0.3 s. The daily clean-up removes old rows and leaves emails that wait for a retry alone.
  • Pro: the queue runs on Action Scheduler, which comes with WooCommerce, and on WP-Cron without it; attachments for a retry are copied into a folder with a random name and removed after delivery or after 7 days.
  • Uninstall — by default the log and settings stay; with “Delete the log and all settings when the plugin is deleted” ticked, the table, settings, cron jobs and the attachment folder are removed.

How to install

  1. Plugins → Add New → Upload Plugin: choose catcode-mail-oauth-email-log-for-woocommerce-free-1.0.0.zip and activate it.
  2. If another mail plugin (WP Mail SMTP, FluentSMTP and the like) is active, deactivate it — the settings screen tells you which one.
  3. WooCommerce → Mail & Email Log → Connection: choose the service, follow the short guide on the screen and click “Save and sign in with…”.
  4. Send a test email and check the inbox — the spam folder too.
  5. For Pro: upload the Pro build over the free one (WordPress offers to replace the installed version; the log and the sign-in are kept) and paste the licence key on the “Pro licence” tab — or click “Try Pro for 7 days” there.

Questions
about the module

Didn't find the answer? Message us on Telegram and we'll reply within a business day.

@catcode_support Setup, compatibility, activation
My shop sends email through Microsoft 365 with a user name and password. What now?

Microsoft has announced the retirement of password (Basic) authentication for SMTP AUTH in Exchange Online. Connect the same mailbox with OAuth 2.0 sign-in — through Microsoft Graph or SMTP AUTH with XOAUTH2: no password is needed or stored.

Do I need a Microsoft 365 or Google Workspace administrator?

Not always. A user can register an app in their organisation's Microsoft Entra unless that is forbidden, and a personal Gmail account can create a Google Cloud project. Some organisations require an administrator to grant consent to the app.

Graph or SMTP for Microsoft 365?

Graph is recommended: it works over HTTPS (port 443), needs no Authenticated SMTP switch and keeps Bcc copies. SMTP AUTH with XOAUTH2 is for organisations that do not allow Mail.Send, or to send as a shared mailbox.

Google stops sending after a week.

Your Google Cloud app is in "Testing": Google ends such sign-ins after 7 days. Set it to "In production" and sign in again. The plugin tells you the reason itself when the sign-in disappears about a week later.

Does "Sent" mean the customer received the email?

It means Microsoft, Google or the SMTP server accepted the email for delivery. Whether it landed in spam, the plugin cannot see. Errors the service returns right away — an address that does not exist, a sender without Send As rights — appear in the log and on the order with the exact text.

Where is the email content stored?

Only in your WordPress database, in the log table, for as many days as you choose; keeping the content can be switched off. A customer's emails are included in WordPress's Export and Erase Personal Data tools. Emails go nowhere except the mail service you connected.

The site already runs WP Mail SMTP or FluentSMTP.

Two mail plugins cannot both send WordPress email — keep one of them. The settings screen names the other active mail plugin.

How is it different from Email Preview for WooCommerce?

Email Preview shows what an order email looks like and sends test copies. Mail OAuth & Email Log takes care of delivery: which mailbox the email goes through, whether the mail service accepted it, and in Pro — retries, the backup connection and alerts.

What if I do not want to pay for Pro?

Connections, the log, the order box and the test email are free with no time limit.

Not quite what you are looking for?

We build custom modules for WordPress, WooCommerce, OpenCart and Shopify. Tell us about the task and we'll prepare an estimate.

Order a custom module