---
title: Pre-fill Shopify Checkout from Your Email and SMS Merge Tags | Cart Rocket Blog
description: Fill in a shopper's email, name, address or phone at Shopify checkout from your email or SMS tool's merge tags. Link format, Klaviyo example, permalink comparison and privacy.
url: https://cartrocket.dev/blog/prefill-shopify-checkout-email-sms.html
---

How-to · 5 min read · By Robin · October 14, 2026

# Pre-fill Shopify Checkout from Your Email and SMS Merge Tags

When someone taps a link in your email or text, you already know their email address and name. Typing them again at checkout is one more step before they pay. This post shows how to put those details into a cart link with your email or SMS tool's merge tags, how that compares with Shopify's own permalink parameters, and where to be careful.

## How it works

Email and SMS tools can swap a placeholder for each recipient's data when they send a message. That's how "Hi {{ first_name }}" becomes "Hi Sam". The same swap works inside a link. Put the tags in the link's address, and every recipient gets a link carrying their own email address and name. When they open it, checkout shows those details already filled in.

## What Shopify offers natively

Shopify's [cart permalinks](https://shopify.dev/docs/apps/build/checkout/create-cart-permalinks) accept checkout fields as URL parameters: `checkout[email]` and shipping address fields such as `checkout[shipping_address][first_name]`, `[last_name]`, `[address1]`, `[city]`, `[province]`, `[country]` and `[zip]`. Shopify's example looks like this:

```
https://{shop}.myshopify.com/cart/70881412:1,70881382:1?checkout[email]=example@example.com&checkout[shipping_address][city]=thisismyhometown
```

It's free, and if you're already sending permalinks you can add merge tags to those parameters. The trade-offs are the ones that come with permalinks in general: you list variant IDs by hand, discounts have to be existing codes, and subscription products don't work. Phone isn't among the fields that page lists.

## With a Cart Rocket cart link

The **Checkout details** section of the cart editor fills in the shopper's email, name, address or phone at checkout. Its first part, **Fill in from your email or SMS tool**, reads values your tool puts in the link.

1. Open the cart and go to **Checkout details**.
2. Under **Fill in from your email or SMS tool**, tick the details you want: **Email**, **Name**, **Shipping address**, **Phone**. A link only accepts the details you turn on for it.
3. Copy the link format the section shows.
4. Replace each part in curly brackets with your email or SMS tool's personalisation tag for that field.
5. Save the cart and paste the finished link into your message.

With **Email** and **Name** turned on, the format looks like this:

```
https://your-store.com/apps/cart/spring-kit?email={email}&first_name={first_name}&last_name={last_name}
```

If you tick **Shipping address** or **Phone**, copy the format from the section rather than guessing the parameter names.

Each tool writes its tags differently. In Klaviyo, for example, the profile tags are `{{ email }}`, `{{ first_name }}` and `{{ last_name }}`, per Klaviyo's [personalization tags guide](https://help.klaviyo.com/hc/en-us/articles/4408802648731), so the link becomes:

```
https://your-store.com/apps/cart/spring-kit?email={{ email }}&first_name={{ first_name }}&last_name={{ last_name }}
```

For other tools, look up the tag names in that tool's help pages. Klaviyo's guide doesn't cover putting tags inside a link, so whatever tool you use, send yourself a test and check that the link in the received message has your real details in it.

If a tag doesn't fill in and the link still contains something like `{email}` when it's opened, Cart Rocket ignores that part and the shopper types the detail at checkout as usual. Cart Rocket doesn't store these details.

Docs: [Checkout details](https://cartrocket.dev/docs/#checkout-details).

## Fill in the same details for everyone

The second part of the section stays closed until you click **Show**. It sets one email and shipping address for every shopper who opens the link. Choose **Existing customer** to find a customer by email address, or **Enter details** to type the email, name and address yourself. Once set, it shows an **In use** badge.

Despite the name, use this only for a link you send to one customer, such as a replacement order or a quote you've agreed by email. Everyone who opens the link gets the same details.

## When you use both

A detail in the link replaces the same detail you filled in for everyone, and anything the link leaves out keeps what you filled in. Say you filled in a shipping address for everyone and the link carries an email from your tool. Checkout gets the email from the link and the address you set.

## Keep these links to one person

A link with someone's details in it shows those details to whoever opens it. That's fine in a campaign or flow where each recipient gets their own copy of the message. Keep it out of places where other people can see it: a social post, a group chat, an ad, a QR code or a page on your site. The same applies to a Shopify permalink with `checkout[email]` in it. For anything public, use the same cart link without the merge tags.

## Good places to use it

- Win-back and buy-again emails to existing customers, paired with a [reorder link](https://cartrocket.dev/docs/#reorder-links) or a fixed set of products. Our post on [one email button that adds several products](https://cartrocket.dev/blog/klaviyo-add-multiple-products-to-cart-link.html) covers both.
- SMS to subscribers, where typing an email address on a phone keyboard is a chore.
- Recovery emails during busy weeks. [Abandoned cart email timing during Black Friday](https://cartrocket.dev/blog/abandoned-cart-email-timing-bfcm.html) covers when to send them.

Before a big send, open **Checkout details** and confirm the ticked boxes match the tags in your link. If a detail doesn't show at checkout, check that it's ticked and that your tool replaced the curly-bracket part with its own tag.
