> ## Documentation Index
> Fetch the complete documentation index at: https://memberful.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Checkout experience

> Preview Memberful's branded, mobile-ready checkout flows for subscriptions, group plans, and choose-what-you-pay using a test credit card before going live.

export const RelatedDocs = ({link1, link2, link3, link4, link5, link6, link7, link8, link9, link10, className = ""}) => {
  const links = [link1, link2, link3, link4, link5, link6, link7, link8, link9, link10].filter(Boolean);
  if (!links.length) return null;
  return <section className={`related-docs border dark:border-gray-700 rounded-2xl px-6 py-4 mt-6 ${className}`}>
      <p className="mb-2 font-medium">
        <strong>Related help docs:</strong>
      </p>
      <ul className="space-y-1 mb-1 mt-1">
        {links.map((link, index) => <li key={index}>
            <a href={link.url}>{link.label}</a>
          </li>)}
      </ul>
    </section>;
};

export const MemberfulOverlay = () => {
  useEffect(() => {
    if (typeof navigator !== "undefined") {
      const ua = navigator.userAgent.toLowerCase();
      const isFirefox = ua.includes("firefox");
      const isSafari = ua.includes("safari") && !ua.includes("chrome");
      const isBrave = navigator.brave && navigator.brave.isBrave;
      const isMobile = (/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i).test(ua);
      const browserSupported = !isFirefox && !isSafari && !isBrave && !isMobile;
      if (!browserSupported) {
        console.log("Browser does not support Memberful overlay (Safari/Firefox/Brave/Mobile)");
        return;
      }
    }
    const existingScript = document.querySelector("script[data-memberful-embed]");
    if (existingScript) {
      if (window.Memberful && typeof window.Memberful.setup === "function") {
        window.Memberful.setup({
          site: ["https://demo.memberful.com"]
        });
        if (window.Memberful.detectSupport) {
          window.Memberful.detectSupport();
        }
      }
      return;
    }
    const script = document.createElement("script");
    script.src = "https://js.memberful.com/embed.js";
    script.async = true;
    script.setAttribute("data-memberful-embed", "true");
    script.onload = () => {
      console.log("Memberful script loaded successfully");
      if (window.Memberful && typeof window.Memberful.setup === "function") {
        window.Memberful.setup({
          site: ["https://demo.memberful.com"]
        });
        console.log("Memberful initialized");
        if (window.Memberful.detectSupport) {
          setTimeout(() => {
            window.Memberful.detectSupport();
          }, 500);
        }
      } else {
        console.log("Memberful object not found after load");
      }
    };
    script.onerror = error => {
      console.error("Failed to load Memberful script:", error);
    };
    document.head.appendChild(script);
    console.log("Added Memberful script tag to document");
    return () => {};
  }, []);
  return null;
};

export const MemberfulCheckoutCardContainer = ({children}) => {
  return <div className="grid grid-cols-1 md:grid-cols-2 gap-3 my-8 rounded-2xl bg-neutral-100 dark:bg-neutral-800 p-3 border border-neutral-300 dark:border-neutral-700">
      {children}
    </div>;
};

export const MemberfulCheckoutCard = ({title, description, href, buttonText = "Subscribe now"}) => {
  const [browserSupported] = useState(() => {
    if (typeof navigator === "undefined") return true;
    const ua = navigator.userAgent.toLowerCase();
    const isFirefox = ua.includes("firefox");
    const isSafari = ua.includes("safari") && !ua.includes("chrome");
    const isBrave = navigator.brave && navigator.brave.isBrave;
    const isMobile = (/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i).test(ua);
    return !isFirefox && !isSafari && !isBrave && !isMobile;
  });
  const linkTarget = browserSupported ? "_self" : "_blank";
  const linkRel = browserSupported ? undefined : "noopener noreferrer";
  useEffect(() => {
    if (browserSupported && window.Memberful && window.Memberful.detectSupport) {
      const timeout = setTimeout(() => {
        window.Memberful.detectSupport();
      }, 100);
      return () => clearTimeout(timeout);
    }
  }, [browserSupported]);
  return <div className="not-prose">
      <div className="rounded-xl border border-neutral-300 p-6 hover:shadow-md shadow-sm transition-shadow dark:bg-neutral-900 dark:border-neutral-700 bg-white">
        <div className="flex items-center flex-col justify-between gap-4 h-full min-h-[130px]">
          <h3 className="font-semibold text-lg text-neutral-900 mb-1">{title}</h3>
          <p className="text-sm text-neutral-600 text-center dark:text-white">{description}</p>
          <a href={href} target={linkTarget} rel={linkRel} className="flex items-center justify-center gap-2 px-4 py-2 bg-primary text-white text-sm rounded-full hover:bg-primary/90 transition-colors cursor-pointer w-full font-semibold">
            {buttonText}
          </a>
          {!browserSupported && <p className="text-xs text-neutral-500 mt-2">Opens in new window</p>}
        </div>
      </div>
    </div>;
};

In this help article, we'll walk you through our two checkout experiences and give you a chance to test our checkout form.

Click one of the plan links below and purchase a test subscription. Use `4242 4242 4242 4242` for the card number. [Learn more about using test credit cards.](/overview/getting-started/make-test-purchases/)

<MemberfulOverlay />

<MemberfulCheckoutCardContainer>
  <MemberfulCheckoutCard title="Subscription" description="Preview a test subscription." href="https://demo.memberful.com/checkout?plan=140" buttonText="Subscribe now" />

  <MemberfulCheckoutCard title="Group subscription" description="Preview a test group subscription." href="https://demo.memberful.com/checkout?plan=63009" buttonText="Subscribe now" />

  <MemberfulCheckoutCard title="Choose what you pay" description="Preview a choose what you pay checkout demo." href="https://demo.memberful.com/checkout?plan=62393" buttonText="Checkout now" />

  <MemberfulCheckoutCard title="Sign in to your account" description="Sign in to your account after you make your test purchase." href="https://demo.memberful.com/account" buttonText="Sign in" />
</MemberfulCheckoutCardContainer>

In all browsers, except for Safari, Firefox, and Brave, the Memberful forms will open over your site in an overlay.

<Frame>
  <img src="https://mintcdn.com/memberful/OaD5TLHVZDRU9-NS/images/memberful-101/checkout-experience/memberful-overlay.png?fit=max&auto=format&n=OaD5TLHVZDRU9-NS&q=85&s=b8b5596c2af4b28da49fe69928cf3f30" alt="Memberful overlay" width="1440" height="945" data-path="images/memberful-101/checkout-experience/memberful-overlay.png" />
</Frame>

From your Memberful dashboard, go to *Website → Checkout* to access our website editor, which lets you customize the payment form and see how it will look across different views and devices.

<Frame>
  <img src="https://mintcdn.com/memberful/kYfqFa-XyCb6wLs6/images/memberful-101/checkout-experience/overlay-website-editor.png?fit=max&auto=format&n=kYfqFa-XyCb6wLs6&q=85&s=3a4ac35f0e27100bbd5fff71f7f5d25c" alt="Website editor" width="1440" height="1019" data-path="images/memberful-101/checkout-experience/overlay-website-editor.png" />
</Frame>

### Why the overlay is disabled in some scenarios

The Memberful overlay needs to set certain cookies to know if a member is signed in or not. Since it lives on a Memberful subdomain and not on your site, we have to set third-party cookies, which are cookies that belong to a separate domain.

Unfortunately, some advertisers use this same technology to track user data and preferences around the web. Because of privacy concerns, Safari, Firefox, and Brave block all third-party cookies, which is great for protecting your privacy from these advertisers but also harms legitimate use-cases such as ours. This means that on Safari, Firefox, Brave, and on smartphones in general, we'll always show the standalone versions of our forms instead of the overlay.

Incognito / private windows are not supported in any browser, in part because in many cases they block third-party cookies, but also because of other limitations. We can only guarantee that Memberful will work in normal browser windows.

## Standalone desktop experience

The Memberful forms will open in a new browser window in Safari, Firefox, Brave, or when your members are accessing their account via a direct Memberful account link. We also default to the standalone experience on our [hosted subscription page.](/website-builder/pages/subscribe-page/)

<Frame>
  <img src="https://mintcdn.com/memberful/kYfqFa-XyCb6wLs6/images/memberful-101/checkout-experience/memberful-standalone-form.png?fit=max&auto=format&n=kYfqFa-XyCb6wLs6&q=85&s=a760af5fc549e28a3941bf3b6e211557" alt="Memberful standalone form" width="1440" height="836" data-path="images/memberful-101/checkout-experience/memberful-standalone-form.png" />
</Frame>

***

<Frame>
  <img src="https://mintcdn.com/memberful/kYfqFa-XyCb6wLs6/images/memberful-101/checkout-experience/memberful-standalone-custom-fields.png?fit=max&auto=format&n=kYfqFa-XyCb6wLs6&q=85&s=dd0293208773fc4f3264169de9b1ab62" alt="Member standalone custom fields" width="1440" height="833" data-path="images/memberful-101/checkout-experience/memberful-standalone-custom-fields.png" />
</Frame>

***

<Frame>
  <img src="https://mintcdn.com/memberful/kYfqFa-XyCb6wLs6/images/memberful-101/checkout-experience/memberful-standalone-logged-in.png?fit=max&auto=format&n=kYfqFa-XyCb6wLs6&q=85&s=717f99d145c6123c40c028c427fe96a7" alt="Member standalone logged in" width="1440" height="836" data-path="images/memberful-101/checkout-experience/memberful-standalone-logged-in.png" />
</Frame>

In this standalone experience, visitors can go to your website by clicking your logo in the top left corner of the page, which features a left-facing arrow to indicate that this will take them back to your site.

<Frame>
  <img src="https://mintcdn.com/memberful/kYfqFa-XyCb6wLs6/images/memberful-101/checkout-experience/memberful-standalone-website-link.png?fit=max&auto=format&n=kYfqFa-XyCb6wLs6&q=85&s=ffd409fa218ddf7fdaa0b9cfeb38672f" alt="Member standalone website link" width="1440" height="836" data-path="images/memberful-101/checkout-experience/memberful-standalone-website-link.png" />
</Frame>

From your Memberful dashboard, go to *Website → Checkout* to access our website editor, which will allow you to customize the payment form and see how it will look across different views and devices.

<Frame>
  <img src="https://mintcdn.com/memberful/OaD5TLHVZDRU9-NS/images/memberful-101/checkout-experience/desktop-website-editor.png?fit=max&auto=format&n=OaD5TLHVZDRU9-NS&q=85&s=594097d74871781d7e13408cd22ec39d" alt="Website editor" width="1440" height="777" data-path="images/memberful-101/checkout-experience/desktop-website-editor.png" />
</Frame>

## Smartphone experience

The Memberful form will open in a new browser window on all smartphones.

<Frame>
  <img src="https://mintcdn.com/memberful/kYfqFa-XyCb6wLs6/images/memberful-101/checkout-experience/memberful-smartphone.png?fit=max&auto=format&n=kYfqFa-XyCb6wLs6&q=85&s=6812369c974e5206677205d7c2987765" alt="Member smartphone" width="1440" height="1000" data-path="images/memberful-101/checkout-experience/memberful-smartphone.png" />
</Frame>

From your Memberful dashboard, go to *Website → Checkout* to access our website editor, which lets you customize the payment form and see how it will look across different views and devices.

<Frame>
  <img src="https://mintcdn.com/memberful/kYfqFa-XyCb6wLs6/images/memberful-101/checkout-experience/smartphone-website-editor.png?fit=max&auto=format&n=kYfqFa-XyCb6wLs6&q=85&s=233f908e77c1a74aac617d04385cd556" alt="Website editor" width="1440" height="988" data-path="images/memberful-101/checkout-experience/smartphone-website-editor.png" />
</Frame>

## Learn about email validation

Once you leave test mode and [go live with Memberful](/account-management/modes/manage-your-account-in-test-mode/), we'll check for common email address typos in both the Checkout and Gift forms (e.g. gmail.con, gnail.com, gmal.com, hotmal.com, hotmail.con), and suggest corrections. Email addresses in [free registration forms](/member-management/payments-and-access/give-free-access/#enable-free-registration) are not currently validated.

<Frame>
  <img src="https://mintcdn.com/memberful/OaD5TLHVZDRU9-NS/images/memberful-101/checkout-experience/memberful-smartphone-form-email-validiation.png?fit=max&auto=format&n=OaD5TLHVZDRU9-NS&q=85&s=22a6df84d5e0e8e26c28ad476be99f7f" alt="Email validation" width="1440" height="1000" data-path="images/memberful-101/checkout-experience/memberful-smartphone-form-email-validiation.png" />
</Frame>

## Learn about address auto-completion

If you [collect addresses in checkout,](/plans/individual-plans/create-a-plan/#enable-address-and-phone-number-collection) your members will see an auto-complete suggestion as they type. This makes checkout faster and easier and lowers the likelihood of mistakes or inaccurate addresses.

<Frame>
  <img src="https://mintcdn.com/memberful/OaD5TLHVZDRU9-NS/images/memberful-101/checkout-experience/address-auto-complete.png?fit=max&auto=format&n=OaD5TLHVZDRU9-NS&q=85&s=3f322c6d8dfdbed9612d52109eed7dd8" alt="Address auto-complete" width="1440" height="1028" data-path="images/memberful-101/checkout-experience/address-auto-complete.png" />
</Frame>

## HTTPS and security recommendations

The Memberful service and the Memberful forms are served 100% over HTTPS. This means all Memberful payments are sent to Stripe over a secure connection. However, to protect your website from man-in-the-middle attacks, **we recommend serving the page containing the Memberful forms over HTTPS**. Customers are also generally more comfortable sharing sensitive information on pages visibly served over HTTPS, which can help increase your conversion rate.

See our [enabling SSL documentation](/wordpress-plugin/setup/enable-ssl/) for WordPress instructions and [Stripe's security guide](https://stripe.com/docs/security) for more general HTTPS / SSL instructions.

<Callout icon="info" color="#22E273">
  Memberful is PCI-compliant and secure. We don't store any sensitive customer credit card data and we use a 256-bit SSL connection across the entire service. We also keep geo-redundant backups of all your important customer data. [Learn more about Memberful
  security](https://memberful.com/general/security/)
</Callout>

<RelatedDocs
  link1={{
url: "/overview/getting-started/payment-processing/",
label: "Learn how Memberful processes payments.",
}}
  link2={{
url: "/member-interface/subscription/manage-their-subscriptions/",
label: "Learn how members can manage their own subscriptions.",
}}
  link3={{
url: "/configuration/branding/branding/",
label: "Add your branding to the Memberful forms.",
}}
/>
