Shopify integration
Real customers, real inboxes, on Shopify.
Abandoned-cart emails, order confirmations and newsletters all depend on the address typed at sign-up. Verifyre validates it on the storefront and confirms it server-side.
What it does
Verifyre and Shopify, together.
Storefront forms
One script tag in theme.liquid covers the newsletter block, the contact page and account registration: a tick for a good address, a correction for typos, a block for dead mailboxes.
Checkout and new customers
Shopify's checkout does not load theme scripts, so verify server-side from the customers/create or orders/create webhook and tag customers whose address bounced.
Clean the existing base
Export customers as CSV, verify the list in Verifyre, and re-import tags or sync through Klaviyo or Omnisend, both of which connect directly.
Setup guide
Set up Shopify in 3 steps.
You will need a Verifyre account (free, 100 credits) and an API key from Settings, then API keys.
Add the widget to your theme
In Online Store, Themes, Edit code, open layout/theme.liquid and paste the snippet before </body>. The selector covers Shopify's standard newsletter and customer email fields; add your own selectors for custom forms.
liquid{% comment %} Verifyre live email validation: newsletter, contact and account forms {% endcomment %} <script src="https://verifyre.co/widget.js" data-key="vfy_live_YOUR_API_KEY" data-selector="input[type=email], input[name='contact[email]'], input[name='customer[email]']" data-block="true" async></script>Verify new customers at the source
Create a webhook in Settings, Notifications for customers/create pointing at your server (or a Make or Zapier scenario), and call the API with the customer's email. Tag customers whose address cannot receive mail so marketing excludes them.
javascript// Node, run on a server that receives Shopify's customers/create webhook app.post("/shopify/customers-create", async (req, res) => { const email = req.body.email; const r = await fetch("https://verifyre.co/api/v1/verify?email=" + encodeURIComponent(email), { headers: { Authorization: "Bearer " + process.env.VERIFYRE_KEY }, }).then((x) => x.json()); if (r.status === "undeliverable") { // Tag the customer in Shopify so marketing excludes them await shopify.customer.update(req.body.id, { tags: "verifyre-undeliverable" }); } res.sendStatus(200); });Clean what you already have
Export your customers (Customers, Export) and upload the CSV to Verifyre, or connect Klaviyo or Omnisend directly from Integrations and verify the synced list there. Download the cleaned file and update tags in bulk.
Write-back
What gets written back to your stack.
Verification only reads. Writing results back is a separate step you trigger after reviewing the counts, and nothing is ever deleted without your say-so.
- On the storefront: a hidden verifyre_status input in each form and a block on undeliverable addresses when data-block is true.
- From the webhook route: whatever you choose, typically a customer tag such as verifyre-undeliverable that segments and flows can exclude.
Shopify FAQ
Shopify questions
Can the widget run on the checkout page?
Does this work with Shopify Flow?
Will the key in theme.liquid be visible?
More like this