Cart permalinks take customers directly to a store cart or checkout with a pre-loaded cart. When you generate a cart permalink, you direct customers who want to buy a specific product from the sales channel directly to a merchant's store cart or checkout to complete the purchase. Cart permalinks work best for apps that enable customers to buy items from a single merchant.

You can use cart permalinks to apply one or more variant IDs to a cart or checkout, or append query parameters to the cart permalink URL to include additional information and attribute an order to your sales channel.

Building a sales channel with permalinks requires the lowest integration effort because your sales channel app doesn't need to [request payment processing](/docs/apps/build/sales-channels/start-building#step-3-request-payment-processing), and sync orders, handle disputes, or manage refunds.

## What you'll learn

In this tutorial, you'll learn how to do the following tasks:

- Create cart permalinks
- Modify the checkout
- Attribute an order to your sales channel
- Apply discounts
- Add conversion tracking information
- Redirect customers to the Online Store cart instead of checkout

## Limitations

[Selling plans](/docs/apps/build/purchase-options/subscriptions/selling-plans) don't work with cart permalinks.

## Scenario

You have a sales channel app from which you want to link directly to a merchant's checkout or their online store cart. You want your link to pre-load the cart with two specific products.

## Step 1: Create a cart permalink

Add product variant IDs and quantities to the shop URL.

```
http://{shop}.myshopify.com/cart/#{variant_id}:#{quantity}(,...)
```

The following example adds one each of two products to the cart by specifying the product variant IDs (`70881412` and `70881382`) with a quantity of one (`1`):

```
http://{shop}.myshopify.com/cart/70881412:1,70881382:1
```

## Step 2 (Optional): Modify the checkout

You can append `checkout` query parameters to the cart permalink URL.

The following example includes `[email]` and `[shipping_address]` as the checkout fields. `[shipping_address]``[city]` shows how you can use nesting to populate child fields.

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

<table>
    <caption></caption>
    <thead>
        <tr>
            <th>Checkout parameter</th>
            <th>Description</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><code>checkout[email]</code></td>
            <td>The email of the customer making the checkout</td>
        </tr>
        <tr>
            <td><code>checkout[shipping_address][first_name]</code></td>
            <td>The first name field for the shipping address</td>
        </tr>
        <tr>
            <td><code>checkout[shipping_address][last_name]</code></td>
            <td>The last name field for the shipping address</td>
        </tr>
        <tr>
            <td><code>checkout[shipping_address][address1]</code></td>
            <td>The address 1 field for the shipping address</td>
        </tr>
        <tr>
            <td><code>checkout[shipping_address][address2]</code></td>
            <td>The address 2 field for the shipping address</td>
        </tr>
        <tr>
            <td><code>checkout[shipping_address][city]</code></td>
            <td>The city field for the shipping address</td>
        </tr>
        <tr>
            <td><code>checkout[shipping_address][province]</code></td>
            <td>The province field for the shipping address</td>
        </tr>
        <tr>
            <td><code>checkout[shipping_address][country]</code></td>
            <td>The country field for the shipping address</td>
        </tr>
        <tr>
            <td><code>checkout[shipping_address][zip]</code></td>
            <td>The postal code field for the shipping address</td>
        </tr>
    </tbody>
</table>

## Step 3: Attribute an order to a sales channel

To attribute an order to a sales channel, you can add a [storefront access token](/docs/api/admin-graphql/latest/objects/StorefrontAccessToken) as an additional parameter to the permalink. Merchants can view sales attributions in the [Sales by Channel report](https://help.shopify.com/en/manual/reports-and-analytics/shopify-reports/report-types/sales-report#sales-by-channel), which shows the name of the channel that the customer used to place the order. Sales attributions also appear on the sidebar in the Shopify admin.

You can specify a storefront access token in the cart permalink as shown in the following example:

```
http://{shop}.myshopify.com/cart/70881412:1,70881382:1?access_token=#{access_token}
```

## Step 4 (Optional): Apply discounts

You can append a `discount` query parameter to apply discounts in the cart permalink URL, as shown in the following example:

```
http://{shop}.myshopify.com/cart/70881412:1,70881382:1?discount={discount_code}
```

You can also append multiple discounts in the cart permalink URL, separated by a comma `,`:

```
http://{shop}.myshopify.com/cart/70881412:1,70881382:1?discount={discount_code},{discount_code2}
```

> Note:
> You can't pass discount codes that contain a comma, such as `savings, today!`, using the `discount` URL parameter.

## Step 5 (Optional): Add conversion tracking information

If you want to add [conversion tracking](https://help.shopify.com/en/manual/orders/conversion-summary) information, then you can append one of the following query parameters to the cart permalink:

- `note`
- `attributes`
- `ref`

You can add multiple `attributes` parameters. `note` and `attributes` parameters will display in the **Notes** section on the order details page. The `ref` parameter will display as a referral code in the **Conversion summary** section on the details page.


```
http://{shop}.myshopify.com/cart/70881412:1,70881382:1?note=came-from-newsletter-2022-01-01
```

```
http://{shop}.myshopify.com/cart/70881412:1,70881382:1?attributes[from]=came-from-newsletter-2022-01-01&attributes[example]=example-value
```

```
http://{shop}.myshopify.com/cart/70881412:1,70881382:1?ref=came-from-newsletter-2022-01-01
```

## Step 6: Redirect to the cart instead of checkout

> Note: 
> This step is optional if you aren't [building an app as a sales channel](/docs/apps/build/sales-channels).

If you want the cart permalink to redirect customers to the Online Store cart instead of the checkout page, then you can append the `storefront` query parameter in the cart permalink URL:

```
http://{shop}.myshopify.com/cart/70881412:1,70881382:1?storefront=true
```

## Next steps

- [Bill for your app](/docs/apps/launch/billing)