Email Spam Tester

Home › Integrations › Guides › Klaviyo

Guide · no connection needed

Testing Klaviyo emails

Plenty of Klaviyo mail never goes out as a campaign. It leaves from flows, triggered by a signup, an abandoned cart or an order. Here is how to put both kinds through a spam test, and how to read what comes back.

Guide · Klaviyo

Test an email from Klaviyo

One address, one email, valid for an hour. No account, no API key.

Get a test address

Step 1

Authenticate the domain

A branded sending domain: NS delegation (recommended) or CNAMEs, plus one TXT on the bare domain.

Step 2

Send one real email to a test address

A live campaign to a list of one profile, Smart Sending off. Flow emails: trigger them yourself.

Step 3

Read the report

On a shared sending domain SPF passes for Klaviyo, not for you, and DMARC fails for your brand.

A Klaviyo store mails in two ways. Campaigns go out when somebody presses send, usually after a second pair of eyes has looked at them. Flows (the welcome series, abandoned cart, browse abandonment, post-purchase, winback) tend to get checked once, when someone builds them, and then keep sending unattended.

Email Spam Tester reads one real message and tells you what a receiving server would make of it. Authentication, blocklist status of the sending IP (21 lists), two spam engines, the HTML, and Gmail's and Yahoo's requirements for bulk senders. Get an address on the home page (no signup), send to it within the hour, and the report builds itself as the checks finish. The address takes one message, so each test needs a fresh one.

Preview tests leave out the parts that matter for deliverability

The test send is quick. In the campaign or template editor, click Preview, pick a profile or an event to preview with, then Send test and enter the address. In a flow, open the message and use Preview & test in the upper right.

For the most realistic check of a campaign, the same article suggests sending it to a small internal list.

A one-profile list, Smart Sending off

  1. Create > List, name it something like "spam test", and create it.
  2. On the list page, click Add profile (it reads Add subscriber if you ticked the consent checkbox) and enter the test address, plus any provider inboxes the inbox test gave you.
  3. Build or clone the campaign, and pick this list as the only recipient.
  4. Turn off Smart Sending for this campaign message.

Step four is the one people miss. Smart Sending is on by default for campaigns and skips anyone who got an email from you in the last 16 hours. Test again the same day and any profile that got the morning's campaign may be skipped. You can switch it off per campaign message.

Adding a profile by hand starts from a list page in Klaviyo's own steps, so use a list, and remove the profile afterwards, since the address stops working after an hour.

If you run the inbox test, its marker has to stay in the subject, and the campaign then shows which folder it reached at Gmail, Outlook, Yahoo and other providers. Some of those provider inboxes are public test inboxes, which means your subject, sender name and folder may be visible to others.

Flow emails need a different approach

A campaign can't stand in for a flow email with full fidelity. Klaviyo notes that campaigns don't carry the event content (the cart items, the order lines) that metric-triggered flows have. You have two options.

The first is the flow's own Preview & test with a real event selected. You see the event content, but the unsubscribe links in that email are placeholders.

Or put the test address through the flow's trigger yourself, the way a shopper would, and let the flow send the live email, which is what Klaviyo means when it recommends a live test for send-time behaviour that preview mode doesn't fully show. Take a welcome series as the example. The first email goes out right after signup, so a test address that subscribes through your form gets it while the address is still open, but the second email, two days later, arrives long after the address has expired and is better checked through preview.

What the report says about a new Klaviyo account

From the report · Authentication

  • SPFpassnot alignedPasses for Klaviyo's shared sending domain, not for your From.
  • DMARCfailNeither SPF nor DKIM lines up with your From domain.

This is what Klaviyo's shared sending domain looks like before you set up a branded one.

Klaviyo starts most accounts on a shared IP and a shared Klaviyo sending domain. Mail on that domain is authenticated automatically, which is why SPF passes, but it passes for Klaviyo's domain. Your From domain doesn't line up with it, so DMARC fails for your brand. Klaviyo's authentication article says it directly: a policy on Klaviyo's shared domain does not make your emails pass DMARC.

So on an account without a branded sending domain, expect a passing SPF result with red alignment lines next to it, and a failed DMARC, with a branded domain near the top of the fix plan. The DMARC fail page explains the mechanics if you want them.

A branded sending domain is, in Klaviyo's words, a deliverability best practice, and bulk senders are required to have one. In Klaviyo's summary of the Gmail rule, the bulk sender line sits at 5,000 emails to personal Gmail accounts in 24 hours. Bulk senders to Gmail and Yahoo must also publish a DMARC policy, and the report checks that separately under bulk sender rules.

Setting up the branded sending domain

The setup asks for a sending subdomain, send.helloworld.com in Klaviyo's example, and offers two ways to delegate it:

  • Dynamic, four NS records pointing at Klaviyo's name servers. Klaviyo recommends this one.
  • Static, up to three CNAMEs, for DNS providers that can't do NS. In the example they are send pointing to 1.klaviyodns.com, and km1._domainkey and km2._domainkey pointing to matching hosts under klaviyodns.com.

Either way you add one TXT record on the bare domain, klaviyo-site-verification= followed by your public API key. Copy real values from your account. Klaviyo's table uses example values.

The selectors tell you which stream you're looking at. Marketing domains sign with km1 and km2, transactional domains with kt1 and kt2. Look up km1 in the DKIM checker once the records are live. Pick a subdomain no other email provider uses, and keep the From address on the same root domain as the sending subdomain.

Example values. Copy the real ones from your account.

NameTypeValueWhat it is forCopy
Dynamic (recommended)
sendNSKlaviyo's name servers, four records from your accountDelegates the sending subdomain to Klaviyo.
Static, if your DNS can't do NS
sendCNAME1.klaviyodns.comThe sending subdomain.
km1._domainkeyCNAMEA matching host under klaviyodns.comDKIM for marketing mail. Transactional domains sign with kt1 and kt2.
km2._domainkeyCNAMEA matching host under klaviyodns.comDKIM, the second selector.
Either way
yourstore.comTXTklaviyo-site-verification=<public API key>Proves the domain is yours.
trkCNAMEdct.klaviyodns.comDedicated click tracking, together with a TXT record and SSL.

Click tracking has its own setup. Until you activate dedicated click tracking, which needs a CNAME at trk pointing to dct.klaviyodns.com, a TXT record and SSL, your links keep running through Klaviyo's shared click-tracking domain.

Unsubscribe headers and the rest

Klaviyo adds the one-click unsubscribe headers to marketing emails automatically, and its help article says there's nothing to set up for Google and Yahoo's one-click rule. On a live campaign both unsubscribe checks should pass. If a transactional flow email arrives without list headers, the report doesn't hold it to the bulk-sender checks at all.

Blocklist results for a pooled IP describe Klaviyo's pool. Klaviyo suggests a dedicated IP only from around a million emails a month, with a warm-up of 30 to 40 days, so most stores will stay shared.

Questions

Why did my second Klaviyo test never arrive?

Most likely Smart Sending. It skips anyone who received an email from you in the last 16 hours and is on by default for campaigns. Turn it off for the test campaign message.

Why does DMARC fail when SPF passes?

SPF passes for Klaviyo's shared sending domain, not your From domain. DMARC needs SPF or DKIM to pass on a domain that matches your From, and a branded sending domain gives you that.

No. Klaviyo replaces unsubscribe and preference links with placeholders in test sends, and its documentation is silent on the header. When unsubscribe matters, send a live campaign to a one-profile list.

Does a test send count against anything in Klaviyo?

Each test recipient counts toward your monthly preview email limit, 100 a month on the free plan. Klaviyo's article ties that limit to test sends, not to live campaigns.

Guides for other platforms

All integrations and guides →

Test an email now

One address, one email, valid for an hour. No account. The report builds itself as the checks finish.

Get a test address