Set up checkout for Adapty Mail

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 with your subscription products configured. Generate with AI supports Stripe only and connects in the builder. Use your own hosted paywall accepts any provider — Stripe, Paddle, PayPal, or other — since payment is handled on your side.

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

In Adapty Mail, go to Web Paywalls → Create. You have two paths:

  • Generate with AI: Adapty Mail’s bundled web paywall builder generates the funnel for you. Stripe only — for Paddle or PayPal, use the second option.
  • Use your own hosted paywall: Plug in a paywall you already host, on any payment provider.

Generate with AI

The Create page shows a Prerequisites panel at the top with inline action buttons that walk you through each precondition — brand readiness, builder login, Stripe connection, products, and a final review-and-publish step. Work through it; the panel refreshes as each step completes.

Prerequisites panel on the Web Paywall Create page with checklist items and inline action buttons

When prerequisites are green, click Generate to open the generation dialog. Two choices to make:

  • Environment: Pick Production or Sandbox. Sandbox uses your Stripe test-mode products and is the safe default for dev and local environments — its account is isolated from production, so test transactions never affect live data.
  • Plans: Pick up to 3 Stripe plans. Each plan is a product + price combination. The paywall presents these as the offers at checkout. If you pick fewer than 3, the paywall lays out only the plans you selected.
Web paywall generation dialog with Environment toggle and Stripe plan selector

Click Generate to run the build. When it finishes, open the editor in the builder to review the result and publish. Then, click Save.

Important

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

For payment provider details inside the builder (Stripe accounts, test vs live mode, product setup), see Web paywall configuration.

Use your own hosted paywall

On this path Adapty Mail sends recipients to a page you host and substitutes each recipient’s values into the URL. Everything after the click — the offer, the payment, the personalization — happens on your side, with any payment provider.

  1. In Web Paywalls → Create, select Enter URL manually.

  2. Paste your hosted paywall URL with placeholders as query parameters. Adapty Mail substitutes them per recipient so the page can identify the visitor. Example:

    https://example.com/paywall?email={email}&adapty_profile_id={adapty.external_profile_id}
  3. Give the paywall a Name and save it. It’s then available to attach to campaigns.

The Create page lists the placeholders you can use, and ticks each one it finds in the URL you paste:

PlaceholderValue
{email}The recipient’s email address.
{adapty.external_profile_id}The recipient’s profile ID in Adapty.
{funnelfox.external_profile_id}The recipient’s profile ID in FunnelFox.
{custom.external_profile_id}The user ID you sent through the Adapty Mail API.
{scheduled_email_id}The ID of the email that carried the link.

The three profile-ID placeholders are one per source a profile can arrive from, and the page lists all of them whether or not your project uses them. Reach for the one that matches how you send data: {adapty.external_profile_id} for the Adapty integration, {custom.external_profile_id} for the API. A placeholder the recipient has no value for resolves to an empty string, so it never reaches your page as literal text — and a placeholder Adapty Mail doesn’t recognize is passed through as you typed it.

What your page has to do

Adapty Mail’s part ends at the redirect. Two jobs are yours:

  • Identify the visitor before checkout starts: Read the profile ID or email from the query string and attach it to the purchase, so the payment lands on the customer the email was sent to.
  • Report the purchase back: Adapty Mail never sees a payment taken on your own provider, and a purchase it doesn’t know about counts as neither a conversion nor attributed revenue in Analytics — worse, the rest of the sequence keeps going out to someone who already bought. Send it through whichever path already carries your data: the Adapty integration, or a transaction event on the Adapty Mail API.

Test it before launching

Send test email proves the email renders and your page takes payment, but Sandbox isn’t selectable for a paywall added by URL — the modal reports “This paywall has no sandbox products, so only production is available.” So a test goes to your live page with live products: use a real card and refund it, or point the URL at your own test environment while you verify the wiring. See Test your setup.

What the checkout looks like

When a user clicks a checkout link, they land on the Main conversion page. After they attempt payment, they see either Payment success or Payment failed — only one is shown per attempt.

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

SectionWhat AI generates
HeadlineBold, benefit-driven headline
SubheadlineSupporting value proposition
Offer badgeUrgency badge (no invented prices — uses vague promo language)
CTA buttonAction-oriented text, 2–5 words
Benefits3–6 emoji + text benefit cards
Features3–8 feature descriptions with title and subtitle
PlansPlan selection title and offer timer text
Social proofCommunity proof text and 3–5 realistic user reviews
FAQ3–6 common questions and answers
GuaranteeMoney-back or satisfaction guarantee text

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

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

How personalization works

Every email’s CTA links to a checkout URL built for its recipient. Before sending, Adapty Mail replaces each placeholder in your paywall URL with that recipient’s values:

https://example.com/paywall?email=jane@example.com&adapty_profile_id=6f2a...c91

A generated paywall gets these parameters automatically — no configuration in the web paywall builder is required. For a paywall you added by URL, you choose which placeholders to include. When the user clicks, the checkout page 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.

Troubleshooting

IssueSolution
Checkout link doesn’t openVerify the paywall is published in the web paywall builder
User not identified at checkoutConfirm Adapty.identify() was called with the correct user ID before the email was sent
Purchase not attributed to emailAttribution follows the click on the email’s CTA, so the recipient has to reach checkout through that link, and the purchase has to reach Adapty Mail on the same profile. A purchase already attributed to an earlier email keeps that attribution