Abandoned cart recovery with Drip
Drip has built-in abandoned cart workflows for Shopify. Checkout Links makes them better by adding tiered promotions based on cart value.
Why Use Checkout Links
Drip's default abandoned cart link takes customers back to their Shopify checkout - that's it. With Checkout Links, you can:
- Offer tiered discounts - 10% off for carts over $50, 15% for carts over $100
- Add free shipping thresholds - Free shipping on orders over $75
- Include free gifts - Bonus item for high-value carts
- Combine incentives - Stack discounts, free shipping, and gifts based on cart value
Quick Setup
Add the ?li= parameter with this Drip variable to load cart items:
{% for item in event.items %}{{ item.product_id }},{{ item.quantity }}{% unless forloop.last %}:{% endunless %}{% endfor %}
Your final link:
https://yourstore.com/abandoned-cart?li={% for item in event.items %}{{ item.product_id }},{{ item.quantity }}{% unless forloop.last %}:{% endunless %}{% endfor %}
item.product_id should contain the Shopify variant ID when synced from Shopify cart events. If your products have multiple variants, test to confirm the correct IDs are being passed. See the troubleshooting section below if cart items aren't loading correctly.
Create Your Abandonment Link
Your link is now configured to load cart contents from Drip's event data.
Add Promotions (Optional)
With tiered promotions, you can offer different incentives based on cart value:
| Cart Total | Offer |
|---|---|
| Up to $50 | Free shipping |
| $50 - $150 | Free shipping + 10% off |
| $150+ | Free shipping + 10% off + free gift |
Copy Your Link
Add the Link to Your Drip Workflow
{% for item in event.items %}{{ item.product_id }},{{ item.quantity }}{% unless forloop.last %}:{% endunless %}{% endfor %}
Your final link will look like:
https://yourstore.com/abandoned-cart?li={% for item in event.items %}{{ item.product_id }},{{ item.quantity }}{% unless forloop.last %}:{% endunless %}{% endfor %}
Troubleshooting
Cart items not loading
If clicking the link shows an empty cart, the issue is likely with field names in Drip's event data. To inspect what fields are available:
- In your Drip email template, temporarily add this debug line:
{{ event.items | json }} - Trigger a test abandoned cart event
- Send yourself the test email and check the raw JSON output
- Look for the field that contains the Shopify variant ID (it may be
variant_id,product_id, or another name) - Update the template to use the correct field name
Wrong products loading
If the cart loads but with incorrect products, product_id in Drip may be mapping to Shopify's parent product ID rather than the specific variant ID. In this case:
- Check the JSON output (see above) for a
variant_idfield - Replace
item.product_idwithitem.variant_idin the template:{% for item in event.items %}{{ item.variant_id }},{{ item.quantity }}{% unless forloop.last %}:{% endunless %}{% endfor %}
Test Your Workflow
Related Resources
- Dynamic Links - Learn about dynamic URL parameters
- Promotions - Set up cart-value based discount tiers
- Klaviyo abandoned cart - Using Klaviyo instead? See our Klaviyo guide