Recipe Widget Embed Parameter Reference
Every embed parameter the widget accepts, verified against the widget source — values, defaults, and which script version supports it.
This page is the exhaustive companion to the parameter table in each platform install guide: every parameter the widget reads, what it does, which script version(s) support it, and its default when omitted. If you just want a working embed for your platform, start with the install guide for your platform instead — come back here when you need the full contract.
Recommended default embed
Unless you have a specific reason to change it, start here: omit rows (infinite scroll reads better for a first install than pagination), and turn on ratings and catfilter so the gallery ships with social proof and a way to narrow a large catalog:
Recommended default (v2)
<!-- Crafted Pour SEO script (load first) -->
<script type="text/javascript"
src="https://plugin.craftedpour.com/v2/scripts/crafted-pour-recipe-plugin-seo.js">
</script>
<!-- Crafted Pour recipe widget — recommended default -->
<script id="crafted-pour-recipe-plugin-script"
src="https://plugin.craftedpour.com/v2/scripts/crafted-pour-recipe-plugin.js?plugin_id=YOUR_PLUGIN_ID&ratings=true&catfilter=true&primaryColor=B42B30">
</script>Copy-paste snippets by mode
Gallery mode
A full cocktail gallery — the default rendering when no sku or product restricts it to one bottle. Use this on a dedicated recipes/cocktails page.
Gallery embed
<!-- Crafted Pour SEO script (load first) -->
<script type="text/javascript"
src="https://plugin.craftedpour.com/v2/scripts/crafted-pour-recipe-plugin-seo.js">
</script>
<!-- Crafted Pour recipe widget — recommended default -->
<script id="crafted-pour-recipe-plugin-script"
src="https://plugin.craftedpour.com/v2/scripts/crafted-pour-recipe-plugin.js?plugin_id=YOUR_PLUGIN_ID&ratings=true&catfilter=true&primaryColor=B42B30">
</script>Product-page mode (via sku)
On an ecommerce product template, template the sku value (UPC preferred) so one snippet covers your whole catalog. Pair with rows=1 for a single swipeable row and ratings=true for that bottle’s community reviews:
Product page embed
<!-- Crafted Pour recipe widget — product page mode -->
<script id="crafted-pour-recipe-plugin-script"
src="https://plugin.craftedpour.com/v2/scripts/crafted-pour-recipe-plugin.js?plugin_id=YOUR_PLUGIN_ID&rows=1&ratings=true&sku=YOUR_PRODUCT_UPC_OR_SKU&primaryColor=B42B30">
</script>Ratings-only mode
The same script also runs as a standalone reviews widget — no recipe grid at all:
Ratings-only embed
<!-- Crafted Pour recipe widget — ratings-only, no recipe grid -->
<script id="crafted-pour-recipe-plugin-script"
src="https://plugin.craftedpour.com/v2/scripts/crafted-pour-recipe-plugin.js?plugin_id=YOUR_PLUGIN_ID&ratings=true&recipes=false&primaryColor=B42B30">
</script>Recipe deep-link (informational)
You do not construct these URLs by hand — the widget appends cp_rid (or, where available, cp_slug) automatically when a shopper clicks into a recipe. Documented here so the pattern is recognizable in your analytics, server logs, or Search Console:
Recipe detail URL pattern
<!-- A recipe card's own outbound link — the widget appends this automatically
when a shopper clicks a recipe. You do not need to construct this by hand;
it is documented here so the pattern is recognizable in analytics/logs. -->
https://yourdomain.com/your-recipes-page?cp_rid=RECIPE_ID
<!-- Slug-addressed form, used internally by the recipe-detail view -->
https://yourdomain.com/your-recipes-page?cp_slug=recipe-name-slugFull parameter reference
All parameters are optional. Chain them with & after the ? in the script src. Color values are 6-digit hex without the # prefix — a # starts a URL fragment, silently truncating everything after it.
| Parameter | Values / format | What it does | v1 | v2 | Default |
|---|---|---|---|---|---|
plugin_id | string (Crafted Pour plugin document ID) | Identifies your widget configuration. On your live site the widget resolves your configuration by matching the page hostname against the domains registered with Crafted Pour; plugin_id is the explicit binding used where hostname matching is not possible (previews, staging pages) — include it anyway, since it is how we identify your embed when troubleshooting. | Yes | Yes | none |
rows | integer, e.g. rows=2 | Caps the gallery to a fixed number of rows with prev/next paging arrows. Omit for an infinite-scroll gallery. Use rows=1 on product pages for a single swipeable row. | Yes | Yes | unset (infinite scroll) |
featured | featured=true | Curated FEATURED recipes — hand-picked seasonal recipes photographed with your product, managed per brand in the CMS. Behavior differs by version: on v2, galleries already show a FEATURED rail above the grid by default when curated content exists (this param just forces it); on v1, featured=true replaces the gallery with a featured-only single-row carousel — leave it off on gallery pages. | Yes (replaces gallery) | Yes (rail above gallery) | false (v2 rail: on by default) |
recipes | recipes=false | Set to false to hide the recipe grid entirely. Combine with ratings=true for a ratings-only embed. | Yes | Yes | true |
ratings | ratings=true | Shows the community product-ratings section (creator tasting notes and star ratings). Designed for single-product pages; also usable standalone with recipes=false. | Yes | Yes | false |
catfilter | catfilter=true | Adds a category (cocktail/spirit-type) filter dropdown. filters=true is an equivalent alias found in older embeds. | Yes | Yes | false |
brandfilter | brandfilter=true | Adds a brand selector — for multi-brand plugins (portfolios, groups, and retailers). | Yes | Yes | false |
productfilter | productfilter=true | Adds a product filter. Renders as a dropdown or as visual product-image pills depending on the brand’s partner-level filter style setting. | Yes | Yes | false |
brand | string (Crafted Pour brand ID); repeatable | Restricts the gallery to one or more specific brand IDs. Omit to use every brand registered on the plugin document — this is what makes a multi-brand retailer embed show its whole stocked catalog by default. | Yes | Yes | unset (all plugin brands) |
product | string (Crafted Pour product ID); repeatable | Restricts the gallery to one or more specific product IDs. Use sku instead when you have a UPC/SKU to match on — product is for the cases where you already have the Crafted Pour product ID on hand. | Yes | Yes | unset |
sku | string (UPC preferred, or SKU); repeatable | Matches a product by UPC or SKU and resolves it to the underlying product ID for you — the standard way to wire a product-detail-page template (Liquid, Twig, JSX) without hardcoding Crafted Pour product IDs. | Yes | Yes | unset |
rtag | string (a recipe tag / cocktail type, e.g. rtag=Margarita); repeatable | Filters the gallery to recipes carrying the given tag(s). Applies in the infinite-scroll (no rows=) mode. | Yes | Yes | unset |
primaryColor | 6-digit hex, no #, e.g. primaryColor=B42B30 | Main accent color — recipe card headers, pagination arrows, progress bars, buttons. | Yes | Yes | 93442F |
color | 6-digit hex, no # | Alias for primaryColor, fully supported (not deprecated) — many live installs use it. If both are present, primaryColor wins. Prefer primaryColor on new installs. | Yes | Yes | 93442F |
secondaryColor | 6-digit hex, no # | Background for ingredient-section borders, contributor boxes, and tag chips. | Yes | Yes | FFFFFF |
backgroundColor | 6-digit hex, no # | Widget container background. | Yes | Yes | transparent (inherits page background) |
textColor | 6-digit hex, no # | Main text color across recipe names, ingredients, instructions, and contributor bylines. | Yes | Yes | 000000 |
textPosition | textPosition=bottom | Moves the recipe name and creator credit below each photo instead of overlaid on it — a cleaner look on minimal site designs. | Yes | Yes | overlay |
recipeItemBorder | recipeItemBorder=0 | Set to 0 for square recipe-card corners. Omit for the default rounded cards. | Yes | Yes | rounded |
cp_rid | string (recipe ID) — output/navigation param, not one you hand-author | Set automatically when a shopper clicks a recipe card, to open that recipe’s detail view. Recognizable in your analytics as the signature of a recipe-detail pageview. | Yes | Yes | n/a (set by the widget) |
cp_slug | string (recipe slug) — output/navigation param | Slug-addressed equivalent of cp_rid, used internally by the recipe-detail view when a slug is available. | Yes | Yes | n/a (set by the widget) |
Partner-level behavior that is not an embed parameter — editor’s notes, smart product placement (competitor masking), generic-recipe inclusion, and filter style — is configured per brand in the CMS instead. See the Partner Settings guide.
SEO script tag
The recipe gallery and the SEO content are two separate script tags, and the order matters — the SEO script goes first, on the same page, as shown in every snippet above:
SEO script (load before the widget script)
<script type="text/javascript"
src="https://plugin.craftedpour.com/v2/scripts/crafted-pour-recipe-plugin-seo.js">
</script>It server-renders each recipe’s title, ingredients, instructions, and AI-sommelier editor’s note directly into the page HTML before any JavaScript runs, plus Recipe structured data (JSON-LD) with aggregate star ratings — so crawlers index real content on your domain instead of an empty widget shell, and your pages become eligible for Google’s rich results.
Always close the script tag explicitly — never self-close it. A self-closing <script … /> is invalid HTML5. Browsers recover by treating everything up to the next real </script> (or end of document) as part of the script’s content, which can silently swallow the rest of your page’s <head> — including your title and meta tags. This has broken real partner installs in the past.
Invalid — do not do this
<!-- INVALID HTML5 — do not do this -->
<script id="crafted-pour-recipe-plugin-script"
src="https://plugin.craftedpour.com/v2/scripts/crafted-pour-recipe-plugin.js?plugin_id=YOUR_PLUGIN_ID" />Valid
<!-- Always close with an explicit tag -->
<script id="crafted-pour-recipe-plugin-script"
src="https://plugin.craftedpour.com/v2/scripts/crafted-pour-recipe-plugin.js?plugin_id=YOUR_PLUGIN_ID">
</script>How to know it worked
- The gallery renders. Open the published page — you should see a grid of recipe cards with photos and a “Powered by Crafted Pour” badge. If you enabled
featured=true, a FEATURED rail leads the page. - Cards open recipe pages on your domain. Click any recipe — the URL should stay on your site and gain
?cp_rid=…, showing the full recipe with your product linked in the ingredients. - Your products are shoppable. On a recipe that uses your product, the ingredient should link out with your “shop” call-to-action (competitor names masked if smart product placement is on).
- SEO content is being served. On a recipe page (with
cp_ridin the URL), use View Source and search forrecipe-seo-contentor the recipe name — it should appear in the raw HTML. - No console errors. Open your browser's developer tools (F12) → Console. A healthy install logs
Recipe widget loadedwith no red errors.
Want the platform-specific walkthroughs (WPCode snippets, Shopify Liquid templates, Squarespace code injection, and more)? See all install guides. Curious what the widget does end to end? See the full feature tour.
Install it free — or let us do it for you
Everything on this page is free to self-install with your existing widget. Prefer white-glove? We offer paid installation — custom styling, placement, and theme work included — so it is live on your site without you touching a line of code.