Install Senderz from the Shopify App Store or connect a store from inside Senderz, then sync customers, orders, products and storefront behaviour.
Shopify is the deepest store integration in Senderz. Once connected, it syncs your customers and order history, streams live store events into automations, keeps a product catalog in sync, serves popups through a theme app embed, and can bill your Senderz plan on your Shopify invoice.
What is live today. Connect from the App Store or from inside Senderz, customer sync, order
back-fill, live order and customer webhooks, product catalog sync, the storefront web pixel, the
theme app embed for popups, Shopify billing for plans and SMS credit packs, and the mandatory
privacy webhooks. All of this is built and running. The public App Store listing itself is still
pending, so today you install through the link Senderz gives you rather than by searching the
Shopify App Store.
You need a Shopify account that can install apps and approve app charges, and a Senderz account where you are the owner or an admin of at least one workspace. A viewer, editor or designer cannot connect a store.Keep the store’s permanent your-store.myshopify.com address handy. A custom storefront domain such as example.com is not the identifier Shopify uses during connection.
Find the permanent address in Shopify under Settings, then Domains. It always ends in
.myshopify.com, even when shoppers visit a custom domain.
If you plan to publish Senderz popups on the storefront, your published theme must support Shopify app embeds. You never paste a script into the theme and you never edit Liquid files.
This changed on 6 August 2026. Read it before you install, because the old behaviour is what most people expect.Installing the app from Shopify proves you control that shop. It does not prove anything about a Senderz identity, so Senderz no longer creates an account, matches an account, or verifies an email address from your Shopify store email.What happens instead:
1
Shopify hands off to Senderz
Approving the install parks a pending connection that stays valid for 30 minutes, then opens
Senderz in a new browser tab.
2
You sign in or register normally
You go through the normal Senderz sign-in, including two-factor authentication if you use it, or
you register a new account and verify your email. Your store email is used only to pre-fill the
email field. It never signs you in on its own.
3
You choose the destination workspace
Senderz shows a Connect screen headed with your store name, listing every workspace where
you are an owner or admin, plus an option to create a new one. You pick the workspace that
should receive this store’s customers, orders and storefront events.
4
You confirm before anything is imported
A confirmation dialog restates the store address and the destination workspace side by side.
Nothing is imported and no charge is created until you confirm.
The workspace you pick owns the imported audience, store events, popups, segments and automations
from that store, and it becomes the workspace billed through Shopify. Moving a store afterwards
means disconnecting it from the first workspace.
If the handoff sits for more than 30 minutes you will see Shopify installation expired. Reopen Senderz from your Shopify admin to start a fresh connection.
Install the Senderz app in your Shopify admin and approve the requested permissions. Shopify
then opens Senderz in a new tab and you complete the identity and workspace steps above. You
never type your shop domain, because Shopify already told us which store you are installing on.This path is the one that also switches your Senderz billing to Shopify.
Open Integrations in the Senderz sidebar, find the Shopify card and click Connect. Enter
the store’s .myshopify.com address and click Connect with Shopify.Senderz checks that the store exists, then opens Shopify’s approval screen in a popup. Review
the permissions and approve. The popup closes by itself and the first import starts in the
background.You are already signed in and already in a workspace on this path, so there is no workspace
picker. The store is connected to the workspace you are currently in.
Allow popups for Senderz before using the in-app path. If your browser blocks the popup you will
see Your browser blocked the popup. Allow popups and try again.
A Shopify store can be connected to a single Senderz workspace at a time, and a single workspace can hold one Shopify store. The two connect paths enforce that differently, and the difference matters.
Path
What happens if the store is already connected elsewhere
Install from Shopify
The connection is refused with “This Shopify store is already connected to another workspace. Disconnect it there before reconnecting.” Nothing is moved.
Install from Shopify, into a workspace that already holds a different store
Refused with “This workspace already has a different Shopify store connected.”
Connect from inside Senderz
The store is moved. It is disconnected from the previous workspace and reconnected to yours.
Connecting a store from inside Senderz when it already belongs to another workspace will take it
over. The old workspace stops receiving orders and customer updates and its stored Shopify
credential is removed. Contact support before moving a live store so your history and audience
ownership are handled deliberately.
Contacts, orders and analytics already recorded in the old workspace are kept. They simply stop receiving new store data.
After connecting, open Senderz inside your Shopify admin. The Setup & analytics card is the single place to confirm everything is wired. Work down the rows.
1
Shopify connection
Should read Connected. If it reads Reconnect required, your store access has lapsed.
Click Reconnect Shopify and approve again.
2
Required scopes
Should read Approved. If it reads Permissions required, the row lists exactly which
permissions are missing. Click Approve permissions, accept them in Shopify, then come back.
3
Web pixel
Should read Connected. Senderz creates and repairs its own pixel, so the row may also
report that it created the missing pixel or refreshed its settings. Both of those are healthy.
If setup failed, use Try pixel setup again. Only reconnect Shopify when the row says
permissions are required.
4
Senderz App Embed
Click Enable in theme editor. Shopify opens your current theme editor on the App embeds
panel. Switch on Senderz Popup, then click Save in the theme editor.Return to the Senderz tab and click Check again. The row should change to Enabled. The
check reads your published theme, so enabling the embed on an unpublished theme will not clear
it.
5
Initial data import
Shows the current status and the number of orders processed so far, with the history window
underneath. You can close this page while it runs.
The remaining rows are read-only evidence that data is arriving. They are covered in Check that data is arriving.
Enabling the app embed makes storefront features available. It does not publish a popup. Build,
target and publish popups in the full Senderz app. See
Installing popups on your store.
The Senderz app embedded in Shopify admin is a small shell, not the whole product. It covers connecting, checking setup, watching data arrive and choosing a plan. Campaigns, automations, popups, segments, templates and reporting all live in the full Senderz app.It has three screens in the left navigation:
Home, with your plan, store, sync state, contact usage and the Setup & analytics card.
Plans & pricing, where you pick or change a plan.
Help & FAQ, the built-in answers.
Open Senderz on the home screen takes you to the full app in a new tab. While the first import is running you also get Continue setup, which drops you into onboarding with that import already in view. Manage Billing goes to the plan screen.
Sign-in is per browser. Opening the full app in a new tab uses your normal Senderz session, so if
you are signed out there you sign in as usual.
Requested on the install, but no Senderz feature uses them today.
Shopify also grants read-level customer access automatically alongside the customer permission, which is what the Required scopes row checks.
A new permission is never granted to an existing installation automatically. When Senderz adds
a permission, already-installed stores keep the old set until someone reconnects. If a feature
reports missing permissions, reconnect the store and approve the full list.
Customer email, name and phone are Protected Customer Data in Shopify’s terms. Shopify has to approve the app for those fields, and the approval has to reach your individual installation.If it has not, the customer sync stops with Shopify needs to approve customer data access and points you at the Shopify Partner Dashboard. The store stays connected and the next sync is expected to succeed once approval lands. No merchant action is needed beyond waiting, unless you own the Partner account making the request.
The 60 day limit is not a Senderz limit. Shopify’s standard order permission only exposes the
most recent 60 days. Everything you may have read about a 730 day import applies only after
Shopify grants the separate read_all_orders permission to your installation.
The Initial data import row tells you which one you are on:
60-day history · read_all_orders approval required for 730 days means you are on the standard window.
730-day history enabled means the extended permission is granted and Senderz will pull up to two years.
Shopify approving the app and the permission reaching your specific store are related but separate. If you still see the 60 day message after approval, reconnect Shopify so your store can grant the updated permission.
Existing customers import on connect. New and updated customers arrive by webhook afterwards.
Marketing consent is read from Shopify’s own subscription state, never assumed.
Orders
The last 60 days of order history import by default, or up to 730 days with the extended
permission. Live orders then drive the full event pipeline.
Products
The catalog syncs when you connect and again every hour, so product data stays current for
templates, coupons and product events.
Storefront behaviour
A Shopify web pixel reports product views, cart activity, collection views, searches and started
checkouts, linked to identified contacts.
Senderz reads each customer’s Shopify marketing state per channel. A customer is only marked subscribed for email if their Shopify email marketing state is subscribed, and the same applies independently to SMS. Everyone else is stored so their order history and segmentation work, but they receive no marketing.A store signal can never re-subscribe somebody who opted out directly with Senderz. See Consent.
A single back-fill run imports at most 25,000 orders. A run that reaches the ceiling is reported as incomplete with the reason order_limit_reached rather than stopping quietly, so you can see it happened.On the extended 730 day window, Shopify processes the export as a background job and Senderz polls it. A large catalogue of history can legitimately sit in a running state for a long time. Leave it alone. The row updates as Shopify makes progress.
Beyond live webhooks, Senderz re-runs the customer sync for every connected Shopify store once a day, overnight. It catches anything a webhook delivery missed.The daily run covers customers only. Order back-fill and product sync are re-run when you trigger a sync yourself, not on the daily pass.To force everything now, open Integrations, then the Shopify card, and use Sync now. The Historical data card on the same page has a Re-import action for pulling customers and orders again after a long disconnection.
Shopify occasionally fails to deliver a webhook. Every 30 minutes, Senderz re-pulls recently changed orders for every connected store, with a 10 minute overlap so nothing falls between runs, and records anything that never arrived.You see this as Last reconciliation in the Setup & analytics card. A recent timestamp means the safety net ran. Not run yet on a store connected minutes ago is normal.
An order recovered by reconciliation lands in your reports, revenue and customer timeline, but it
does not trigger automations. Reconciliation exists to keep your numbers correct, not to fire
a post-purchase flow hours late. Live webhooks are what start automations.
Open Integrations, then the Shopify card, and use the Customer sync list card to pick a Senderz list that every customer synced from this store joins.Leave it on Do not file synced customers if you do not want one. Joining a list is not consent. What you may send is still decided by each contact’s own email and SMS opt-in.
These are two separate pieces and they do different jobs.
Web pixel: storefront behaviour
Senderz creates and maintains its own Shopify web pixel. You do not install it and there is
nothing to paste. It reports product views, add to cart, remove from cart, cart views, collection
views, searches, page views and started checkouts.Shopify runs the pixel in its sandboxed environment and only releases events a visitor’s privacy
choice allows. A visitor who declines analytics consent produces no storefront event by design,
so pixel totals are legitimately lower than raw storefront traffic.
Theme app embed: serving popups
The Senderz Popup app embed loads the Senderz storefront runtime on your published theme.
Popups cannot render without it.Turn it on once under Online Store, then Themes, Customize on your published theme,
then App embeds. Switching your published theme later can require enabling it again on the
new theme.The embed has one advanced setting for the Senderz address. Leave it on its default unless
Senderz support asks you to change it.
Shopify webhooks map to Senderz events that can trigger automations and outbound webhooks.
Shopify webhook
Becomes
orders/create
Order placed, and order paid when the order is already paid
orders/paid
Order paid
orders/cancelled
Order cancelled
orders/fulfilled
Order fulfilled
orders/partially_fulfilled
Recorded, no automation trigger
refunds/create
Order refunded
fulfillments/create, fulfillments/update
Shipment confirmed, out for delivery or delivered, based on the shipment status Shopify sends
checkouts/create, checkouts/update
Checkout started, which is the abandoned checkout capture
customers/create
Contact created
customers/update
Contact updated
Placing an order removes the customer from cart recovery automations, so somebody who buys stops
receiving abandoned cart reminders.
Shipment events carry the tracking number, carrier and tracking URL where Shopify provides them, so shipping notifications can include them. See Flow triggers.
The Setup & analytics card carries six timestamps: Last storefront event, Last popup impression, Last popup conversion, Last order placed, Last order paid and Last reconciliation.A newly connected store can correctly show No event yet until somebody actually performs that action.For an end to end check:
1
Open the storefront in a private window
Use your published storefront, not a preview link.
2
Accept the privacy prompt if your store shows one
Declining analytics consent will intentionally produce no storefront event, which looks like a
broken pixel but is not.
3
View a product and add it to the cart
Both are storefront pixel events.
4
Trigger a popup if you have one published
Open it, and submit it if you want to test conversions.
5
Return to Senderz in Shopify admin and click Check again
The relevant timestamp should update within a moment.
You can also see the same event counts, with today’s totals, on the Shopify card under Integrations in the full Senderz app.
Shopify access is time limited by design. The working credential lasts about an hour and Senderz refreshes it silently in the background. The right to refresh lasts 90 days.That means a store nobody opens and nothing syncs for 90 days will eventually stop, and you have to reconnect it. In normal use the daily sync and live webhooks keep it refreshed, so this mostly affects dormant stores.
This changed on 13 August 2026. There is no Shopify hosted plan page in the flow any more. You
pick your tier inside Senderz and approve the charge on a Shopify confirmation screen.
When a store is connected by installing the app, that workspace is billed through Shopify and the charge appears on your regular Shopify invoice. Senderz never asks for a card in the embedded app.
1
Open Plans & pricing in the embedded app
From the Senderz app inside Shopify admin, use Plans & pricing in the left navigation, or
View plans on the home card.
2
Review the recommended tier
Senderz recommends the smallest tier that fits your current active contact count and shows its
monthly price.
3
Accept the contact-limit terms
Tick the acknowledgement that reaching your contact limit requires approving the next plan in
Shopify, and that overflow contacts stay synced but are held out of marketing until you do.
4
Approve the charge in Shopify
Click Choose a plan in Shopify, or Change plan in Shopify if you already pay. Shopify
shows its own approval screen. Approve it and you land back in Senderz with the plan active.
Plans bill every 30 days. Changing tier replaces the existing subscription rather than stacking a second one, so a downgrade does not bill you twice in the same period.
SMS credits are prepaid packs, not part of your plan. On a Shopify-billed workspace they are charged as a Shopify one-time charge, on the same invoice, and credits land in your wallet once Shopify confirms the charge. See SMS.
If your workspace already pays through the Senderz web checkout and you then install the Shopify app, the workspace is moved onto Shopify billing. This is required by Shopify’s rules for installed apps.
The move does not cancel your existing web subscription. Contact Senderz support after installing
so the old subscription is cancelled or refunded and you are not billed twice.
Connecting a store from inside Senderz for sync only does not move you onto Shopify billing.
Uninstalling the app in Shopify ends Shopify billing, because the subscription belongs to the installation. The workspace returns to platform billing and its plan is reset to unpaid, which stops marketing sends until you choose a plan again.Your contacts, order history and analytics are kept. Reinstalling reconnects the store, and you then pick a plan again.
Senderz gathers what it holds for that customer, including the profile, the consent history count
and the message history count, and emails it to the workspace owner with the subject “Customer
data request from your store”. Nothing is changed or deleted.
Customer erasure
The matching contact is anonymised, not hard deleted. Email, phone, name, timezone, locale,
tags, notes, custom properties and consent evidence are cleared, both channels are set to
unsubscribed, and the contact is soft deleted. Message subjects and metadata are scrubbed.Anonymising rather than deleting keeps your aggregate analytics and audit trail intact.
Shop erasure
Applied across every contact in the workspace, along with removing the Shopify connection and its
stored credential.
Uninstalling the app on its own does not erase your Senderz workspace. If you want the workspace closed as well, contact support so the correct store and retention request are confirmed.
The embedded app ships its own FAQ under Help & FAQ in the left navigation, covering getting started, the web pixel and app embed, customers and syncing, consent and compliance, and plans and limits. It is the fastest answer while you are already in Shopify admin.
Your store access lapsed. Click Reconnect Shopify and approve again.
Required scopes: Permissions required
The row lists exactly what is missing. Click Approve permissions and accept in Shopify. Existing installations never receive new permissions automatically.
Web pixel: Pixel permissions required
Approve the listed permissions. If you previously declined them, reconnect Shopify and approve the full list.
Web pixel: Couldn’t finish pixel setup
Click Try pixel setup again. If it keeps failing, reconnect Shopify. If the row says a configuration problem, use Contact support from the same row.
Senderz App Embed: Not enabled yet
Click Enable in theme editor, switch on Senderz Popup, click Save, return to Senderz and click Check again.
App embed not found
Confirm you are editing the connected store’s published theme and that Senderz is still installed. Reload Senderz from Shopify admin and retry.
Unavailable on the published theme
Your published theme does not support this embed. Update or switch to a theme that does, publish it, then enable Senderz on the published theme.
Shopify app did not finish loading
Reload Senderz from Shopify admin, then click Check again.
Shopify needs to approve customer data access
Protected Customer Data approval has not reached your installation yet. Wait for approval, then run the sync again. Reconnect Shopify if it is already approved.
Shopify installation expired
The 30 minute handoff window passed. Reopen Senderz from your Shopify admin to start a new connection.
This Shopify store is already connected to another workspace
Disconnect it from the other workspace first, then install again.
This workspace already has a different Shopify store connected
Pick or create a different workspace on the connect screen.
You need owner or admin access to a workspace
Ask an owner of the workspace to give you owner or admin access, or create your own workspace on the connect screen.
The install popup closes or is blocked
Allow popups for Senderz and try again.
Import stays incomplete
Check the reason on the Initial data import row. order_limit_reached means the run hit the 25,000 order ceiling. A long running extended history export is normal.
No storefront event appears
Confirm the web pixel is connected, test on the published storefront, accept analytics consent, perform a fresh action, then click Check again.
Last reconciliation shows a failure
Senderz retries automatically every 30 minutes. If the same error persists for hours, contact support.
Disconnecting from the Shopify card under Integrations does all of the following:
Stops customer and order sync and stops live store events.
Removes the store webhooks Senderz provisioned.
Revokes Senderz’s permission at Shopify, so reconnecting means approving the permissions again.
Deletes the stored Shopify credential.
Takes this store’s metric mappings out of service, keeping your own customisations so a reconnect restores them rather than reverting to defaults.
Returns the workspace to platform billing and resets the plan to unpaid.
Uninstalling Senderz in your Shopify admin has the same effect on syncing, plus it stops the theme embed and the web pixel from running.Your contacts, order history, analytics and audit trail are kept in both cases, so a deliberate reconnect does not destroy the workspace. Shopify privacy requests are handled separately and are the only path that clears personal data.