Yarik
Yarik

Reputation: 428

BigCommerce API Webhook event payload with address created/updated is missing customer_id

From the WebHook documentation for a store/customer/address/updated/store/customer/address/created events should have following payload:

{
    "scope": "store/customer/address/created",
    "store_id": "1025646",
    "data": {
        "type": "customer",
        "id": 60,
        "address": {
            "customer_id": 32
        }
    },
    "hash": "416ca9c01779515de91824aa1cac9012ee691e7a",
    "created_at": 1561481620,
    "producer": "stores/{store_hash}"
}

However, in the logs we don't see the "address" part. The payload is always coming as:

{
  created_at: 1573847377
  data: {
   id: 2246136
   type: "customer"
  }
  hash: "%hash%"
  producer: "%producer%"
  scope: "store/customer/address/updated"
  store_id: "%storeid%"
 }

And the payload.data.id is not the customer id, as fetching customer by given ID always results in 404. Fetching address with given id is also impossible, as the resource url should include customer_id which is absent in the response.

Contacted BigCommerce support already, but maybe someone had solved this issue already?

Saw relevant question in the BigCommerce's community, but it was also unanswered.

Upvotes: 0

Views: 287

Answers (2)

luckyStar
luckyStar

Reputation: 101

I have encountered a similar problem, and believe I have isolated the conditions under which it occurs.

I am building an app with MEAN stack that uses bigcommerce API/webhooks.

When I tried to create a customer address in-app, it makes an API request to BigCommerce and creates customer addresses in BigCommerce. Via the webhooks, I have implemented the store_customer_address_created hook event.

So there are two cases when the address webhook event is being triggered:

  1. When the customer address is created in-app and it sends an address creation request via the API to BigCommerce.
  2. When the customer address is directly created in the BigCommerce admin.

Here are the responses from those:

    "scope": "store/customer/address/created",
    "store_id": "1025646",
    "data": {
        "type": "customer",
        "id": 60,
    },
    "hash": "416ca9c01779515de91824aa1cac9012ee691e7a",
    "created_at": 1561481620,
    "producer": "stores/{store_hash}"
}
{
    "scope": "store/customer/address/created",
    "store_id": "1025646",
    "data": {
        "type": "customer",
        "id": 60,
        "address": {
            "customer_id": 32
        }
    },
    "hash": "416ca9c01779515de91824aa1cac9012ee691e7a",
    "created_at": 1561481620,
    "producer": "stores/{store_hash}"
}

As you can see, the address field is not included when the customer address is being created by the API. I’m not sure if it is designed by the BigCommerce team, or a special case. But I think we can identify if the customer address is being created by the BigCommerce admin directly or via the API myself based on this distinction.

I believe you are encountering the first case on your end.

I hope this helps and please update me if you have any other opinions.

Upvotes: 2

Kyle
Kyle

Reputation: 192

It is fairly strange to see this webhook response without the address field, and I haven't had any luck replicating this with scope for store/customer/address/updated. Are you working with any other code beyond this webhook or testing the webhook event specifically?

Upvotes: 0

Related Questions