Skip to content

Verify Shopify customer emails and order shipping addresses

updated · October 14, 2026

Check new Shopify customers' emails and each order's shipping address through Zapier or Make, then tag them. Why checkout is out of reach and there is no app.

Mechanism
Through Zapier or Make, after the customer or order exists
Works today
Yes, with Webhooks by Zapier or Make's HTTP module
In checkout
Not available
Auth
Secret API key in the verification step
Cost
1 credit per deliverable or risky email and per valid address; undeliverable emails free within fair use, the rest free

Two things are worth saying plainly before the steps. The Spaw form helper is a script for pages you control, and Shopify checkout is not one of them: checkout does not load storefront scripts, so the helper cannot check the email field there. And Spaw does not offer a Shopify app. What works is verifying customers after Shopify has created them, through a Zap or a Make scenario, and tagging them so your email tool and your staff know which addresses are real. The same route checks the shipping address on each order once it is placed. Order confirmations still go out the moment the order is placed; the verdict protects everything that comes after.

Verify new customers

  1. Create a secret API key on the API keys page of your Spaw dashboard.
  2. In Zapier or Make, start with the Shopify trigger for a new customer. A new-order trigger works too if you only care about buyers rather than account sign-ups.
  3. Add the verification step: a Webhooks by Zapier POST or a Make HTTP request to https://spaw.co/api/v1/email with the header Authorization: Bearer sk_live_… and this body, mapping the customer's email:
{
  "email": "[email protected]"
}

The Zapier page and the Make page show the step field by field. When the Spaw apps for those platforms are listed, it becomes a Verify Email action with a saved connection.

  1. Add the Shopify action that updates a customer and set tags from data.deliverable, for example email-deliverable, email-risky or email-undeliverable. A customer note can carry data.reason and data.did_you_mean for staff.
  2. Test by creating a customer with [email protected], a free test address that answers a fixed result and never appears in your history.

If your marketing runs on Klaviyo, the Klaviyo page puts the verdict on the profile instead, where segments and flows can use it directly.

Check the shipping address after the order

The same route checks the address an order will ship to. It runs after checkout, never inside it: the order is already placed by the time the answer arrives, so the result is a tag for whoever packs the parcel, not a gate the customer sees. The decision behind the tag is your account's shipping policy — which signals block, how high the score may go, whether a register must confirm the building — set once on the Spaw dashboard or through the API, so the Zap or scenario only reads the answer and never decides anything itself.

  1. In Zapier or Make, start with the Shopify trigger for a new order.
  2. Add a Webhooks by Zapier POST or a Make HTTP request to https://spaw.co/api/v1/address with the same Authorization: Bearer sk_live_… header, and map the order's shipping address into the separated parts:
Shopify shipping address Spaw field
address1 address_line1
address2 address_line2
company organization
city locality
province administrative_area
zip postal_code
country_code country
{
  "address_line1": "1 Spaw Test Street",
  "address_line2": "",
  "locality": "Springfield",
  "administrative_area": "Illinois",
  "postal_code": "99999",
  "country": "US"
}

Send the parts only, with no address key: when a written line is present the API reads the line and sets address_line1 and address_line2 aside. Leave out the customer's name and phone number as well, because nothing in the check needs them and nothing in the answer is about who lives at the address. The country is required, and Shopify's two-letter country_code is exactly the form the API takes. The region is the other way round: map province, the name, rather than province_code, because Shopify's codes for some countries — JP-13 for Tokyo, MH for Maharashtra — are not a form the postcode directory publishes, and a region it cannot match adds region_mismatch to the score.

  1. Add the Shopify action that updates the order and set its tags from data.ok_to_ship and data.blocked_by: address-ok when ok_to_ship is true, and when it is false address-hold plus address-hold- followed by blocked_by, for example address-hold-placeholder for a street typed as "asdf" or address-hold-invalid for an address that cannot stand as written. In Zapier the split is a Paths step or two Filters on ok_to_ship; in Make it is a router with a filter on each route. An order note can carry data.formatted, the address the way its country writes it, for the person checking the label.
  2. Test with the order above. 1 Spaw Test Street, Springfield, IL 99999 is one of five test addresses that answer a fixed result under your policy, cost no credits and leave no repeat marker, so the ok branch can be wired before any credit is spent.

When the Spaw apps for Zapier and Make are listed, the request step becomes the Validate Postal Address action in Zapier or the Validate a Postal Address module in Make. Both take the street as one written line, so map address1 and address2 into it and the city, province and postcode into their own inputs.

Three things the tag does not say. It does not confirm that post arrives: that answer is licensed and not enabled, so deliverability_checked comes back false and the tag reflects only the open data and your policy. It is not a verdict on the customer: a mailbox shop is a legitimate delivery point for many people, which is why mail_drop passes under the default policy unless you add it. And an address missing from a register is not evidence that it does not exist, except under a register whose coverage is complete. The address lookup documents every field the answer carries.

Clean the existing customer list

Export customers to CSV, run the email column through a bulk verification on the Spaw dashboard or with the bulk endpoint, and import the result back with the verdict column turned into tags. The result CSV keeps your original columns. Undeliverable rows also join your Spaw suppression list, so future runs answer them without a probe.

Shopify's newsletter sign-up forms on the storefront are theme pages, and the form helper can watch those inputs if your theme allows a script tag; the same applies to a contact page. Checkout is the exception. Customers who mistype at checkout are best caught by the tag flow above and a follow-up through another channel, such as SMS or a phone call, with the corrected address.

What to do with the verdict

Use the tags in customer segments. email-deliverable customers get the full marketing program. For email-risky, read the reason: catch_all means a business domain that accepts every address and the mailbox is unconfirmed, role means a shared inbox, disposable means a throwaway address that will not survive to the next campaign. Exclude email-undeliverable customers from marketing sends rather than deleting the record, because the order history matters and data.did_you_mean often names the address the customer meant.

Cost

Each new customer 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. Each order address that answers valid spends 1 credit; invalid addresses, the test addresses and repeats of the same address within seven days are free. Zapier and Make bill their own tasks. Bulk runs bill per processed row and verify duplicates once.

Related

markdown version: /integrations/shopify.md

Verify addresses the same way

The Spaw API runs every check described here on each lookup, with an SMTP handshake that never sends mail. 10 free lookups a month, no card required.

Get your API key

More integrations