---
title: "Set up checkout for Adapty Mail"
description: "Build a web paywall and connect a payment provider to give your email campaigns a personalized web checkout."
---

Each email Adapty Mail sends contains a unique checkout link for that recipient. When they click, they land on a web checkout funnel that identifies them by profile, presents your offer, and processes payment. Checkout funnels live in **Web Paywalls** inside Adapty Mail and are edited in the bundled **web paywall builder**.

## Requirements

- A web payment provider account (Stripe, Paddle, or PayPal) with your subscription products configured — you will need to connect it inside the web paywall builder

You don't need a separate account for the web paywall builder. It's bundled with Adapty Mail: a workspace is provisioned automatically the first time you log in, and you're signed into the editor using your Adapty credentials. This is independent of any web paywall you may have configured on the main Adapty dashboard's paywall page — Adapty Mail's web paywalls are separate entities, managed entirely from Adapty Mail.

## Set up your checkout funnel

1. In Adapty Mail, go to **Web Paywalls → Create**.
2. Choose **Generate with AI** to build a funnel, or paste an existing web paywall URL.
3. If generating: Click **Log in to the paywall builder**. The web paywall builder opens in a new tab. If you aren't already signed in, sign in using your Adapty credentials.
4. In the builder, connect your payment provider (Stripe, Paddle, or PayPal) under payment settings. See [Web paywall configuration](web-paywall-configuration) for details.
5. Review the generated paywall and click **Publish** inside the builder.

:::important
The paywall must be published before it can serve checkout traffic. Unpublished paywalls return an error when users click email checkout links.
:::

:::note
mail-checkout-setup.webp
:::

## What the checkout looks like

When a user clicks a checkout link, they go through a four-screen funnel:

**1. Email confirmation**
Greets the user by name or email and confirms their identity before proceeding.

**2. Main conversion page**
A full-page sales presentation. AI generates the copy and images for each section:

| Section | What AI generates |
|---|---|
| Headline | Bold, benefit-driven headline |
| Subheadline | Supporting value proposition |
| Offer badge | Urgency badge (no invented prices — uses vague promo language) |
| CTA button | Action-oriented text, 2–5 words |
| Benefits | 3–6 emoji + text benefit cards |
| Features | 3–8 feature descriptions with title and subtitle |
| Plans | Plan selection title and offer timer text |
| Social proof | Community proof text and 3–5 realistic user reviews |
| FAQ | 3–6 common questions and answers |
| Guarantee | Money-back or satisfaction guarantee text |

**3. Payment success**
A celebratory message with next steps and an AI-generated image.

**4. Payment failed**
A friendly message prompting the user to try again. The checkout state is preserved.

:::note
mail-checkout-screens.webp
:::

## How personalization works

Every email contains a unique checkout URL with the recipient's `customer_user_id` and email address embedded as parameters:

```
https://your-funnel.com/?cid={{customer_user_id}}&email={{email}}
```

Adapty generates these URLs automatically when sending each email — no configuration in the web paywall builder is required. When the user clicks, the builder reads the parameters to identify them. When a purchase completes, Adapty matches the revenue to the specific email that drove the conversion. This data appears in [Campaign analytics](mail-analytics).

## Troubleshooting

| Issue | Solution |
|---|---|
| Checkout link doesn't open | Verify the paywall is published in the web paywall builder |
| User not identified at checkout | Confirm `Adapty.identify()` was called with the correct user ID before the email was sent |
| Purchase not attributed to email | Check that the `cid` parameter is present in the checkout URL — contact support if parameters are missing |