I’m subscribed to the orders_create webhook, and I’m wondering if the email (customer email) field is guaranteed in the order object for online, not POS sales.
Topic summary
Core Issue:
A developer questions whether customer email is guaranteed in Shopify’s orders_create webhook payload.
Key Findings:
- Email is not a required field in order objects (confirmed with screenshot)
- Customer field also not guaranteed in all orders
- However, when shoppers provide phone/email at checkout (even without login), Shopify automatically creates a customer record and links it to the order
Recommended Approach:
- Use customer ID from the webhook response to link orders to customers
- This method simplifies tracking and improves order management efficiency
Access Requirements:
read_ordersscope alone is insufficient for full customer data- Must add
read_customersscope to access complete customer fields
Unresolved Challenge:
The developer is stuck updating access scopes during development—their app hasn’t been approved for network access yet, and deploying config changes creates new versions requiring app review. They need a method to update scopes without triggering the network access approval process.
Are there any good ways of linking an order to a customer based on the orders_create webhook response data?
In my experience, using the customer ID is an effective method to link orders. By extracting the customer ID from the orders_create webhook response, you can seamlessly connect each order to its respective customer in your system. This approach simplifies tracking and enhances the overall efficiency of order management.
I thought that the customer field wasn’t guaranteed, and therefore no way to consistently get a customer ID - https://shopify.dev/docs/api/admin-rest/2023-10/resources/order#resource-object?
When customers enter a phone number or email on the checkout page, a new customer is created during the order process if they’re not logged in. This newly created customer is then linked to the order, streamlining the overall order creation and customer management process.
Will I get all customer fields with the read_orders access scope, or do I also need customer_read_orders scope?
You need to add read_customers scopes.
I’ve updated my shopify.app.appName.toml file to include the read_customers access scope, and tried to deploy the config changes with npm run shopify app deploy. It creates the new version, but doesn’t deploy it because I haven’t been approved for network access. I’m still in development and not ready to have the app reviewed for publishing. How can I update access scopes without requesting network access?

