> For the complete documentation index, see [llms.txt](https://docs.peakcommerce.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.peakcommerce.com/product/settings/billing-catalog/catalog-drift.md).

# Catalog Drift

**Settings → Catalog Drift** runs scheduled checks that compare each billing integration's local catalog against the upstream billing provider — Zuora, Stripe, or Metronome — and trigger an automatic re-sync when they diverge. This keeps your PeakCommerce catalog aligned with the source of truth without anyone having to remember to re-sync after an upstream change.

## Why it matters

If a product, plan, or charge is added, edited, or removed in your billing provider, your local catalog drifts out of sync until the next sync. Buyers could see a plan that no longer exists upstream, or miss one that was just added. The drift watcher closes that gap automatically.

## What it shows / the controls

* **Drift Watcher Schedule** — pick the **hour of day (server time)** the daily check runs for this tenant (default 03:00), and toggle **auto re-sync on drift**. With auto re-sync on, a detected divergence triggers a re-sync immediately; with it off, drift is detected and reported but the catalog is left as-is for you to re-sync manually.
* **Recent drift events** — each check's result, filterable by integration: the detected differences in **product / plan / charge** counts and IDs (what's missing locally versus extra locally) and the **re-sync outcome** (success, partial failure, or failed).

## How to read a drift event

Drift is flagged when upstream and local counts differ, or when the sets of product/plan/charge IDs don't match. "Missing locally" means upstream has items your catalog doesn't; "extra locally" means your catalog still lists items upstream dropped. The re-sync summary shows how many products, plans, and charges were synced or deactivated to close the gap.

## Gotchas

* The check **skips a run** if the upstream fetch comes back incomplete (e.g. partial provider drops), to avoid triggering a wrong re-sync against a bad snapshot — so an occasional "no event" is expected, not a failure.
* Only **active** billing integrations are watched — a deactivated integration is skipped until it's re-enabled.
* The schedule is per-tenant and runs once per day at the chosen hour; changing the hour takes effect on the next eligible tick.

## Related

* [Catalog Sync History](/product/settings/billing-catalog/catalog-sync-history.md) — the full run log, including drift-triggered re-syncs.
* [Products overview](/product/using-peakcommerce/products-and-bundles/products-overview.md)
* [Zuora billing integration](https://gitlab.com/peak-hercules/peak-help-docs/-/tree/main/integrations/zuora-integration/zuora-billing-integration.md)
* [Stripe integration](https://gitlab.com/peak-hercules/peak-help-docs/-/tree/main/integrations/stripe/stripe-payments.md)
* [Metronome integration](https://gitlab.com/peak-hercules/peak-help-docs/-/tree/main/integrations/metronome/metronome-usage-based-billing.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.peakcommerce.com/product/settings/billing-catalog/catalog-drift.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
