Bundle Open Graph Image Template
A dark bundle card with joined product tiles, a name, and a savings stat.
A dark bundle card with joined product tiles, a name, and a savings stat.
Every Open Graph image template is included with Basic and Pro. Pick a plan to copy the code, install with the CLI, and download the raw SVG.
Already purchased? Log in
Use the Bundle template for kits, starter packs, and any product page that sells several items together as one purchase. It leads with three drawn product tiles joined by plus signs, then names the bundle underneath and puts the saving front and center in a pill, so the value reads before anyone clicks through from a feed.
This template is a metadata image route for the Next.js App Router. The file exports size, contentType, and alt values plus a default async function that returns an ImageResponse. When a bundle page is shared, satori converts the JSX into an SVG document, the runtime rasterizes that SVG into a 1200 by 630 PNG, and Next.js serves the result and wires the og:image and twitter:image tags into the page head automatically. The product tiles are drawn from plain divs, so the card carries no image dependencies of its own.
Install with the shadcn CLI using your Shadcn UI Blocks API key:
npx shadcn@latest add @shadcn-ui-blocks/og-image-bundle-offer
The file lands at app/opengraph-image.tsx, which makes it the site wide share card. For a bundle catalog, move it into the bundle segment instead, for example app/bundles/[slug]/opengraph-image.tsx. You can also copy the code from this page straight into your project.
The card renders text with Inter, read from assets/fonts at your project root with node:fs so the font files never ship to the browser. Download the latin woff files for weights 400, 500, 600, and 700 from Fontsource and save them as assets/fonts/inter-latin-400-normal.woff and so on.
The content object holds the brand, the title, the description, the save pill, the price, and the url. The three product tiles come from a [0, 1, 2].map, and each tile draws a different shape sized by its index, so change those dimensions to hint at your own products. Keep the save copy tight, a phrase like Save 30% reads best against the bright pill, and the price sits large in the bottom corner where a short currency string holds its weight.
satori supports a focused subset of CSS: flexbox layout only, flat colors, and an explicit display: flex on any element with multiple children. Keep those rules in mind if you rework the layout.