Klaviyo profiles arrive from storefront sign-ups, pop-ups and checkout, and a welcome flow fires within minutes. Verifying the address before that first send keeps bounces out of the account's reputation. Spaw has no Klaviyo app; the flow below uses Klaviyo's trigger in Zapier or Make, a verification step, and a profile update that stores the verdict as a custom property your segments can read. A second flow does the same for the phone number an SMS flow will use, and hands Klaviyo the E.164 form it requires.
Verify new profiles
- Create a secret API key on the API keys page of your Spaw dashboard.
- In Zapier or Make, start with the Klaviyo trigger for a new profile or a new list subscription.
- Add the verification step: a Webhooks by Zapier POST or a Make HTTP request to
https://spaw.co/api/v1/emailwith the headerAuthorization: Bearer sk_live_…and this body, mapping the profile's email:
{
"email": "[email protected]"
}
The Zapier page and the Make page list every setting. Once the Spaw apps for those platforms are listed, the step becomes a Verify Email action with a saved connection.
- Add the Klaviyo action that updates a profile, match on the email, and write custom properties from the response:
spaw_verdictfromdata.deliverable,spaw_reasonfromdata.reason, andspaw_risk_scorefromdata.risk_score. - Build a segment in Klaviyo where
spaw_verdictequalsundeliverableand exclude it from your flows and campaigns, or invert it and send only to profiles whose verdict equalsdeliverable. - Test by subscribing
[email protected], a free test address that answers a fixed result and is never logged.
Because the welcome flow may fire before the Zap finishes, add a short delay at the start of the flow, or make the first email conditional on the property being set. A few minutes is enough.
Clean an existing list
Export the list or segment to CSV, run the email column through a bulk verification on the Spaw dashboard or with the bulk endpoint, and import the result CSV back into Klaviyo with the verdict columns mapped to the same custom properties. The result keeps your original columns. Undeliverable rows also join your Spaw suppression list, so the next run answers them without a probe.
What to do with the verdict
Keep the decision in segments so it applies to every flow at once. deliverable profiles get the full program. risky profiles need the reason: disposable addresses are throwaway inboxes that will never convert, catch_all addresses are unconfirmed but often real, and role inboxes such as info@ are shared. undeliverable profiles should be suppressed in Klaviyo rather than deleted, because a filled data.did_you_mean is a customer who mistyped at checkout and can be reached through another channel, for example SMS, with the corrected address. For stores on Shopify, the Shopify page covers the customer-side flow.
Phone numbers for SMS
Klaviyo's profile API takes the phone number "in E.164 format", and its help centre adds that for API calls "Klaviyo only accepts the E.164 format" (Klaviyo's developer reference and its article on accepted phone number formats for SMS, both read 27 September 2026). A Zap or scenario that carries a number from a form, a CRM or a store into a profile therefore needs the E.164 form first, and the phone step returns it together with the checks.
- Give the phone step a Zap or scenario of its own, with a filter that continues only when a phone number is present, so the email flow is left as it is and a profile without a number skips the step (an empty
phoneis refused with a422). Place the step before the Klaviyo action when the number comes from another app, or after the new-profile trigger when it is already in Klaviyo: a Webhooks by Zapier POST or a Make HTTP request tohttps://spaw.co/api/v1/phonewith the same header and this body, mapping the number and, for numbers written without a calling code, the two-letter country:
{
"phone": "(202) 555-0100",
"country": "US"
}
country is an ISO 3166-1 alpha-2 code such as US or GB. A country name, or UK, is refused with a 422, and a number written with its + and calling code needs no country. Send the number and its country only, nothing else about the person. Once the Spaw apps are listed, the step becomes the Validate Phone Number action in Zapier and Validate a Phone Number in Make.
- Add a Paths step in Zapier or a router in Make on
data.valid. On the valid path, the Klaviyo action writes the profile's phone number fromdata.e164; on the other, it keeps what was typed in a custom property for someone to review. A filleddata.did_you_meanthere is a suggestion for that person to confirm, never a value to write over the number. - On both paths, write
spaw_phone_ok_to_sendfromdata.ok_to_sendandspaw_phone_blocked_byfromdata.blocked_byas custom properties. - In the SMS flow, add a conditional split on
spaw_phone_ok_to_sendafter the short delay described above, so a profile the Zap has not reached yet waits instead of receiving the message. - Test with +1 202 555 0100 and +1 202 555 0103, two documented test numbers that cost nothing: the first answers a valid mobile with
ok_to_sendtrue, the secondok_to_sendfalse withblocked_bydisposable, under the default SMS policy.
The step writes the phone number and two properties, nothing else. It never subscribes a profile to SMS or changes its consent: that stays with the form or checkout that collected the number. ok_to_send is your account's SMS policy applied to the answer, set once on the account so every Zap, batch and bulk run applies the same rules. It is a fraud and deliverability decision, not consent and not a do-not-call scrub. When it is false, blocked_by names the rule that decided it: invalid, opted_out (by default) for a number your suppression list holds as opted out, country, line_type, a signal such as disposable for a number published by an SMS-receiving website, where anyone can read a code sent to it, or risk_score. Every field is on the phone endpoint page.
Cost
Each new profile that answers deliverable or risky spends 1 credit; unverified answers and repeats within seven days are free, and undeliverable answers are free within a fair-use allowance. A phone lookup costs 1 credit when the number is valid; invalid numbers, unassigned blocks and repeats of the same number within seven days are free. Zapier and Make bill their own tasks. Bulk runs bill per processed row and verify duplicates once.