Documentation

Getting started

Core concepts

The four objects you will use every day in Experiwall: paywalls, products, campaigns, and variants.

Experiwall has a small object model. Once these five terms click, the rest of the platform falls into place.

Paywall

A paywall is a screen. It is a JSON tree of components (stacks, text, images, product cards, buttons) that the renderer turns into a UI. Paywalls have a draft and a published version. The studio always edits the draft; the SDK and hosted URL always serve the published version.

Product

A product is an SKU. It carries price, currency, billing interval, trial days, and the connected payment provider id (Stripe price, Polar product, or MercadoPago reference). Paywalls reference products by slot, so swapping a price never requires editing the design.

Campaign

A campaign is an experiment. It picks a paywall, names an audience, and splits traffic across one or more variants. The SDK evaluates campaigns server-side, so users always see one consistent variant per session.

Variant

A variant is a delta on top of the published paywall, keyed by node id. Use variants to test copy, pricing, color, or product order without forking the entire design.

Tip

Variants are stored as overrides, not copies. Edits to the base paywall propagate to every variant unless the variant explicitly overrides that node.

Audience

An audience is the filter on a campaign. Filter by device type, country, locale, or any custom attribute you pass to the SDK. Audiences let you ship one paywall in English and another in Spanish without writing branching logic in your app.