There are two ways to get Idukki customer photos into Klaviyo emails. The web feed works today and needs no keys. The Klaviyo connection is in early access.
What works today: the web feed
Idukki publishes a public JSON feed of your product-tagged posts. Klaviyo web feeds can read it. Posts you have hidden are left out.
Add the web feed
- Tag posts to products. The feed returns only posts tagged to a product. Tag the posts you want in email first.
- Add the feed in Klaviyo. In Klaviyo, add a web feed with the URL https://api.idukki.io/webfeed/YOUR_BGUID. Use method GET and content type JSON. Your bguid is the data-bguid value in your Idukki embed code.
- Filter to one product. Add ?productId= and the Shopify product id to show one product. A comma list matches several. An unknown product returns an empty list, so the block hides.
- Render the posts. In an HTML block, loop over feeds.YOUR_FEED_NAME.result.data. Use image_url, title and link from each post.
{% for post in feeds.Idukki_ugc.result.data %}
<a href="{{ post.link }}">
<img src="{{ post.image_url }}" alt="{{ post.title }}" width="180" style="max-width:100%;height:auto;">
</a>
{% endfor %}Email Campaign in your Idukki dashboard writes this HTML for you. Pick posts and a grid, then copy the code. If Email Campaign is not in your dashboard, request it from its page.
Feed links go straight to the product page. Klaviyo counts those clicks. Idukki does not see them.
In early access: the Klaviyo connection
Once the connection opens for your store, it works like this.
- Connect from Settings > Klaviyo Integration with Connect to Klaviyo. Idukki asks for catalog access only.
- A post syncs to a Klaviyo catalog when you tag it to a Shopify product. Approving its rights also starts a sync. Sync now runs a full sync.
- Each catalog item is keyed by the Shopify product id. It carries the photo, the caption and a tracked click link.
- The same tab has a Template block library with three blocks. They are Abandoned cart, Thank you / after purchase and Any product block.
- A block shows nothing for a product with no content. A live send never shows an empty slot.
- Image clicks go through an Idukki tracked link and are matched to your Shopify orders. The Email UGC card shows clicks and attributed revenue.
- Disconnect Klaviyo revokes the token. A catalog item is removed when no eligible post is left for its product.
{% for item in event.extra.line_items %}
{% catalog item.product_id integration="api" %}
{% if catalog_item.metadata.ugc_thumbnail_url %}
<a href="{{ catalog_item.metadata.ugc_click_url }}">
<img src="{{ catalog_item.metadata.ugc_thumbnail_url }}" alt="Customer photo of {{ item.title }}" width="280" style="max-width:100%;height:auto;border-radius:8px;">
</a>
{% endif %}
{% endcatalog %}
{% endfor %}Common questions
- Do I need a new flow in Klaviyo?
- No. Paste the feed loop or the block into a flow you already run.
- Will new photos show up without editing the flow?
- Yes. With the connection, a newly tagged post syncs to the catalog. The next send reads it. With the web feed, Klaviyo picks up new posts when it next fetches the feed.
- Can I see revenue from these emails?
- With the connection, the Email UGC card shows 30 days of clicks and attributed revenue. With the web feed, Klaviyo reports the clicks.
- Is Idukki in the Klaviyo App Marketplace?
- No. Klaviyo reviews an app after five live installs. That waits on the connection opening to stores.
Next steps
We will tell you when it opens for your store.
Builds the web feed HTML for Klaviyo from posts you pick.
The step-by-step guide for the Klaviyo connection.
Sync status, product id matching and where the block sits.


