For example I have a custom collection X, it currently has products A, B and C. When B is removed from the collection (just the Collect removed), how do I get notified of that event and sync my data?
Webhooks don't support Collects. Events API don't support Collects either. So it seems there's currently no way to update when a Collect is deleted. Is there?
The only way seems to be going through every item of the collection one by one and check if it's still there, but that's very slow especially on large custom collections, and I'd have to run that again and again very frequently, a huge waste of resources for both our side and Shopify's side.
Why doesn't Shopify support it?
Shopify does not support it because it is probably just too crazy. It is one thing to manage a product. Change it, fire off a webhook sure. Collection though? Change the image, or the description, sure, fire off a webhook.
But with that join table of products in collections joined via collect, there are like a bazillion things that could go on. One-touch of a smart collection rule and bazinga. A million collects all change. With a manual collection sure, it is simple to say, hey, if Product D is removed, I'd like to know, but sadly, you'll just have to look after that yourself. I was surprised many years ago to learn collections don't fire an update webhook when products are added or removed. Thinking about it though, it is hard to pin down, just when to go AHA! A collection just changed, fire off a webhook, without worrying that that could occur a bazillion times in short order.
Shopify had to up their game and turn OFF certain webhook firing when it became clear Apps could really screw up things. Imagine you, thinking I just need to know when that collection changes, when the merchant has some other App installed that is always messing with collections. You'd be swamped with crap!