Is customer email always included in the order object?

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_orders scope alone is insufficient for full customer data
  • Must add read_customers scope 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.

Summarized with AI on November 12. AI used: claude-sonnet-4-5-20250929.

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.

Hi @EricH2

Email is not a required field. You can have a look at the screenshot below.

Thank you.

Are there any good ways of linking an order to a customer based on the orders_create webhook response data?

@EricH2

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.

1 Like

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.

1 Like

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.

https://shopify.dev/docs/api/usage/access-scopes

1 Like

@LuffyOnePiece

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?