The ViewContent event on Shopify

Updated

When it fires

On product detail pages, once the product data is available to the pixel.

ViewContent is the first event that carries real commercial signal: which product, at what price. It is also the event that breaks catalog matching when its content_ids do not line up with the IDs in your Meta product feed, which is why Dynamic Ads sometimes retarget nothing at all.

What each ad platform calls ViewContent

The same shopper action goes by a different name on every network, and sending the wrong one means the event is silently discarded rather than rejected with an error.

ViewContent equivalent event names across ad platforms
PlatformEvent name
MetaViewContent
TikTokViewContent
SnapchatVIEW_CONTENT
Pinterestviewcategory
TaboolaNo standard equivalent

Parameters ViewContent should carry

content_ids
Must match the IDs in your product catalog feed exactly.
content_type
product or product_group.
value / currency
The product price. Needed for value-based audiences.
content_name
Product title, for readability in Events Manager.

Why ViewContent goes missing on Shopify

  • Variant IDs sent where the catalog uses parent product IDs, so nothing matches and Dynamic Ads stay empty.
  • Themes that load product data asynchronously can fire ViewContent before the price exists, sending a null value.

Catalog matching is what ViewContent is really for

ViewContent’s job is not to record that someone looked at a product. It is to record which product, in terms your Meta catalog recognises. The content_ids it sends are matched against the IDs in your product feed, and that match is what makes Dynamic Ads able to show a shopper the exact item they viewed instead of a generic recommendation.

When the IDs do not line up, nothing errors. Meta accepts the event, fails to match it, and quietly falls back to broad targeting. The symptom is a retargeting campaign that runs, spends and shows the wrong products, which is far harder to diagnose than a campaign that fails outright.

Variant IDs, parent IDs, and async themes

Shopify products have a parent ID and a variant ID per size or colour. Meta catalogs are usually built on one of the two, and the pixel must send whichever one the feed uses. Sending variant IDs against a parent-keyed catalog produces a total match failure that looks identical to having no catalog at all.

The second common failure is timing. Themes that fetch product data after the initial render can fire ViewContent before the price is available, sending a null or zero value. The event arrives, the ID matches, and the value-based audiences built on top of it are silently worthless. Checking that value is populated — not merely that the event exists — is the test that catches this.

How to verify ViewContent is firing

In Events Manager → Test Events, open a product page and check that content_ids matches an ID visible in Commerce Manager for the same product.

ViewContent questions

Should ViewContent fire on collection pages?
No. Collection pages are a category view, not a product view. Firing ViewContent there dilutes your product-view audience with browsers who never saw a specific item.
Why do Dynamic Ads show the wrong products?
Almost always a content_ids mismatch. The pixel is sending an ID your catalog does not contain, so Meta falls back to broad recommendations.

Go deeper

Meta pixel setup for Shopify, start to finish

Create a Meta pixel in Events Manager, connect it to your Shopify store, set up event matching, and verify data quality. A complete setup walkthrough.

Other pixel events