Topics covering webhook creation & management, event handling, Pub/Sub, and Eventbridge, in Shopify apps.
Hi all
We are trying to strengthen our webhook receiver and reconciliation jobs. The json object below show a list of events from an order we have processed. Examine the created_at timestamps show that 3 events was triggered within the same timestamp.
I assume that 3 webhooks are fired on topic orders/updated and the order updated_at timestamp is 2022-04-26T11:10:57+02:00 after the 3 events.
In the case where the first, of the 3, orders/updated hooks fails on our side, and retried by shopify. How can we make sure that we have the latest event, since comparing the order updated_at timestamp would properly be the same for all 3 events?
We are facing a similar issue with our reconciliation job, since we are comparing the order updated_at timestamp. as an example, if we received the first and second hooks from the example sequence below, the reconciliation job would compare updated_at timestamp and skip the rescue! How can we overcome this, without sync all orders in our reconciliation jobs?
We run the reconciliation jobs once a day and sync all orders by that job is not possible within the rate limit of 2 calls/sec for the REST API.
Thanks in advance
Mads
{
"events": [
{...},
{
"id": 90448362045627,
"subject_id": 1000,
"created_at": "2022-04-26T11:10:53+02:00",
"subject_type": "Order",
"verb": "fulfillment_success",
"arguments": [
],
"body": null,
"message": "CoolRunner fulfilled 1 item ",
"author": "CoolRunner",
"description": "CoolRunner fulfilled 1 item ",
"path": "/admin/orders/1000/fulfillments/3862202974395"
},
{
"id": 90448362275003,
"subject_id": 1000,
"created_at": "2022-04-26T11:10:54+02:00",
"subject_type": "Order",
"verb": "mail_sent",
"arguments": [
],
"body": null,
"message": "CoolRunner sent a shipping confirmation email ",
"author": "CoolRunner",
"description": "CoolRunner sent a shipping confirmation email",
"path": "/admin/orders/1000"
},
{
"id": 90448363258043,
"subject_id": 1000,
"created_at": "2022-04-26T11:10:57+02:00",
"subject_type": "Order",
"verb": "capture_success",
"arguments": [
],
"body": null,
"message": "CoolRunner captured €99.00 EUR using a Mastercard ",
"author": "CoolRunner",
"description": "CoolRunner captured €99.00 EUR using a Mastercard ",
"path": "/admin/orders/1000/transactions/5355897323707"
},
{
"id": 90448363389115,
"subject_id": 1000,
"created_at": "2022-04-26T11:10:57+02:00",
"subject_type": "Order",
"verb": "payments_charge",
"arguments": [
],
"body": null,
"message": "-",
"author": "CoolRunner",
"description": "-",
"path": "/admin/orders/1000"
},
{
"id": 90448363421883,
"subject_id": 1000,
"created_at": "2022-04-26T11:10:57+02:00",
"subject_type": "Order",
"verb": "closed",
"arguments": [],
"body": null,
"message": "This order was archived.",
"author": "Shopify",
"description": "This order was archived.",
"path": "/admin/orders/1000"
}
]
}
Anything from Shopify team? This is a good question. I'm in a similar situation and wondering the same thing