Clarification on Missing Shipping Address in Checkout Webhook

Hello,

I’m currently using the checkout/create and checkout/update webhooks to capture customer information during the checkout process. However, I’ve noticed that when a customer enters their billing address, the webhook payload often contains an empty shipping address, even though the shipping address was fully filled out on the checkout page.

Is this expected behavior from Shopify? Or is it a bug that the shipping address is not included in the webhook when the customer chooses to enter a billing address?

I would appreciate any clarification on this behavior and whether there’s a recommended approach to reliably capture the shipping address through webhooks in such cases.

1 Like

Hey @smartive :waving_hand: - thanks for reaching out here. I did some testing on my end and I wasn’t able to replicate the behaviour you reported here, for me the checkout/update webhook did trigger when I input a shipping address at checkout on my test shop.

Could you share an example of the JSON payload you’re receiving from our webhooks (if possible, including the headers/x-shopify-webhook-id), the steps you’re seeing or using in terms of inputting the address for when the issue occurs) as well as a screen recording of it happening if you’re able to share that (including what you’re seeing on the backend when it comes to the actual webhook payload body)?

Hope to hear from you soon - let me know if I can clarify anything on our end here :slight_smile:

Hi @Alan_G ,
Thank you for getting back to me!
The issue occurs when I uncheck the “Use shipping address as billing address” checkbox and enter a separate billing address.

As you can see, I’ve entered the shipping address information. However, in the CHECKOUTS_UPDATE webhook, the shipping_address field is still sent as empty.

Here is the webhook from Shopify:

{
  "id": 45460261601369,
  "token": "72d4ac4da982719d704366074623dce5",
  "cart_token": "Z2NwLXVzLWVhc3QxOjAxSlNEQTZWWFBFUloxUzMyNkhWNUFNUVdE",
  "email": "test@test.com",
  "gateway": null,
  "buyer_accepts_marketing": false,
  "buyer_accepts_sms_marketing": false,
  "sms_marketing_phone": null,
  "created_at": "2025-04-21T23:16:23+00:00",
  "updated_at": "2025-04-21T19:19:53-04:00",
  "landing_site": "/?_bt=eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaEpJaVIwWlhOMExXRndjQzF6YldGeWRHbDJaUzV0ZVhOb2IzQnBabmt1WTI5dEJqb0dSVlE9IiwiZXhwIjoiMjAyNS0wNC0xMVQxNjoxNzowNS4zNDlaIiwicHVyIjoicGVybWFuZW50X3Bhc3N3b3JkX2J5cGFzcyJ9fQ==--c6e2c82f54e01f152ed2fd28ec59cea57b0fa93e",
  "note": null,
  "note_attributes": [],
  "referring_site": "",
  "shipping_lines": [],
  "shipping_address": [],
  "taxes_included": false,
  "total_weight": 0,
  "currency": "VND",
  "completed_at": null,
  "phone": null,
  "customer_locale": "en-VN",
  "line_items": [
    {
      "key": "42097432920153",
      "fulfillment_service": "manual",
      "gift_card": false,
      "grams": 0,
      "presentment_title": "The Collection Snowboard: Hydrogen - tag2",
      "presentment_variant_title": "",
      "product_id": 7896431820889,
      "quantity": 1,
      "requires_shipping": true,
      "sku": null,
      "tax_lines": [
        {
          "position": 1,
          "price": "60",
          "rate": 0.1,
          "title": "VAT",
          "source": "Shopify",
          "compare_at": null,
          "zone": "country",
          "channel_liable": false,
          "identifier": null
        }
      ],
      "taxable": true,
      "title": "The Collection Snowboard: Hydrogen - tag2",
      "variant_id": 42097432920153,
      "variant_title": "",
      "variant_price": "600",
      "vendor": "Hydrogen Vendor",
      "unit_price_measurement": {
        "measured_type": null,
        "quantity_value": null,
        "quantity_unit": null,
        "reference_value": null,
        "reference_unit": null
      },
      "compare_at_price": null,
      "line_price": "600",
      "price": "600",
      "applied_discounts": [],
      "destination_location_id": null,
      "user_id": null,
      "rank": null,
      "origin_location_id": null,
      "properties": {}
    }
  ],
  "name": "#45460261601369",
  "abandoned_checkout_url": "https://test-app-smartive.myshopify.com/62417633369/checkouts/ac/Z2NwLXVzLWVhc3QxOjAxSlNEQTZWWFBFUloxUzMyNkhWNUFNUVdE/recover?key=0324d65ffe7009de18e32487790dbe56&locale=en-VN",
  "discount_codes": [],
  "tax_lines": [
    {
      "price": "60",
      "rate": 0.1,
      "title": "VAT"
    }
  ],
  "presentment_currency": "VND",
  "source_name": "web",
  "total_line_items_price": "600",
  "total_tax": "60",
  "total_discounts": "0.00",
  "subtotal_price": "600",
  "total_price": "660",
  "total_duties": "0",
  "device_id": null,
  "user_id": null,
  "location_id": null,
  "source_identifier": null,
  "source_url": null,
  "source": null,
  "closed_at": null,
  "customer": {
    "id": 7910106628185,
    "email": "test@test.com",
    "accepts_marketing": false,
    "created_at": null,
    "updated_at": null,
    "first_name": "Brian",
    "last_name": "Pham9",
    "orders_count": 0,
    "state": "disabled",
    "total_spent": "0.00",
    "last_order_id": null,
    "note": null,
    "verified_email": true,
    "multipass_identifier": null,
    "tax_exempt": false,
    "phone": null,
    "tags": "",
    "currency": "VND",
    "accepts_marketing_updated_at": null,
    "admin_graphql_api_id": "gid://shopify/Customer/7910106628185",
    "default_address": {
      "id": null,
      "customer_id": 7910106628185,
      "first_name": null,
      "last_name": null,
      "company": null,
      "province": null,
      "country": null,
      "phone": null,
      "name": " ",
      "province_code": null,
      "country_code": null,
      "country_name": null,
      "default": true
    },
    "last_order_name": null,
    "marketing_opt_in_level": null
  }
}

Here is header:


x-shopify-webhook-id	885d8797-c5e1-4264-a575-4c4fa769cede
x-shopify-triggered-at	2025-04-21T23:19:53.985774183Z
x-shopify-topic	checkouts/update
x-shopify-shop-domain	test-app-smartive.myshopify.com
x-shopify-hmac-sha256	75WMlcsDmibpFeueZHoDOxOeFbsi6DWCRDO7zpVbMRs=
x-shopify-event-id	68fc879e-da1c-4ec2-b650-4b919bd0ee38
x-shopify-api-version	2025-01
content-type	application/json
accept-encoding	gzip;q=1.0,deflate;q=0.6,identity;q=0.3
accept	*/*
content-length	3095
user-agent	Shopify-Captain-Hook
host	webhook.site

Update:
I’m currently experiencing the same issue on my test store, even though the checkbox “Use shipping address as billing address” is checked.
This is webhook id: x-shopify-webhook-id 885d8797-c5e1-4264-a575-4c4fa769cede

Hey @Smartive - thanks for sharing all the info here. I’m still not able to replicate the issue on my end. When I uncheck “use shipping address as billing address” and enter a separate billing address, it still populates the shipping_address field for me.

Just out of curiosity, are you unchecking that box before inputting the shipping address and then trying to input the shipping address?

If that’s the issue I can still take a look using the webhook ID you shared, but I just wanted to clarify the step by step process there - hope to speak with you soon!

Hello @Alan_G ,
I’m confident that I entered the shipping address when testing these cases. I had tested it multiple times before posting this thread, and you can verify it using my webhook ID.
However, I’ve just tested it again today and I’m no longer able to replicate the issue, it seems to have been resolved.

1 Like

Hey @smartive - thanks again for following up. Glad to hear it seems to be resolved. I’ll go ahead and mark this thread as solved for now - but just ping me here if you see the issue pop up again and I’d be happy to take a look.

Hi @Alan_G ,
Thank you so much for your help!

1 Like