Connecting Pinterest to Shopify: the catalogue is the work
Product feeds are rejected for reasons nobody surfaces. What the catalogue needs that a store does not have, approval and policy, and why most of this is data quality.
On this page
- What we'll cover
- Why products go missing
- What the catalogue needs that a store does not
- Variants, which are the common failure
- Building it with CodeWords
- Images and the platform's expectations
- Approval, policy and prohibited items
- Keeping price and stock honest
- Which products belong in the feed at all
- Making it survive
- Limits worth knowing about
- What to build first
- Frequently asked questions
- Related reading
Installing the app takes minutes, and then a proportion of the catalogue does not appear. The products are in Shopify, the feed is being read, and some items are simply absent — with a rejection reason available somewhere nobody is looking.
Nearly all the work in this integration is data quality: making the product information satisfy requirements that a Shopify store is not obliged to meet. That is unglamorous, it is where the outcome is decided, and it is mostly invisible unless somebody goes looking for the rejections.
What we'll cover
- Why products go missing
- What the catalogue needs that a store does not
- Variants, which are the common failure
- Building it with CodeWords
- Images and the platform's expectations
- Approval, policy and prohibited items
- Keeping price and stock honest
- Which products belong in the feed at all
- Making it survive
- Limits worth knowing about
- What to build first
- Frequently asked questions
Why products go missing
Rejections are silent from the merchant's point of view unless the diagnostics are checked deliberately.
A missing required field removes an item without removing anything else, so the catalogue looks broadly fine.
Policy violations remove categories rather than individual items, which is confusing when first encountered.
Image problems are a large share of rejections and are the easiest to fix once identified.
Price or availability mismatches against the landing page cause removal, since platforms verify what the customer will see.
Check the diagnostics weekly. A catalogue quietly missing a fifth of its products is the normal state for anybody not looking.
What the catalogue needs that a store does not
A stable unique identifier per item, which must not change between feed runs.
A product identifier where one exists — the manufacturer code and the barcode — which is optional in a store and matters in a catalogue.
Brand, which many Shopify stores leave empty on own-label products.
Category, mapped to the platform's taxonomy rather than to your own collections.
Condition and availability in the platform's exact vocabulary.
A description that is descriptive, since marketing copy that assumes the page around it reads badly alone and can breach policy.
Variants, which are the common failure
A variant is a product to the catalogue, with its own identifier, image, price and availability.
Flattening variants loses the sale. A customer arriving at a generic product page after seeing a specific colour usually leaves.
Each variant needs its own image, which is the requirement stores most often fail.
Link to the variant, not the product, using a URL that preselects it.
Group them properly so the platform understands they are one product in several forms rather than several products.
Out-of-stock variants should be removed or marked, not silently left, since an unavailable item that appears available is the worst outcome for everyone.
Building it with CodeWords
CodeWords connects to more than 3,000 integrations, so Shopify, the ad platform, and your alerting can meet in one automation.
- Open CodeWords and start a new automation.
- Describe what should happen in plain language to Cody, the automation builder: which products are eligible, how fields are mapped, and what to report.
- Authorize the connections — Shopify and the advertising account.
- Describe the exceptions: a missing image, an unmapped category, a rejected item, a product out of stock.
- Run it in report-only mode and read the list of products that would be excluded before publishing anything.
You describe the outcome; Cody builds it, connects it, and deploys it. The free plan covers light use, with Pro at $39 per month and Business at $100 per month as usage grows; details are on the pricing page.
Images and the platform's expectations
Minimum dimensions apply and a small image is rejected outright.
The aspect ratio the platform favours is not the one most stores shoot for, and cropping a wide product photo to a tall format badly is visible.
No promotional overlays. Text, badges and price stickers on the image itself breach policy on most platforms.
A plain background performs differently from a lifestyle shot, and which works better is worth testing rather than assuming.
Hosted images must stay available, since a moved or expired URL removes the product.
Every variant, every image, which is the requirement that turns this from a configuration task into a content project.
Approval, policy and prohibited items
Merchant approval is a review, not a switch, and it can take time and can be declined.
Domain verification is a prerequisite, and it is where most first attempts stall.
Prohibited and restricted categories exist and are broader than people assume, covering some supplements, some regulated goods and various claims.
Claims in descriptions matter, particularly health and comparative ones, and they are assessed against the platform's policy rather than yours.
Rejection can be account-level, not just item-level, which is a much bigger problem and is worth avoiding by reading the policy first.
Keep a record of what was submitted, since an appeal needs it and the feed will have moved on.
Keeping price and stock honest
Price must match the landing page, including currency and any displayed tax treatment.
Sale prices need the right field, not an edited base price, or the discount is not represented correctly.
Stock changes need to propagate quickly, since an out-of-stock item still being promoted wastes spend and annoys customers.
Feed frequency is a real constraint — the catalogue is not live, and fast-moving stock will be wrong between updates.
Buffer fast movers by removing them from the feed earlier than the last unit.
Reconcile weekly: catalogue count against eligible product count, with the difference explained.
Which products belong in the feed at all
Sending the whole catalogue is the default and is rarely the right answer. A smaller, better feed usually outperforms a complete one.
Exclude what you cannot fulfil well — long lead times, restricted destinations, anything with a high return rate.
Exclude the lowest margin items, since promoting them costs the same as promoting the ones that pay.
Exclude what does not photograph, because on a visual platform an item without a good image will not perform regardless of anything else.
Exclude perpetual low stock, where the promotion is more likely to produce a disappointed customer than a sale.
Include the deep sellers, the items you can restock reliably and want to keep selling for a year.
Review the exclusions quarterly, since margin, stock position and returns all move and a list set once becomes wrong quietly.
Making it survive
Keep identifiers stable. Changing an item id resets its history and its learning on the platform.
Handle feed and API failures by retaining the last good catalogue rather than publishing a partial one.
Alert on a drop in approved items, which is the signal that something changed in the store or the policy.
Validate before publishing — required fields, image availability, price match — rather than discovering rejections afterwards.
Report the outcome: items submitted, approved, rejected with reasons, and the trend.
Limits worth knowing about
Feed processing is not instant, so changes take time to appear regardless of how quickly you send them.
Taxonomy mapping is manual for anything non-obvious, and a poor mapping affects where products surface.
Multi-currency and multi-region setups need separate handling and frequently separate feeds.
Some Shopify apps alter prices at checkout in ways the feed does not know about, which causes mismatch rejections.
Platform policy changes without much notice, and a previously approved catalogue can be affected.
What to build first
The rejection report: every product not currently in the catalogue, with the reason, sent somewhere weekly. It publishes nothing and it immediately reveals what most merchants do not know — which share of the catalogue is missing and why, which is almost always an easily fixed field or image rather than anything structural.
Two habits make the difference. Treat each variant as a product with its own image and its own preselected URL, since flattening variants is both the most common failure and the one that most directly costs sales. And keep item identifiers stable, because changing them resets the platform's accumulated learning and the performance loss is not obvious until weeks later.
Frequently asked questions
Why are some of my products missing from the catalogue?
They were rejected, silently from the merchant's side. Missing required fields, image problems, price or availability mismatches against the landing page, and policy issues are the common causes — all visible in the diagnostics if you check them.
What does a product catalogue need that a Shopify store does not?
A stable unique identifier, manufacturer codes and barcodes where they exist, brand, a category mapped to the platform's taxonomy, condition and availability in exact vocabulary, and a description that stands alone.
How should variants be handled?
As individual products, each with its own identifier, image, price, availability and a URL that preselects that variant. Flattening them sends customers to a generic page, which is where the sale is lost.
What are the image requirements?
Minimum dimensions, the platform's preferred aspect ratio, no promotional text or badges overlaid, and a hosted URL that stays available. Every variant needs its own image, which is what makes this a content project.
Why is my merchant account not approved?
Approval is a review rather than a switch, domain verification is a prerequisite and is where most first attempts stall, and prohibited or restricted categories are broader than people assume.
Why do price mismatches cause rejections?
Because platforms verify what the customer will actually see. The feed price must match the landing page including currency and tax treatment, and some Shopify apps alter prices at checkout in ways the feed does not know about.
How quickly do stock changes propagate?
Not instantly. The catalogue is not live, so fast-moving stock will be wrong between updates — which is an argument for removing fast movers from the feed before the last unit rather than after.
What happens if I change product identifiers?
You reset the platform's accumulated history and learning for those items. The performance cost is real and is not obvious until weeks later, so identifiers should be treated as permanent.
Should I send my whole catalogue?
Usually not. A smaller feed of items you can fulfil well, photograph well and restock reliably outperforms a complete one, since promoting a low-margin or perpetually low-stock product costs the same as promoting a good one.
What should be excluded?
Long lead times, restricted destinations, high return rates, the lowest margin lines, anything that does not photograph well, and perpetual low stock — reviewed quarterly, since all of those move.
Can a policy rejection affect my whole account?
Yes, and that is the version worth avoiding. Item-level rejections are routine and recoverable; an account-level decision is not, which is the argument for reading the prohibited and restricted categories before submitting rather than after.