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 把 idavailabilitypricelinkimage_link 等字段列为商品 feed 的核心字段;其中 price 要写成数字、空格、三位 ISO 4217 币种代码,不能写货币符号。link 也不是任意页面,而是该商品在自有网站上的具体购买页。

错误层级你能看到的信号先做的动作
feed 字段priceavailabilitylinkimage_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 应该看到什么常见错法
price29.99 USD 这类数字加币种代码普通访客看到同一币种和金额页面显示 $29.99,feed 传 29.99 CAD
availabilityin stockout 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 stockout 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 也被插件改成折后价,原价信息消失,广告素材和商品详情就很难解释「到底卖多少钱」。

促销商品按这个顺序处理:

  1. 促销还在进行:确认 price 是原价,sale_price 是当前成交价,两个字段币种一致。
  2. 促销即将结束:补 sale_price_effective_date,时区用活动实际结束地区,不要只写日期。
  3. 促销已经结束:移除 sale_price,让 feed 和落地页都回到普通价格。
  4. 只给会员价:不要把会员登录后价格传给普通访客 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 里的 priceavailability 和落地页展示必须对上;如果页面脚本、变体默认值或结构化数据仍输出旧价,只改 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 里提交支持材料;广告投放还受政策、账户和审核状态影响。