Compare Two Shopify Catalog Snapshots Without Inventing Changes
Work through fictional Shopify snapshots to separate observed price changes from missing products, partial coverage and unknown availability.
Try this small exercise before building a product-change notification. Its records are fictional, and the simplified tables are an analysis format for the lesson rather than the actor's output schema.
You have two catalog observations. The task is to explain what changed without turning missing collection evidence into a commercial conclusion.
The fictional observations
| Identity | Snapshot A: complete requested scope | Snapshot B: partial requested scope |
|---|---|---|
| Product P1 / variant V1 | Price 29.90, USD metadata | Price 24.90, USD metadata |
| Product P2 / variant V2 | Price 19.90, currency unknown | Not observed |
| Product P3 / variant V3 | Availability true | Availability field missing |
Both snapshots refer to the same requested public scope, but B stopped with partial coverage. Assume the listed identities are usable and preserve the observation times in your working records.
Before reading further, write three candidate conclusions. Then label each as an observation, a hypothesis or something the evidence cannot establish.
What can you say about V1?
Both observations expose a source price for the same identity with matching USD metadata context. In this fictional example, the observed amount changed from 29.90 to 24.90 between the collection times.
That statement remains narrower than saying the supplier's net selling price fell, the item became a better commercial opportunity, or a buyer paid the lower amount. Taxes, contractual terms and business economics are outside this exercise.
Keep the original amounts and their evidence. Any percentage calculation would be your analysis, not an extra value scraped from the source.
Was P2 removed?
The evidence does not establish removal. P2 was not observed in a partial later snapshot.
The right review record should retain the earlier identity, later coverage boundary and the absence observation. You can investigate further with an appropriate source or a sufficiently comparable later capture.
Do not silently convert that absence into a deletion event. Even equal requested scopes do not guarantee equal achieved coverage.
Did V3 go out of stock?
The later availability field is missing. That is different from an explicit false value, and neither value would independently establish actual inventory quantity.
Preserve the unknown. If a consumer needs a boolean decision, make its treatment of unknown explicit and separate from the source record. That lets you change the policy without rewriting what was observed.
What about currency on P2?
Snapshot A's amount has unknown currency. Keep that qualification beside the value. Do not fill it from another product's metadata or from a familiar symbol on the visible page without appropriate evidence.
If a later observation establishes a currency, retain the change in evidence. Matching numbers with different currency context may still be unsuitable for a direct price comparison.
Build the answer table
| Proposed output | Result for this exercise |
|---|---|
| V1 observed price change | Supported within the stated identity and currency assumptions |
| P2 removed from source | Not established; later coverage is partial |
| V3 unavailable | Not established; later field is missing |
| P2 amount suitable for cross-currency comparison | Not established without currency context |
This is the operational value of a small worked example. It exposes which decisions your downstream code is making, including decisions hidden in default values.
Connect the lesson to an actual collection workflow
The Shopify Product Scraper on Apify can supply public catalog records and coverage files. It does not turn this exercise into a shipped automatic change detector.
Use the coverage diagnostic before comparing actual runs. For a real integration, retain the source URL, selected scope, run identity, observation time, source identities, limits and coverage information. Compare equivalent usable observations and route insufficient evidence to review.
Begin with a few records and manually predict what the comparator should say. Then test your implementation against partial and missing-field cases before connecting notifications. An alert is useful when its recipient can understand the evidence behind it.