Product images that carry information — the price, the discount, "back in stock", a coupon code — are the same layout repeated across a catalogue. With Shareglint you keep that layout as a template and generate the image for each product from its data: one request when a price drops, a batch for the whole catalogue, or an automatic share card for every product page. Templates built for stores include product-og, product-sale, price-drop, flash-sale, coupon-code, product-review and product-grid; your own HTML and CSS works as well.
These are marketing images, not catalogue photos. Your product photography stays as it is; the generated image puts it into a card with the name, price and offer for places where that card helps: link previews, social posts, emails, ads and pins.
A share card for every product page
When someone shares a product link, the preview shows the page's og:image (Open Graph protocol) — often the first product photo cropped badly, or the store's logo. An auto OG URL fixes the whole catalogue with one tag: it reads the product page's title, description and image and renders a card the first time a crawler asks for it. Allow your store's domain in the dashboard, then put the tag into the theme:
{%- assign og_card = canonical_url | url_encode | prepend: 'https://shareglint.com/u/acc_YOUR_ACCOUNT_ID.png?url=' -%}
<meta property="og:image" content="{{ og_card }}">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
The Shopify page has the full snippet for Dawn's meta-tags.liquid, including which existing tag to replace so there is one og:image, not two; the same idea works on WooCommerce (WordPress), Webflow and other builders. An unchanged product is never charged twice, and tracking parameters such as ?utm_source= do not create new images.
Sale, price-drop and coupon graphics
For campaigns, send the values yourself:
curl -X POST "https://shareglint.com/v1/images?wait=true" \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"template": "price-drop",
"sizes": ["square", "story"],
"modifications": {
"name": "Trail Runner 2",
"brand": "Northwind",
"old_price": "$129",
"price": "$89",
"saving": "Save $40",
"cta": "Shop now",
"photo": "https://cdn.example.com/products/trail-runner-2.jpg"
}
}'
sizes returns the square post and the story of the same graphic in one call — the presets are og 1200×630, square 1080×1080, portrait 1080×1350, story 1080×1920, pinterest 1000×1500, youtube 1280×720 — so a price change in your store can post itself: a webhook on the price update calls the API and hands the image URLs to your scheduler. flash-sale takes a discount and an end date, coupon-code a code to show (put the code in the text of the post or email too, so it can be copied), and product-grid up to four products in one image for "new arrivals" posts. Prices are text you send, so format them for the market: "89 zł", "€89", "$89".
The whole catalogue from a CSV
Most store platforms export products as CSV. Keep the columns that match the template's fields — name, brand, price, old_price, photo — add a filename (the SKU works) and an id, and send the file:
curl -X POST "https://shareglint.com/v1/batches" \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "template": "product-sale", "sizes": ["og", "pinterest"],
"csv_url": "https://example.com/exports/products.csv" }'
Each product × size is one image; GET /v1/batches/{id} gives every URL (with your id) and one ZIP. Rows per batch by plan: Free 50, Starter 500, Pro 1,000, Scale 2,000, Business 5,000. Run it again after a price update and only the changed products render anew — the rest come back free. The pinterest preset is 1000×1500, a 2:3 pin; columns maps CSV headers that do not match field names.
Where these images may and may not go
- Google Shopping: not with overlays. Merchant Center's image rules say the main product image must not include "promotional text, watermarks, or borders", and additional images may show the product in use or include graphics but not promotional overlays (Google Merchant Center). Use your clean photos in the feed; use the cards everywhere else.
- Marketplaces have their own photo rules (white backgrounds, no text) — the same split applies.
- Social, email and your own pages are where the cards earn their keep: link previews, organic posts, newsletters, abandoned-cart emails, and pins.
- Ads: check the network's own rules on text in images before uploading.
Practical notes
- Photos come from your CDN. Image fields take public URLs, fetched when the image renders. Private or internal addresses are refused.
- Transparent product shots look best on templates with a solid or gradient background; set
accentto your brand colour andthemeto light or dark. - Animation for a launch post:
animated-product-revealrenders an MP4 or GIF of up to 5 seconds, at 5 renders of quota each. - Fonts are the families installed on our renderer (
GET /v1/fonts); custom font files cannot be uploaded.
Cost
One render per image and size; repeats with the same values are free. A 2,000-product catalogue in two sizes is 4,000 renders the first time and only the changed products after that. The Free plan's 100 renders a month carry a watermark. Starter is $9 a month for 2,000 renders, Pro $29 for 10,000 (pricing).
What it does not do
- No background removal, retouching or AI-generated product scenes — the template lays out the photo you give it.
- No publishing to social networks or upload to Google Merchant Center; your scheduler or feed tool does that with the URLs.
- No live prices inside an already-shared image: a new price is a new image.