Your panel's catalog only looks like yours. Every item in the storefront is really your own row, with your name and your price, pointing at an entry in a provider's catalog. And the provider can pull that entry at any moment: drop an unprofitable service, rebuild a line-up, clean house after switching sources. Nobody asks you, and nobody warns you. Here is what happens to your storefront next, why the panel stays quiet about it, and how to find those items before a customer does.

What actually happens when a service is deleted

Catalog sync is straightforward: the panel asks the provider for a list of services and brings its local copy of that catalog in line with the answer. An entry missing from the answer stops existing in the copy. So far, so sensible.

The non-obvious part comes next. Your storefront service is not that same record. It is a separate row with its own name, description and price, which merely points at the provider entry through a pair of values: provider plus service identifier. It points by value, not by a hard database relation, so deleting one record does not remove the other.

The result: the provider catalog copy no longer has the service, while your service stays live in the storefront. Customers see it, it can go into an order, it has a working price and working quantity limits. The only thing missing behind it is someone to fulfil it.

Exactly the same thing happens without a deletion. The provider rebuilds the catalog and hands the very same services new identifiers: from the outside nothing changed, but every link you hold now points at nothing. From the panel's side that is indistinguishable from deletion.

Why the panel says nothing

The galling part is that the panel knows the entry is gone. It removed it from the catalog copy itself. There is simply nobody for it to tell.

A case from September 2026, so this does not read as theory. A provider removed eighteen entries at once - routine housekeeping on their side. Broken services appeared within the hour in four rented panels: eighteen in two of them, one each in the other two. Not a single panel raised a flag. They were found by comparing catalogs, and only after the fact.

What it costs you

From there events follow one script, and it is an unpleasant one:

That last point looks like concealment and is actually a deliberate trade-off: a failed hand-off is normally pushed through by retries within minutes, and the word "error" in a customer account would only generate tickets about orders that resolve themselves. So the customer is shown pending while the operator sees the real status in the admin panel - more on that in the piece on why an order hangs in Pending.

And this is exactly where a deleted service falls out of the general rule. Retries can tell a temporary failure from a permanent one: "incorrect service", "service not linked", "invalid link" do not need repeating, because repeating will not fix them. Such orders are handed to an operator, which is the right call. The catch is that nobody called the operator. The order sits there, the customer sees "pending", the money is gone, and that holds until the first complaint.

How to find broken items

The check comes down to one action: compare your own services against the provider catalog copy on the pair "provider plus service identifier", and take the ones with no match. It is a single query - save it once and run it, rather than reinventing it each time.

A few practical notes:

And one safeguard in the opposite direction that people rarely think about until it burns them. If the provider answers with an empty catalog - their API went down, the key expired, the endpoint moved - a naive sync will dutifully wipe every entry and turn your entire catalog broken in one pass. An empty response must therefore count as a sync failure, not as an instruction to delete everything. For us that is a separate guard, and it fails on purpose.

What to do with what you find

How to stop it happening again

Wrap-up

A service deleted at the provider does not disappear from your storefront - it turns into a trap that looks like an ordinary product and springs on the very next customer. Panels generally give you no automatic signal for this, so comparing catalogs has to be a habit rather than a reaction to a complaint. Fifteen minutes once a week is cheaper than one conversation with a customer who was charged and got nothing.

You can see how this works on a live panel without spending anything: orders routed through our own catalog are not metered at all, and with third-party providers the first 100 orders a month are free. That is enough to build a storefront, connect a provider and watch what the panel actually shows you when something changes on their side.