Hi everyone,
I’m seeing some unexpected behavior with webhook delivery filtering for orders/updated and wanted to confirm whether this is a bug or if I’m misunderstanding how filters on tags are supposed to work.
Context
- Admin API version:
2026-01 - Topic:
orders/updated(ORDERS_UPDATED) - Destination: AWS EventBridge → SQS
- Webhook subscription created via Admin GraphQL, with a
filteron order tags.
Webhook subscription (GraphQL result)
{
"webhookSubscriptions": {
"edges": [
{
"node": {
"filter": "tags:bopis",
"topic": "ORDERS_UPDATED",
"includeFields": [],
"id": "gid://shopify/WebhookSubscription/REDACTED"
}
}
]
}
}
EventBridge rule
My EventBridge rule only routes by shop domain and topic (no filtering based on tags):
{
"source": [{ "prefix": "aws.partner/shopify.com" }],
"detail": {
"metadata": {
"X-Shopify-Shop-Domain": [
{ "prefix": "my-test-shop.myshopify.com" },
{ "wildcard": "my-test-shop" }
],
"X-Shopify-Topic": [
{ "prefix": "orders/updated" },
{ "prefix": "ORDERS_UPDATED" }
]
}
}
}
There is no condition on tags in this EventBridge rule, so any orders/updated webhook that Shopify sends should reach SQS.
Problem
My goal: Receive orders/updated webhooks for any order that has the bopis tag, even if the order has other tags as well.
According to the docs for webhook filters and tag fields:
tagsin the payload is a string of tags (for example:"bopis, some_other_tag").- A filter like
tags:bopisshould tokenize this string and match whenever at least one token equalsbopis.
Ref: Filter webhook deliveries – Tag fields
However, the behavior I’m seeing is:
- When an order has only the
bopistag (e.g.,"tags": "bopis"), updates do produceorders/updatedwebhooks that arrive at SQS. - When an order has multiple tags including
bopis(e.g.,"tags": "bopis, some_other_tag"), updates do not result in a webhook reaching SQS.
To be very clear:
If I don’t use a webhook filter at all, the same orders/updated event does reach SQS. When I enable filter = "tags:bopis", the event with "tags": "bopis, some_other_tag" disappears, but the event with "tags": "bopis" still comes through.
Example payload (when I expect it to match but it doesn’t)
Here is the relevant part of an orders/updated webhook payload that I only see when there is no filter applied (values redacted / generalized)
{
"detail-type": "shopifyWebhook",
"source": "aws.partner/shopify.com/REDACTED/CommerceWebhook",
"detail": {
"payload": {
"id": 1234567890,
"admin_graphql_api_id": "gid://shopify/Order/REDACTED",
"...": "...",
"tags": "bopis, some_other_tag",
"updated_at": "2026-09-14T00:29:12-07:00"
},
"metadata": {
"X-Shopify-Topic": "orders/updated",
"X-Shopify-Shop-Domain": "my-test-shop.myshopify.com",
"X-Shopify-API-Version": "2025-10",
"...": "..."
}
}
}
With the filter tags:bopis in place, I never see this event at SQS, even though it clearly has bopis in the tags string.
What I expected
Based on the docs, I expected:
- Any order where the
tagsfield containsbopisas a tag (for example,"bopis","bopis, some_other_tag", etc.) should satisfytags:bopis, andorders/updatedwebhooks should be delivered.
Questions
- Is
tags:bopissupposed to match when the order has multiple tags, like"bopis, some_other_tag"? - Is there any known limitation or bug with webhook filters on
tagsfororders/updated? - Is there a recommended alternative expression I should be using for this use case?
I’d really appreciate confirmation on whether this is expected behavior or a bug, and any guidance on how to reliably filter orders/updated by a specific order tag while still allowing other tags to be present.
Thanks!