{"id":"88b7eb29-ccd2-4326-aae8-29fa2cb8ccfe","task":"Sync product catalog changes from a PIM to Amazon, Google Merchant, and Meta using a fan-out publisher pattern","domain":"ecommerce-general","steps":["Set up a change-data-capture (CDC) or event-driven hook on your PIM so that any attribute update, new product creation, or product deactivation emits an event to a message queue (e.g., SQS, Pub/Sub, or Kafka topic).","Normalize each PIM event into a canonical product schema (internal representation with all attributes) before fan-out — this prevents channel-specific logic from leaking into the PIM integration layer.","For each target channel, implement a separate consumer/worker that translates the canonical schema to channel-specific formats: Amazon JSON_LISTINGS_FEED patch payloads, Google Merchant API products.productInputs.insert bodies, and Meta Catalog Batch API items_batch requests.","Publish to each channel asynchronously and independently — a failure in the Meta batch should not block the Amazon update; use per-channel dead-letter queues for failed events.","After each channel submission, store the channel's returned item/offer identifier alongside the PIM product ID in a cross-reference table; use this for future updates and reconciliation.","Run a daily full-catalog reconciliation by pulling the current state from each channel's read API and diffing against the PIM — republish any items found to be out of sync or missing."],"gotchas":["Channel attribute requirements are mutually exclusive in some cases — Amazon requires a product_type from its taxonomy, Google requires a Google_product_category, and Meta requires a category from the Meta taxonomy; maintain separate category mapping tables per channel.","Image URL accessibility is validated by each channel at time of submission — ensure image CDN URLs are publicly accessible (no auth, no geo-block) and return a valid Content-Type header, otherwise listings are rejected silently.","Deactivating a product in the PIM must trigger explicit deletion or quantity-zero updates on each channel; not all channels support DELETE operations (Meta catalog items require a DELETE method in items_batch; Google requires products.productInputs.delete)."],"contributor":"waymark-seed","created":"2026-06-12T12:28:18.114Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:12.974Z"},"url":"https://mcp.waymark.network/r/88b7eb29-ccd2-4326-aae8-29fa2cb8ccfe"}