Meta Catalog 商品被拒时,先别从广告组里找答案。价格、库存和币种这类错误,通常落在 Commerce Manager 的 item issue、data feed 字段或商品 landing page 三处之一。
跨境团队最常见的现场是:投手看到 Catalog Ads 里商品无法投放,站长说 Shopify 页面价格没问题,运营又刚改过促销。三个人看到的都可能是真的,只是 Meta 抓取到的那一刻,feed 与落地页没有说同一句话。
Commerce Manager 里先看哪一层报错?
先打开 Commerce Manager,进入对应 Catalog,按商品 ID 找到被拒 item,再看 issue 是字段缺失、格式错误、价格不一致、库存状态不一致,还是商品政策问题。不要把所有 rejected items 都当成审核误杀。
Meta for Developers 的 Catalog Reference 把 id、availability、price、link、image_link 等字段列为商品 feed 的核心字段;其中 price 要写成数字、空格、三位 ISO 4217 币种代码,不能写货币符号。link 也不是任意页面,而是该商品在自有网站上的具体购买页。
| 错误层级 | 你能看到的信号 | 先做的动作 |
|---|---|---|
| feed 字段 | price、availability、link 或 image_link 格式报错 | 修字段格式,再重新上传或等待同步 |
| 落地页抓取 | 页面价格、库存、币种和 feed 不一致 | 用无登录窗口打开商品页,看普通访客看到什么 |
| 促销窗口 | 页面已恢复原价,feed 还带 sale_price | 移除促销价或补结束时间 |
| 变体映射 | 点到父页面后默认展示另一个颜色尺码 | 让 URL、默认变体和 feed item 对齐 |
| 支持或审核 | 字段都对,仍显示 rejected items | 准备截图、商品 ID、feed 行和页面 URL 找支持 |
默认做法很简单:先修数据一致性,再考虑支持工单。放弃条件也清楚:如果 item issue 明确写的是政策或账户资格,就不要继续只改价格字段。
feed 和落地页差在哪一列?
排查 price mismatch 或 stock mismatch,不要只看后台列表页。拿 6 个 SKU 做样本更快:2 个正常售卖、2 个促销中、1 个刚售罄、1 个多变体商品。把 feed 行、商品页首屏、变体选择后的价格和购物车页放在同一张表里。
| 对照项 | data feed 应该是什么 | landing page 应该看到什么 | 常见错法 |
|---|---|---|---|
price | 29.99 USD 这类数字加币种代码 | 普通访客看到同一币种和金额 | 页面显示 $29.99,feed 传 29.99 CAD |
availability | in stock 或 out of stock | 按钮、库存文案和可购买状态一致 | feed 有货,页面按钮已变成 Sold out |
sale_price | 促销期间的折后价,格式同 price | 页面主价格就是同一折后价 | 页面打折结束,feed 还在传旧促销价 |
sale_price_effective_date | 促销开始和结束时间段 | 活动页的时间与时区能解释价格 | 店铺按北京时间结束,feed 用美国时区 |
link | 指向这个 item 可购买的具体 URL | 打开后能看到同一商品或变体 | feed 指向集合页、首页或错误变体 |
item_group_id | 同一父商品的变体共享组 ID | 页面能切到对应颜色尺码 | 父商品价是最低价,变体实际更贵 |
这张表的用处,是把「后台说不一致」变成可复现的差异。只要有一列无法解释,就先别批量重传整个 Catalog,避免把原本正常的商品也带出新错误。
价格和币种为什么最容易被拒?
price 不是页面文案,它是 Meta 用来生成商品详情、目录广告和购物入口的商业字段。官方字段要求里已经写明,价格格式是数字后跟三位 ISO 4217 代码,并使用小数点,不要放 $、€、£ 这类符号。
独立站容易错在三个地方。
第一,店铺前台按访客地区自动切币种,feed 却只传一个默认币种。Meta 抓到的页面如果是 CAD,而 feed 是 USD,就会像价格错误一样处理。
第二,含税价和不含税价混用。欧洲站点常把 VAT 写进前台价格,美国 feed 又传税前价;用户看到的金额与 feed 金额不是同一口径。
第三,四舍五入规则不同。Shopify 主题、ERP、feed 插件和结账页可能分别保留两位或整数,19.995 这种内部价在不同系统里会变成不同金额。
处理时不要让投手手动改一个商品试运气。打开店铺主币种、目标投放国家和 feed 生成插件的币种设置,再决定是拆国家 feed、固定 landing page 币种,还是让前端对抓取访问展示同一价格口径。
库存字段和页面售罄状态怎么对齐?
Meta 文档里 availability 的常见值是 in stock 和 out of stock。其中缺货商品会在 shop 里显示售罄,且不会展示在广告里。对投手来说,这不是单纯的前台按钮文案,而是 Catalog Ads 是否能使用该 item 的基础状态。
库存不一致通常来自同步延迟。比如仓库系统已经扣减库存,Shopify 页面显示 Sold out,但 feed 仍保留上一轮 in stock;或者运营在 Shopify 把商品设为 unavailable,feed 生成任务却只读库存数量,不读销售渠道状态。
如果你使用 Facebook & Instagram by Meta、第三方 feed 工具或自研 API,同一时间只让一个源写价格和库存。多个源同时写 Catalog,很容易出现今天修好的商品,明天被另一个旧 feed 覆盖。
Checkout on Facebook and Instagram 的商品还要看 quantity_to_sell_on_facebook。官方说明里,这个数量要大于等于 1,并且 availability 也为 in stock,商品才会按有货处理。你如果只在页面上显示「补货中」,但 feed 仍报有货,Commerce Manager 看到的不是运营话术,而是字段冲突。
促销价和 sale_price_effective_date 哪个先修?
sale_price 是可选字段,但出错时杀伤力很强。Meta 字段说明写得很直接:如果商品在促销,sale_price 使用和 price 相同的格式;如果没有添加 sale_price_effective_date,带有 sale_price 的商品会一直按促销价处理,直到你移除促销价。
大促后最常见的错误是页面已经恢复原价,feed 还在传 sale_price。另一种反过来:页面主价格是折后价,feed 的 price 也被插件改成折后价,原价信息消失,广告素材和商品详情就很难解释「到底卖多少钱」。
促销商品按这个顺序处理:
- 促销还在进行:确认
price是原价,sale_price是当前成交价,两个字段币种一致。 - 促销即将结束:补
sale_price_effective_date,时区用活动实际结束地区,不要只写日期。 - 促销已经结束:移除
sale_price,让 feed 和落地页都回到普通价格。 - 只给会员价:不要把会员登录后价格传给普通访客 feed,除非普通访客打开页面也能看到同一价格说明。
这里不要承诺「修完促销价就能恢复」。Catalog item 还可能同时有图片、政策、账户资格或页面抓取问题,促销价只是其中一层。
变体商品为什么不能只修父 SKU?
服装、鞋帽、家具颜色、套装规格这类商品,最容易在父 SKU 和变体 SKU 之间出错。Meta 的 item_group_id 用来把同一父商品下的颜色、尺码、图案等变体归在一起,但每个变体仍然要有自己的 id、价格、库存和可购买状态。
举个常见错误:父商品页标题是「Linen Shirt」,feed 里红色 S 码、蓝色 M 码、黑色 L 码都指向同一个 URL。页面默认打开黑色 L 码,价格是 49.99 USD;feed 被拒的红色 S 码实际是 39.99 USD 且已售罄。Meta 抓取页面时看到的是另一个变体的价格和库存。
能改 URL 参数就改 URL 参数,比如让红色 S 码打开 /products/linen-shirt?variant=red-s。不能改 URL 参数时,至少让页面结构把变体价格、库存和选中状态清楚暴露出来,不要让抓取访问只能看到父商品最低价。
Meta Pixel 也要跟着看。Catalog Reference 提到 dynamic ads 的内容 ID 要和 Meta Pixel 里的同一商品 content ID 对上。如果 Pixel 事件发的是父 ID,Catalog 里广告用的是变体 ID,后续再营销和商品匹配也会变乱。
Meta 抓不到价格时,页面要露出什么?
抓取可见性不是让你给 Meta 做特殊页面,而是保证普通访客打开商品页时,核心商业信息不要藏在登录、地区弹窗、延迟脚本或不可抓取组件后面。
排查时用无登录窗口打开 link 字段里的 URL,看 3 件事:首屏是否能看到商品名、当前价格和库存按钮;选择变体后 URL 或页面状态是否变化;禁用部分脚本后,价格是否完全消失。很多 DTC 站点为了个性化折扣,把价格放在客户端脚本里延迟渲染,用户能看到,抓取系统却可能在错误时机读到空值或旧值。
不要把「Meta 看不到」简单归因于访问环境。更常见的是页面自己给不同地区、语言、会员、UTM 或库存状态输出了不同内容。先把普通访客版本稳定下来,再处理 feed。
修完后什么时候再提交或找支持?
修复顺序建议保持克制:先改数据源,再改页面,再触发下一次 feed 同步或等待 Commerce Manager 重新处理。一天内反复上传、删除、重建 Catalog,通常会让团队更难判断是哪一步有效。
提交支持材料前,把这几项放齐:Catalog ID、item ID、被拒提示截图、当前 feed 行、商品 URL、无登录窗口截图、购物车页价格截图、最近一次 feed 更新时间。官方 Commerce Manager 支持入口覆盖 technical issues、rejected items 和 request a review,但是否恢复展示或通过审核,不由这些材料本身保证。
如果你用 Shopify 或 WooCommerce 插件同步,还要保留插件名称、同步时间和是否存在多个 data source。Meta 支持看的是 Catalog 里收到的数据;平台插件为什么把旧价传上来,很多时候还要回到电商系统侧查日志。
相关阅读
FAQ
Meta Catalog 商品被拒是不是只改 feed 就行?
不一定。feed 里的 price、availability 和落地页展示必须对上;如果页面脚本、变体默认值或结构化数据仍输出旧价,只改 feed 还会继续被抓到不一致。
Meta Catalog 价格差一分钱也要处理吗?
要处理。官方字段要求 price 用数字、空格和三位币种代码,页面也要显示同一口径。四舍五入、含税价和结账折扣都可能造成小额差异。
商品缺货但广告还在跑,先改哪里?
先把 feed 的 availability 改成 out of stock,再看 Shopify 或库存系统是否会回写。Meta 文档说明缺货商品不会展示在广告里,不要继续用旧库存硬推。
sale_price 不生效会导致商品被拒吗?
sale_price 本身是可选字段,但它和页面促销价冲突时会造成价格口径混乱。没有促销结束时间时,移除促销价或补 sale_price_effective_date。
同一个父商品的颜色尺码可以共用一个链接吗?
可以共用父页面,但每个变体 ID、价格、库存和默认选中项要能对应。红色 M 码缺货时,不要让链接默认打开蓝色 L 码的价格和库存。
修完 mismatch 后多久能恢复投放?
没有固定保证。修复 feed、页面和抓取可见性后,等待下一轮抓取或在 Commerce Manager 里提交支持材料;广告投放还受政策、账户和审核状态影响。