Install WP Mail SMTP and pick its built-in Mailjet mailer. That is the answer for most WordPress sites on Mailjet, and the rest of this guide is how to do it without the two setup mistakes that eat first-day operators: pasting the wrong half of Mailjet’s two-key credential pair, and hitting the free plan’s 200-a-day cap during a WooCommerce sale that pushed the site over the monthly allowance. Mailjet uses a pair of credentials, an API key and a secret key, not a single key like most transactional providers, and mailer plugins are inconsistent about which field to paste each half into.
For the case for or against Mailjet as a sending service (the 6,000-a-month free tier with the branded footer, the EU-first data residency, the marketing-plus-transactional single account), start at the Mailjet review. This page is the setup walk-through. It assumes the decision to use Mailjet has already been made.
Which plugin to install
Three plugins reach Mailjet from WordPress, and one is the recommendation for most sites.
WP Mail SMTP with its Mailjet mailer is the recommended path. WP Mail SMTP ships a dedicated Mailjet option in its mailer picker that calls the Mailjet Send API (v3.1) directly rather than going over SMTP. Setup is the API key, the secret key, and a from-address; no host or port to configure. The value against the alternatives is what WP Mail SMTP adds around the send: a setup wizard, email logging on the free tier, and, on Pro, backup connections and smart routing. Pick it when the site wants a general-purpose mailer plugin around Mailjet.
Mailjet for WordPress (published by Mailjet at
wordpress.org/plugins/mailjet) is the vendor’s own plugin. It replaces wp_mail() and additionally exposes Mailjet’s contact list management and campaign features inside wp-admin, meaning WordPress form submissions can push subscribers directly into a Mailjet campaign list without a separate integration. Pick it when the site is running Mailjet marketing campaigns alongside transactional email and wants the two under one WordPress admin surface. Skip it if transactional is the only job; the extra marketing UI is overhead the site will not touch.
FluentSMTP and Post SMTP both reach Mailjet in generic-SMTP mode on in-v3.mailjet.com with the API key as the SMTP username and the secret key as the SMTP password. FluentSMTP is the pick for sites that want free per-address routing rules; Post SMTP is the pick when real-time failure notifications to Chrome, Slack, or Teams matter more than the plugin’s other features. Both are honest alternatives to WP Mail SMTP for sites already standardised on them.
For the plugin-by-plugin comparison in the general case (not Mailjet-specific), see best WordPress SMTP plugins.
Before touching WordPress
Mailjet accepts sends from unverified domains on the free tier for testing, but production traffic requires a verified sending domain, and receivers require the DKIM signature that verification unlocks. Two things sit upstream of the WordPress install: an API key pair scoped to the account, and DNS records at the sending domain.
Generate the API key and secret key
Log in to the Mailjet dashboard, then Account settings > Master API Key & Sub-API key management (also reachable from the top-right avatar menu as API Key Management). The master key pair for the account is shown by default; sub-API keys can be generated for scoping to a specific site or environment, and this is the right pattern for a WordPress install. Click Generate a Sub-API Key, name it after the WordPress site, and confirm.
Mailjet shows two values: an API Key (public, roughly 32 hex characters) and a Secret Key (private, similar length). Copy both immediately. The API key stays visible in the dashboard after creation; the secret key is displayed only once, and a lost secret key means the whole pair has to be regenerated. Save both values to a password manager or secrets store before leaving the page.
The same key pair authenticates both the API (as HTTP Basic Auth) and SMTP (as SMTP username and password), so one generation is enough. This is different from providers that split API and SMTP credentials (Mailgun, historically) or that rotate SMTP credentials separately.
Verify the sending domain and publish DKIM and SPF
In the Mailjet dashboard, Account settings > Senders and Domains > Add a Sender Domain. Enter the domain the WordPress site sends From:, meaning example.com, not mail.example.com. Mailjet returns the DNS records to publish: a DKIM TXT record at mailjet._domainkey.<your-domain> with the account’s public key value, and an SPF include to add to the domain’s SPF record.
The SPF record adds include:spf.mailjet.com to the domain’s existing SPF record at the apex. If the domain already has an SPF record covering Google Workspace or another sender, edit it to add the include; do not create a second SPF record at the apex, because a domain with two SPF records at the same name is a permanent SPF error under RFC 7208 regardless of what the records say. If the domain has no SPF record, publish v=spf1 include:spf.mailjet.com -all. The SPF merger folds include:spf.mailjet.com into an existing string and counts the DNS lookups against RFC 7208’s ten-lookup ceiling before you publish.
Return to the Mailjet dashboard and click Check now on the sending domain. Verification is typically minutes when propagation is fast and up to an hour on slow DNS hosts. Both DKIM and SPF must show verified before Mailjet signs sends from that domain with DKIM in production.
DMARC is not Mailjet-specific but is required for domains sending more than 5,000 messages per day to Gmail or Yahoo under their 2024 bulk-sender rules. Publish _dmarc.example.com as TXT v=DMARC1; p=none; rua=mailto:[email protected] as a safe starting point; tighten to p=quarantine or p=reject once reports show no legitimate mail failing alignment. The bulk sender authentication checklist has the full order of operations.
Once DKIM and SPF verify in the Mailjet dashboard, the DNS auth checker reads how mailjet._domainkey, the apex SPF, and _dmarc look from a receiver’s perspective, which catches nameserver caches and mistyped selectors before real traffic does.
Installing and configuring WP Mail SMTP with Mailjet
The plugin install is standard: Plugins > Add New > search WP Mail SMTP > Install > Activate. On first activation, WP Mail SMTP launches its setup wizard; skip it (click Go Back to the Dashboard) and configure manually so the values below are the ones you set rather than the ones the wizard picks.
In the WP Mail SMTP settings screen, the General tab holds the sender identity. Set From Email to an address at the domain verified with Mailjet and check Force From Email, which stops plugins that hardcode their own sender (WooCommerce order emails, some form plugins) from overriding it. A From: address at an unverified domain is Mailjet’s most common first-day rejection. Set From Name to the site or brand name and check Force From Name for the same reason. Leave Return Path on: Return-Path controls where bounce notifications land, and leaving it on lets Mailjet attribute bounces to the right send instead of dropping them into the WordPress admin inbox. Then set Mailer to Mailjet.
WP Mail SMTP reveals the Mailjet fields once the mailer is selected. Paste the API Key (the shorter public value) into the API Key field, and paste the Secret Key (the longer private value) into the Secret Key field. The order matters: pasting the two swapped produces a 401 that reads as authentication failed rather than wrong field, which is the first-day misdiagnosis to avoid. If the values were saved to a password manager together, the API key is the one Mailjet’s dashboard still displays; the secret key is the one shown only at creation.
Save. WP Mail SMTP runs a validate-connection check against the Mailjet API and shows Valid or an error. A Valid result confirms the credentials are correct and the account is active; it does not confirm that the DKIM and SPF are set up correctly for the from-address, because the validation call does not attempt an actual send.
Under Email Test in WP Mail SMTP, send a test message to an address you can read. Check the HTML toggle if the site’s real mail is HTML. A success message from the plugin means the API accepted the send; verify the message actually arrived at the destination before treating the setup as done, and open the message headers to confirm Authentication-Results shows dkim=pass for mailjet._domainkey.<your-domain> and spf=pass for the sending IP. If either fails, the DNS records did not propagate or were entered incorrectly at the DNS host; return to the Mailjet dashboard’s sender domain page and re-check.
For FluentSMTP or Post SMTP over generic SMTP, the settings are Connection Type SMTP, Host in-v3.mailjet.com, Port 587, Encryption STARTTLS, Auto TLS on, Authentication PLAIN or LOGIN, Username the Mailjet API key, Password the Mailjet secret key. Both plugins accept these values without a dedicated Mailjet picker.
Sending the first test and reading the failure
The three error patterns worth naming.
401 Unauthorized or authentication failed from the plugin. Either the API key and secret key are swapped between the two fields, or the sub-API key has been revoked in the Mailjet dashboard. Log in to Mailjet and confirm the sub-API key still appears in the Master API Key & Sub-API key management screen; if it does, re-paste the two values with the API key in the API-key field and the secret key in the secret-key field.
Sender not authorized or domain not verified. The from-address is at a domain Mailjet has not verified, or DKIM has not propagated. Check the Mailjet dashboard’s sender domain page shows both DKIM and SPF verified for the exact domain in the from-address. [email protected] is a different domain to [email protected] under DKIM alignment rules; verify the domain the site actually sends from, not the domain the site is hosted at.
Send quota exceeded on a day the monthly total looks fine. The Mailjet free plan enforces a 200-messages-per-day cap in addition to the 6,000-per-month allowance. A WooCommerce sale, a bulk password reset, or a newsletter blast can trigger the daily cap and see later sends rejected even with the monthly headroom still available. The paid Starter plan ($9/month for 8,000 messages) removes the daily cap; sites with any traffic spike pattern should size the plan against the peak day, not the monthly total.
The Mailjet Statistics > Message events page shows every send in near-real-time with its delivery status and any bounce reason. Point it at the last hour and the test sends appear near the top; a message that shows Delivered in the activity log but has not arrived at the destination is a receiver-side delivery decision, not a Mailjet problem, and the message headers (Authentication-Results, Received-SPF) are where the reason lives.
Mailjet-specific things to know
The free-tier footer is not optional on the free plan. Every message sent through the free plan carries a Mailjet-branded footer. The footer is removed on the Essential plan ($17/month for 15,000 messages) and every plan above; it cannot be disabled on the free plan through any plugin setting because the branding is enforced at Mailjet’s send side, not at WordPress’s. Sites where the footer is unacceptable start at Essential, not Starter.
Sub-API keys give clean environment separation. A single Mailjet account can hold multiple sub-API keys, each with its own audit trail. Generating one per environment (staging, production, per-client-site for agencies) means revoking a compromised set of credentials does not take down other sites, and the Mailjet Statistics view can filter events by which sub-API key authenticated the send. This costs nothing.
The account is shared between marketing and transactional. Mailjet’s account structure does not split marketing (campaigns, lists) and transactional (per-message sends) into separate namespaces the way Mailchimp and Mandrill do. A single sub-API key can send both, and the Statistics view aggregates both. This is the reason Mailjet fits sites that want one bill and one dashboard for both; it is also the reason that any deliverability problem on the marketing side (poor list hygiene, spam complaints on a campaign) affects transactional sending from the same account.
EU data residency is a genuine feature, not a marketing angle. Mailjet’s sending IPs and stored data are in Frankfurt and Saint-Ghislain (Belgium), and the standard DPA is written for European operators. For a WordPress site whose reader base and legal footprint are in Europe, Mailjet’s EU-first shape is a legitimate reason to choose it over US-based providers. The US endpoint is available for accounts that request it, but the EU is the default.
Log retention is 30 days. Mailjet retains message-level event data for 30 days on all plans. Sites that need longer retention should mirror sends to a WordPress email log (Check & Log Email, Log Emails, or WP Mail SMTP’s own log tier) in parallel, because the WordPress log will still have the send after Mailjet’s window closes.
When another provider fits better
If the WordPress site sends fewer than 300 messages per day and cannot accept the Mailjet branded footer on free-tier sends, Brevo (300/day free, no forced footer) is the closer fit. If the site sends fewer than 3,000 messages per month and wants no branding from day one, Resend covers the case at a similar free-tier shape. Above roughly 10,000 messages per month with transactional as the only job, Postmark ($15 for 10,000 messages, no platform subscription, 45-day log retention on Basic) is priced below Mailjet’s Essential tier for the same volume. The SMTP cost calculator runs the crossover math against a site’s actual monthly send volume.
Related
When you are ready to go further:
- Mailjet review covers the case for and against Mailjet as a sending service, its EU data-residency shape, and the pricing tiers.
- WP Mail SMTP review is the recommended mailer plugin for most Mailjet setups.
- Best WordPress SMTP plugins is the general-purpose plugin comparison, not Mailjet-specific.
- WordPress email setup guide places Mailjet inside the wider WordPress email stack.

