{"id":342051,"date":"2026-07-22T12:32:49","date_gmt":"2026-07-22T12:32:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/wprobo-meta-checkout-url-for-woocommerce\/"},"modified":"2026-07-22T12:32:22","modified_gmt":"2026-07-22T12:32:22","slug":"wprobo-checkout-url-bridge-for-meta-shops","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/wprobo-checkout-url-bridge-for-meta-shops\/","author":20858128,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.2","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"WPRobo Checkout URL Bridge for Meta Shops","header_author":"WPRobo","header_description":"Makes your WooCommerce store a fully compatible checkout destination for Meta (Facebook & Instagram) Shops checkout URLs \u2014 products, quantities, coupons and tracking parameters land in the cart automatically.","assets_banners_color":"02152c","last_updated":"2026-07-22 12:32:22","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wprobo.com\/plugins\/wprobo-checkout-url-bridge-for-meta-shops\/","header_author_uri":"https:\/\/wprobo.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":28,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"wprobo","date":"2026-07-22 12:32:22"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3619027,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3619027,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3619027,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[824,127691,272793,272794,13816],"plugin_category":[],"plugin_contributors":[97280,223079],"plugin_business_model":[],"class_list":["post-342051","plugin","type-plugin","status-publish","hentry","plugin_tags-facebook-shop","plugin_tags-instagram-shop","plugin_tags-meta-checkout-url","plugin_tags-meta-shops","plugin_tags-woocommerce-checkout","plugin_contributors-alishanvr","plugin_contributors-wprobo","plugin_committers-wprobo"],"banners":{"banner":"https:\/\/ps.w.org\/wprobo-checkout-url-bridge-for-meta-shops\/assets\/banner-772x250.png?rev=3619027","banner_2x":"https:\/\/ps.w.org\/wprobo-checkout-url-bridge-for-meta-shops\/assets\/banner-1544x500.png?rev=3619027","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wprobo-checkout-url-bridge-for-meta-shops\/assets\/icon-256x256.png?rev=3619027","icon_2x":"https:\/\/ps.w.org\/wprobo-checkout-url-bridge-for-meta-shops\/assets\/icon-256x256.png?rev=3619027","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Meta no longer supports checkout on Facebook and Instagram. Shops must send\nbuyers to your website with a <strong>Meta checkout URL<\/strong> carrying the cart as\nparameters. Out of the box, many of those clicks end in an <strong>empty\nWooCommerce cart<\/strong> \u2014 because Meta catalogs send retailer IDs (like\n    wc_post_id_123), SKUs, or composite IDs that WooCommerce doesn't recognise.\nEvery one of those is a lost sale.<\/p>\n\n<p><strong>WPRobo Checkout URL Bridge for Meta Shops<\/strong> makes your store a fully\ncompatible Meta checkout destination. Zero configuration: install, activate,\nsubmit your checkout URL in Commerce Manager, done.<\/p>\n\n<h4>What it does<\/h4>\n\n<ul>\n<li>Reads Meta's <code>products<\/code> parameter (any quantity of items).<\/li>\n<li>Resolves every ID format: WooCommerce IDs, <code>wc_post_id_<\/code> retailer IDs,\nSKUs, variation SKUs, and <code>SKU_ID<\/code> composites.<\/li>\n<li>Clears the cart on each visit so buyers see exactly what they picked.<\/li>\n<li>Validates stock and tells the buyer if something is unavailable \u2014 never a\nsilent empty cart.<\/li>\n<li>Validates and applies the <code>coupon<\/code> parameter with a visible discount.<\/li>\n<li>Preserves <code>utm_*<\/code>, <code>fbclid<\/code> and <code>cart_origin<\/code> for your analytics.<\/li>\n<li>Adds nothing to your database, makes no external calls, has no settings.<\/li>\n<\/ul>\n\n<p>Full setup guide: <a href=\"https:\/\/wprobo.com\/plugins\/wprobo-checkout-url-bridge-for-meta-shops\/\">wprobo.com\/plugins\/wprobo-checkout-url-bridge-for-meta-shops<\/a><\/p>\n\n<h4>Passing Meta's checkout validation<\/h4>\n\n<p>Meta reviews your checkout URL periodically. This plugin implements the\nrequired behaviors from Meta's developer specification, including correct\nRFC 3986 decoding, cart clearing, and buyer-facing error states.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20checkout%20url%20do%20i%20give%20meta%20in%20commerce%20manager%3F\"><h3>What checkout URL do I give Meta in Commerce Manager?<\/h3><\/dt>\n<dd><p>Your normal checkout page, e.g. <code>https:\/\/yourstore.com\/checkout\/<\/code>. Enter it in\nCommerce Manager under your shop's Settings \u2192 Checkout method \u2192 \"Checkout on\nanother website\". You never build the product part of the URL yourself \u2014 Meta\nappends <code>?products=...&amp;coupon=...<\/code> automatically when a buyer checks out, and\nthe plugin detects that parameter on any front-end URL.<\/p><\/dd>\n<dt id=\"how%20does%20meta%20know%20my%20woocommerce%20product%20ids%3F\"><h3>How does Meta know my WooCommerce product IDs?<\/h3><\/dt>\n<dd><p>From your product catalog, not from the checkout URL. Every item you sync to\nMeta carries a \"retailer ID\": the Meta for WooCommerce extension uses\n    wc_post_id_123 (your real product ID), data feeds use whatever their <code>id<\/code>\ncolumn contains (usually your SKU), and some feeds produce <code>SKU_123<\/code>\ncomposites. When a buyer checks out, Meta builds the checkout URL from those\nretailer IDs \u2014 and this plugin translates every one of those formats back to\nthe correct WooCommerce product or variation.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20re-sync%20or%20change%20my%20catalog%3F\"><h3>Do I need to re-sync or change my catalog?<\/h3><\/dt>\n<dd><p>No. The plugin resolves whatever retailer IDs your existing catalog already\nsends, as long as they trace back to your store's product IDs or SKUs. Only\ncatalogs whose IDs match nothing in WooCommerce (e.g. IDs from a previous\nshop platform) cannot be resolved automatically.<\/p><\/dd>\n<dt id=\"buyers%20still%20land%20on%20an%20empty%20cart%20%E2%80%94%20why%3F\"><h3>Buyers still land on an empty cart \u2014 why?<\/h3><\/dt>\n<dd><p>Almost always page caching. Exclude your checkout page (and any URL with a\n    products query parameter) from caching in LiteSpeed Cache, WP Rocket,\nSG Optimizer, or your host's server-level cache. Most caching plugins exclude\n    \/checkout\/ by default \u2014 verify it.<\/p><\/dd>\n<dt id=\"does%20it%20support%20variable%20products%3F\"><h3>Does it support variable products?<\/h3><\/dt>\n<dd><p>Yes \u2014 pass the variation ID or the variation's SKU and the correct variation\nis added with its attributes.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20meta%20for%20woocommerce%20%28facebook%29%20extension%3F\"><h3>Does it work with the Meta for WooCommerce (Facebook) extension?<\/h3><\/dt>\n<dd><p>Yes. That extension syncs your catalog with <code>wc_post_id_<\/code> retailer IDs, which\nthis plugin resolves natively.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Fixes the empty cart from Facebook &amp; Instagram Shops: Meta checkout URL products, quantities and coupons land in your WooCommerce cart.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/342051","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=342051"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/wprobo"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=342051"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=342051"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=342051"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=342051"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=342051"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=342051"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}