Cimplify Link
Link is the shopper-facing layer of Cimplify: a saved-payment-and-address vault, an OTP identity, and a small set of embeddable iframe Elements that let merchants pull that identity into any storefront. It's hosted at `link.cimplify.io` and ships as the `@cimplify/link` package.
Two surfaces
- Embeddable Elements: iframe-based UI components a merchant drops into their storefront:
AuthElement,CheckoutElement,AccountElement. These are the building blocks behind every Cimplify checkout integration. - Dashboard: a logged-in shopper UX at
link.cimplify.iowhere customers manage their saved details across every Cimplify-powered store.
The Element types
| Element | Iframe route | Use it for |
|---|---|---|
| AuthElement | /elements/auth | OTP sign-in (email or phone). Single-line input that turns into a Code field on submit. |
| CheckoutElement | /elements/checkout (alias /elements/payment) | Full unified checkout: auth, address, payment method, submit. The iframe behind <CimplifyCheckout> and the hosted Pay page. |
| AccountElement | /elements/account/* | Logged-in account portal (orders, addresses, payment methods, sessions). |
The dashboard
Customers can also visit link.cimplify.io directly to manage their saved details outside any merchant context. The dashboard surfaces the same data the Elements read from. See dashboard pages for the per-page breakdown.
How shoppers join Link
There's no signup. Any time a customer pays through any Cimplify merchant and ticks "remember me for 1-click checkout", their email/phone, address, and payment method are saved to their Link identity. Next checkout (anywhere on the network) starts with their saved details prefilled after a single OTP.
How merchants opt in
Merchants don't configure Link explicitly. Using any of the iframe-based checkout tiers (drop-in, embedded, controlled, vanilla ) automatically gives shoppers Link if they want it. Pass enroll_in_link: false on processCheckout to suppress the "remember me" checkbox.
Authentication model
Link is OTP-based. The AuthElement sends a one-time code via email or SMS; verification mints a session token (lk_…) the parent controller broadcasts to every other mounted Element via set_token. The token is short-lived and auto-refreshes; the Link cookie on link.cimplify.io is the long-lived identity.
Smallest possible embed
import { CimplifyClient } from "@cimplify/sdk";
import { CimplifyCheckout } from "@cimplify/sdk/react";
const client = new CimplifyClient({
publicKey: "pk_live_…",
credentials: "include",
});
// One component → AuthElement + AddressElement + PaymentElement, all wired up.
<CimplifyCheckout client={client} cartId={cart.id} onComplete={...} />Next
- AuthElement: OTP sign-in
- CheckoutElement: Unified checkout iframe