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 %}

Drip uses standard Liquid syntax. The field 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

Create a new link — Go to **Checkout Links** and click **Create Link**. Name your link — Give it a descriptive name like "Abandoned Cart - Drip" so you can easily identify it later. Set a custom slug — Enter a custom slug such as `abandoned-cart` or `recover`. This will be part of your URL. Enable Dynamic mode — Toggle on **Dynamic** to enable dynamic URL parameters. This allows the link to accept cart items via the `?li=` parameter.

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

Set a maximum limit if you don't want to discount high-value carts. This protects your margins on large orders.

Combine with Pre-checkout extensions to let customers modify their cart before checkout - great for fashion brands where customers might need to change sizes, or for adding optional upsells.

Copy Your Link

Save your link — Click **Save** to create your abandonment link. Copy the URL — Copy the link URL. It will look something like: `https://yourstore.com/abandoned-cart`. You'll add the `?li=` parameter with Drip variables in the next step.

Add the Link to Your Drip Workflow

Open your Cart Abandonment workflow — In **Drip**, navigate to **Automations > Workflows** and find your Shopify Cart Abandonment workflow. If you don't have one, create a new workflow using Drip's guided cart abandonment setup. Edit your email — Open the email in your cart abandonment workflow that you want to add the recovery link to. Find your call-to-action button — Locate the CTA button (e.g., "Complete your order" or "Finish checkout"). Replace the link URL — Replace the current link (usually `{{ event.abandoned_checkout_url }}` or `{{ event.cart_url }}`) with your Checkout Links URL. Add the Drip variable — Add `?li=` to your URL followed by this Drip Liquid variable:
{% 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 %}

Copy the Liquid template exactly as shown. Any missing characters — especially the colon separator between items — will prevent the cart from loading correctly.

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:

  1. In your Drip email template, temporarily add this debug line: {{ event.items | json }}
  2. Trigger a test abandoned cart event
  3. Send yourself the test email and check the raw JSON output
  4. Look for the field that contains the Shopify variant ID (it may be variant_id, product_id, or another name)
  5. 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:

  1. Check the JSON output (see above) for a variant_id field
  2. Replace item.product_id with item.variant_id in the template:
    {% for item in event.items %}{{ item.variant_id }},{{ item.quantity }}{% unless forloop.last %}:{% endunless %}{% endfor %}
    

Test Your Workflow

Save your template — Save your changes in Drip. Trigger an abandoned cart — Add items to your cart in your Shopify store and leave without completing checkout. Wait for Drip's cart abandonment trigger to fire (default is usually 1 hour). Check the email — Open the abandoned cart email you receive. Click the CTA button — Click your call-to-action button. Verify cart contents — Confirm that the abandoned cart items are loaded into checkout with your promotions applied. Check that product variants (size, color, etc.) are correct.

Related Resources