Hello,
I am experiencing an issue with Customer webhooks in Production for my Square application “Sync Mailjet”.
The webhook subscription is enabled in Production and is subscribed to the following events:
customer.created
customer.updated
The notification URL is a WordPress REST API endpoint on our website.
The webhook endpoint itself appears to be working correctly:
- When using “Send test event” from the Square Developer Console with
customer.created, the request successfully reaches our endpoint and returns HTTP 200 OK.
- The event also appears correctly in Webhooks → Logs.
However, real Customer events are not being triggered/delivered.
I have tested several scenarios:
- Created a new customer manually from the Square Customer Directory.
- Updated an existing customer from the Square Customer Directory.
- Created a new customer using API Explorer → Customers → Create customer, in Production, explicitly using the Production access token for the Sync Mailjet application.
- The
CreateCustomer request returned HTTP 200 and the customer was successfully created in our Square account.
In all these cases, no customer.created or customer.updated event appears in Webhooks → Logs.
I also enabled the Events API using Events → Enable events, then created another customer via CreateCustomer. Searching for customer.created afterwards still returned no event.
So at this point:
Test webhook event → HTTP 200 / works correctly
Real customer.created → no webhook event
Real customer.updated → no webhook event
Could you please check whether there is an issue with the association between our application and merchant account, or with Customer webhook event generation/delivery in Production?
I can provide the Application ID, Merchant ID, customer IDs and timestamps of the tests if required.
Thank you in advance for your help.
Could you please check the following:
CUSTOMERS_READ permission: In the Developer Console, open Sync Mailjet → OAuth and confirm CUSTOMERS_READ is in the app’s scopes. If the app connects to the seller account via OAuth, you’ll need to re-authorize after adding the scope; existing tokens keep the permissions they were granted at authorization time, so adding the scope alone won’t retroactively fix an existing connection. Alternatively, let me know if you are using personal access tokens.
- Merchant association: Confirm the merchant ID whose Customer Directory you’re editing matches the merchant the Production token is scoped to. Call
RetrieveMerchant (or check the CreateCustomer response context) with your Production token and compare it against the account where you created the customers. A mismatch would explain the silence.
- Subscription environment and API version: Confirm the subscription is on Production (not Sandbox) and that its API version is 2021-02-26 or later, since customer webhooks were introduced in that version. An older pinned version won’t emit these events.
If all three check out, then please do share the Application ID, Merchant ID, the customer IDs, and UTC timestamps of your test creations, along with the CreateCustomer request ID if you have it. With those we can trace whether the events were generated server-side and confirm whether the app/merchant association is intact.
Hi Ashley,
Thank you for your reply.
We managed to resolve the issue in the meantime.
We have now successfully tested both customer.created and customer.updated events in Production. The webhook events are being generated correctly and are returning HTTP 200 responses, and the customer data is successfully reaching our Mailjet integration.
Everything is now working as expected.
Thank you for your help and for the detailed troubleshooting steps.
Best regards,
Frédéric