Since the new Category Specific criterias for SMS Marketing apps have been released, we are having quite an hard time with our Built For Shopify status, and the support is not helping us at all so I hope this will be a better place to find a solution for our doubts.
At the moment, we can’t find an easy solution for the following two points:
Has made Visitor API calls in the last 30 days
Has used the customerCreate and customerUpdate mutations in the last 30 days
For the Visitor API calls , we provide a theme extension where customers are able to subscribe to back in stock notifications:
We collect only the phone number, since it is just the data we operate with, however the Shopify.analytics.visitor() API looks like require the email field as well:
Shopify.analytics.visitor(
{
email: 'someEmail@example.com',
phone: '+1 555 555 5555',
},
{ appId: '1234' },
);
Is the email field required indeed? Requesting it may result in a lower subscription since it requires the customer to input more data.
For the last point, our application does not have any customer creation/update interface, because we read all the data directly from Shopify.
We update just the sms marketing consent, running a customerSmsMarketingConsentUpdate mutation.
How should we move with this point? Shouldn’t the customerSmsMarketingConsentUpdate mutation be required instead of the customerCreate and customerUpdate mutations?
Please advise, we want to follow Shopify guidelines.
Hi @nullndr
It does look the email field in the visitor method may be required, if you use it without the email field, are you seeing successful visitor results?
Shouldn’t the customerSmsMarketingConsentUpdate mutation be required instead of the customerCreate and customerUpdate mutations?
Will dig into this on my side
Hi @Liam-Shopify ,
It does look the email field in the visitor method may be required, if you use it without the email field, are you seeing successful visitor results?
How can we test this? As for the docs we should first deploy the extension and then we will be able to have the data:
After integrating successfully, you’ll need to inform Partner Support for the data to be processed. Failure to do so will mean that the data is not utilized by the merchant’s shop.
Quick note on the Shopify.analytics.visitor() method - we had to dig into this recently for our own app and thought the findings might help here.
The Checkout UI Extensions API docs define the method as:
visitor(data: { email?: string; phone?: string; })
So both fields are optional individually, and the behavior appears consistent in the Web Pixels storefront version as well.
We confirmed this on the storefront by running:
Shopify.analytics.visitor();
which throws:
Uncaught VisitorError: Visitor must have one of phone or email.
So unlike the UI Extension version (which returns a Promise), the storefront version fails synchronously if neither field is provided.
This strongly suggests that the method requires at least one (email or phone) to be present - but you should not need both.
Waiting for official confirmation anyway
1 Like
MarkT
July 30, 2025, 8:51pm
5
Either phone or email is fine and both are not required, were you able to test it?
MarkT
July 30, 2025, 8:53pm
6
As for the other question:
customerSmsMarketingConsentUpdate is focused on consent info.
customerCreate and customerUpdate functions are used to check that they are syncing back customer records as part of 5.13.2 Sync customer data for SMS marketing apps
Thank you for going over the docs and will review other details on this thread.
customerCreate and customerUpdate functions are used to check that they are syncing back customer records as part of 5.13.2 Sync customer data for SMS marketing apps
What if an app does not have any customer creation/update interface? We sync customers directly with a bulk query .
Is there any news regarding this? We tried to manually run some customerUpdate but the point has not been flagged yet