This guide puts a customer photo under each item in your abandoned-cart email. It uses the Klaviyo connection and the Abandoned cart block.
You need a Shopify store connected to Idukki and a Klaviyo account. You also need an abandoned-cart flow triggered by Started Checkout.
Set it up
- Connect Klaviyo (early access). In Idukki, open Settings > Klaviyo Integration and click Connect to Klaviyo. Approve the access in Klaviyo. You come back to Idukki with a Klaviyo connected badge.
- Tag posts to products. Open a collection and tag each post to the Shopify product it shows. A tagged post syncs to Klaviyo on its own. Approving a post’s rights also starts a sync.
- Sync the catalog. In the Klaviyo tab, click Sync now. Catalog items synced shows how many products have content. Last synced shows when it ran.
- Copy the Abandoned cart block. In the Template block library, find Abandoned cart, marked Start here. Click Copy.
- Paste it into your flow. In Klaviyo, open the email in your Started Checkout flow. Add an HTML block where the cart items are listed. Paste the block there.
- Preview the email. Preview the email with a profile whose cart holds a product you tagged. Each tagged item shows one customer photo. Items with no content show nothing.
- Check clicks in the dashboard. Go back to the Klaviyo tab in Idukki. The Email UGC card shows Email UGC clicks and Attributed revenue for the last 30 days.
The block you paste
This is the Abandoned cart block from the tab. Copy it from the tab when you set up, in case it has changed.
{% 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 %}The catalog tag looks up the Idukki catalog item for each cart product. The part that reads integration="api" points it at the catalog Idukki writes. Without it, Klaviyo reads your Shopify catalog and finds no photos.
The block reads item.product_id, the Shopify product id on the Started Checkout event. We have not yet checked that field in a live Klaviyo send. Preview before you switch the flow on.
Seeing results for this flow
By default every click lands under one flow, named unknown. Idukki cannot tell which flow sent it. To split them out, add &flow=abandoned-cart after the click link merge tag in Klaviyo.
Common questions
- What if a cart item has no customer photo?
- Nothing shows for that item. The rest of the email sends as normal.
- Can the block show a video?
- It shows the video’s still image. A click opens the product page.
- Does Idukki email my shoppers?
- No. Klaviyo sends the email. Idukki supplies the photo and the tracked link.
Related
Needed for step 1.
The web feed, which works without the connection.
The three blocks and the flow each one goes in.
What to check when a product shows no photo.


