> For the complete documentation index, see [llms.txt](https://docs.funnelish.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.funnelish.com/resources/customer-portals.md).

# Customer Portals

The Customer Portal is a secure, logged-in area where your customers can now manage their own subscriptions and orders without needing to contact your support team.

Inside the portal, customers will be able to:

* View active subscriptions and their included items.
* Change item quantities, skip a shipment, pause, resume, or cancel subscriptions.
* Request their next order early.
* Update payment cards, contact information, and shipping details.
* Browse their past order history.

You have full control over the visual design of every screen. When a customer logs in, the portal automatically populates your design with their real data and your buttons trigger real backend actions (like pausing a subscription) based on the click actions you assign to them.

To access your Customer Portal, click on "...More" > Customer Portals.

<figure><img src="/files/Z0EVPM9XKODMa7qbwuH1" alt=""><figcaption></figcaption></figure>

To start building your customer portal, click here:&#x20;

<figure><img src="/files/oAhVHxqMMnwOZd0ajOrY" alt=""><figcaption></figcaption></figure>

Now fill in the following details for your Portal and click "Create your Portal" to save the changes.

<figure><img src="/files/Ff8SHOa9wej0aU5H8oTR" alt=""><figcaption></figcaption></figure>

Once you create your Customer Portal, you’ll see two pages representing the available screens.&#x20;

The portal functionality is already built in, so you only need to customize the design, connect elements to the relevant customer data, and choose which actions customers can perform. You can edit each screen independently, just like a regular funnel page.

<figure><img src="/files/hP4ZynxYXZTQd69vQH6m" alt=""><figcaption></figcaption></figure>

Think of the portal as a few connected screens. Here’s what each one does:

**The Login Screen** is where the customer will enter their email or phone number, receive a one-time code, and types it in to log in. This is automatic — you style it, the portal handles\
the security.

<figure><img src="/files/v4gYR6onOx4kQLXqGJ4P" alt=""><figcaption></figcaption></figure>

To customize it, click on the **Login** screen > **Edit Page:**

<figure><img src="/files/1r8hxrYXMBY18tKefZLU" alt=""><figcaption></figcaption></figure>

**The Customer Portal Screen** is where your customers will see their subscription details, products, payment methods etc after logging in.

<figure><img src="/files/NhvfM7ncTs8Ke8aCEI8p" alt=""><figcaption></figcaption></figure>

To customize it, click on the **Customer Portal** screen > **Edit Page:**

<figure><img src="/files/aGsAIlCEauw0dKmg1vcx" alt=""><figcaption></figcaption></figure>

## Customer Portal Screen and Sections

Here is a breakdown of what each section does and how to set it up.

#### Subscriptions List

This is the first screen customers see after logging in. It displays one card per subscription, outlining the subscription’s name, price, billing frequency, status, and next billing date.

<figure><img src="/files/zp3U1XENJNwofFtQycRV" alt="" width="563"><figcaption></figcaption></figure>

> :bulb:If a customer has multiple subscriptions, this list will paginate automatically. Clicking a card opens that specific subscription’s detail screen.

#### Subscription Detail (“Current Subscription”)

This is the full management view for a single subscription. Once an "active subscription" card is clicked on, the customer will see:

* **Items**: Each product in the subscription (image, name, price, and quantity).
* **Order summary:** A complete price breakdown (line items, sales tax, discounts, and total).
* **Customer & address:** Shipping and billing information.
* **Payment method:** The saved card details (brand icon + masked number).
* **Action buttons:** You decide which buttons appear (e.g., skip, pause, resume, cancel, change date, update card).
* **Back button:** Returns the user to the main subscriptions list.

<figure><img src="/files/6UIzmD0jlr8iZlEFt2xO" alt="" width="563"><figcaption></figcaption></figure>

#### Multi-Quantity (Editable Item Quantities)

You can also allow customers to adjust how many of a specific item they receive.

{% embed url="<https://www.loom.com/share/0bcd5b659aaf41b59d6328b28d9bc884>" %}

{% hint style="warning" %}
When a customer adjusts a quantity, the change remains "**pending**." Nothing is charged or finalized unless they click the Save changes button.
{% endhint %}

#### Orders History

A separate tab that lists the customer’s past orders (one card per order).

Clicking an order expands it to reveal line items, taxes, discounts, and totals. Long histories will automatically paginate.

<figure><img src="/files/kSkNBJYNllZTBMjNqcVF" alt=""><figcaption></figcaption></figure>

#### Confirmation Popups

Sensitive actions (like canceling) trigger a confirmation popup rather than happening immediately on the first click.

* The cancellation popup can be configured to collect a cancellation reason.
* You can edit the text, button labels, and options of these popups directly in the editor.
* Upon confirmation, the portal processes the action, displays a success message ("toast"), and refreshes the screen.

#### Paused Subscriptions

When a subscription is paused, the system automatically blocks actions that no longer apply (e.g., skip next order, change next order date, get order now). The customer will see a gentle note stating, *"You can’t change a paused subscription."* Options like Cancel and Settings remain active.&#x20;

{% hint style="info" icon="lightbulb" %}
This logic is completely built-in; no extra configuration is required.
{% endhint %}

## Click Actions, Datasets, and Conditional States

When building Customer Portal pages, there are three main tools you’ll use to make the experience dynamic: **Click Actions**, **Datasets**, and **Conditional States**.

Each one has a different role:

* **Click Actions** control **what happens** when a customer interacts with a button. Found in the **interactions** panel.
* **Datasets** control **what an element shows.** Found in the **data-bindings** picker.
* **Conditional States** control **when** **an element shows or how it looks**, based on the\
  subscription’s data.

In other words, **Datasets show the right information, Click Actions let customers take action, and Conditional States make sure the page adapts based on the subscription’s current status or details**.

Together, these allow you to build a Customer Portal that is personalized to each customer and lets them manage their subscriptions directly from the page.

Now let's dive into each one:

### Click Actions

Click Actions determine what happens when a customer clicks a button. They are configured from the Interactions tab and become available whenever you're editing a Customer Portal page.

Each action automatically knows which subscription it should affect based on where the button is placed.&#x20;

For example, a button inside a Subscription Card affects that specific subscription, while a button on the Subscription Details page affects the currently opened subscription. No additional setup is required.

<figure><img src="/files/AlGq9OoHqGtbrFjpVEAx" alt=""><figcaption></figcaption></figure>

#### Subscription Actions

<table><thead><tr><th width="252.90625">Subscription Actions</th><th>What they do</th></tr></thead><tbody><tr><td><strong>View Subscription details</strong></td><td>Displays the subscription details.</td></tr><tr><td><strong>Pause Subscription</strong></td><td>Pauses recurring billing and shipments.</td></tr><tr><td><strong>Resume Subscription</strong></td><td>Reactivates a paused subscription.</td></tr><tr><td><strong>Cancel Subscription</strong></td><td>Starts the cancellation flow and optionally collects a cancellation reason.</td></tr><tr><td><strong>Skip Next Order</strong></td><td>Skips the customer's next scheduled shipment.</td></tr><tr><td><strong>Update Next Order Date</strong></td><td>Allows customers to choose a new billing date for their next order.</td></tr><tr><td><strong>Get Order Now</strong></td><td>Processes the next subscription order immediately.</td></tr><tr><td><strong>Remove Subscription Item</strong></td><td>Removes the selected product. If it's the final item, the customer is redirected to the cancellation flow.</td></tr><tr><td><strong>Save Changes</strong></td><td>Applies any pending quantity changes made through Multi-Quantity.</td></tr><tr><td><strong>Update Payment Method</strong></td><td>Allows customers to securely replace their saved payment method.</td></tr><tr><td><strong>Update Customer Details</strong></td><td>Allows customers to update shipping information and other details.</td></tr><tr><td><strong>Log Out</strong></td><td>Logs the customer out of the portal.</td></tr></tbody></table>

#### Upsell Actions

The Customer Portal also supports subscription upsells:

<table><thead><tr><th width="257.87890625">Upsell Actions</th><th>What they do</th></tr></thead><tbody><tr><td><strong>Upsell – Add Once</strong></td><td>Adds a product to the customer's next order only. Future renewals remain unchanged.</td></tr><tr><td><strong>Upsell – Add Recurring</strong></td><td> Adds a product permanently to the subscription so it will be included in every future renewal until removed.</td></tr></tbody></table>

### Datasets - Dynamic data you can drop into your design

A dataset lets you bind an element (text, image, etc.) to real customer data instead of typing fixed text. You pick a dataset and a field from the data-bindings picker, and the portal fills it in per customer.

<figure><img src="/files/s3iO8A6gtK7fQjt0zjBe" alt=""><figcaption></figcaption></figure>

#### Types of Datasets

**Single Dataset**

These datasets populate a single element with one value.&#x20;

For example:

* Current Subscription
* Customer Information
* Payment Method
* Summary Total.

You can bind the fields directly to elements (text, image, etc.) anywhere on the page.

{% hint style="info" %}
To read more about data binding, have a look at our Data Binding article <https://docs.funnelish.com/advanced-features/data-binding>
{% endhint %}

**Repeating Datasets**

These are connected to a Repeater. You design a single container, such as a card or row, and bind the elements inside it to the relevant data fields.

The Repeater then automatically duplicates that design for each available record. For example, it can display one card per product in a subscription or one row per previous order.

This means you only need to build the layout once, then the portal automatically fills in and repeats the remaining items.

{% hint style="info" %}
To read more about the repeater element, have a look at our article <https://docs.funnelish.com/start/funnel-builder/repeater>&#x20;
{% endhint %}

#### Subscription datasets

These will provide information about a subscription.

The **Current Subscription** *(the one the customer has opened — usable anywhere on*\
\&#xNAN;*the page)* **and Active Subscription** *(the list — repeats once per card)* dataset provide these same fields for whichever subscription the customer is currently viewing:

<table><thead><tr><th width="226.4609375">Dataset</th><th>What it reflects</th></tr></thead><tbody><tr><td><strong>Subscription name</strong></td><td>The subscription’s name (its first active item name)</td></tr><tr><td><strong>Item names</strong></td><td>All active item names, comma-separated</td></tr><tr><td><strong>Items count</strong></td><td>Total quantity across active items</td></tr><tr><td><strong>Subtotal</strong></td><td>Total cost of all active items before discounts and tax</td></tr><tr><td><strong>Discount</strong></td><td>Total discount applied to the subscription</td></tr><tr><td><strong>Total</strong></td><td>Final subscription amount after discounts and tax</td></tr><tr><td><strong>Tax rate</strong></td><td>Tax percentage applied to the subscription</td></tr><tr><td><strong>Tax total</strong></td><td>Total tax amount applied to the subscription</td></tr><tr><td><strong>Billing frequency</strong></td><td>e.g. “every 30 day(s)”</td></tr><tr><td><strong>Billing period</strong></td><td> e.g. “per month”</td></tr><tr><td><strong>Status</strong></td><td>Active / paused / cancelled</td></tr><tr><td><strong>Next billing date</strong></td><td>Renewal date of subscription</td></tr><tr><td><strong>Paused until</strong></td><td>The date a pause ends (blank when not paused)</td></tr><tr><td><strong>Subscription ID</strong> </td><td>Bind a radio’s value to it so customers can select the<br>current subscription</td></tr></tbody></table>

#### Subscription item datasets *(repeating list)*

**Subscription items** *(inside a subscription card)* and **Current subscription items** *(the opened subscription — usable anywhere)* — one entry per product:

<table><thead><tr><th width="232.1171875">Dataset</th><th>What it reflects</th></tr></thead><tbody><tr><td><strong>Item name</strong></td><td>The product or subscription item’s name</td></tr><tr><td><strong>Item price</strong></td><td>The item’s individual price, e.g. “$26.40”</td></tr><tr><td><strong>Recurring price</strong></td><td>The item’s price and billing cadence, e.g. “$26.40 every 30 days”</td></tr><tr><td><strong>Quantity</strong></td><td>The number of units included in the subscription</td></tr><tr><td><strong>Status</strong></td><td>The item’s current status, such as active, paused, or cancelled</td></tr><tr><td><strong>Item image</strong></td><td>The product image associated with the item</td></tr></tbody></table>

#### Order datasets

**Order history** *(the orders list — repeats once per order)*:

<table><thead><tr><th width="233.5859375">Dataset</th><th>What it reflects</th></tr></thead><tbody><tr><td><strong>Order name</strong></td><td>The order’s name or reference number</td></tr><tr><td><strong>Order date</strong></td><td>The date the order was placed</td></tr><tr><td><strong>Order total</strong></td><td>The final amount paid for the order</td></tr><tr><td><strong>Status</strong></td><td>The order’s current status, such as paid, failed, refunded, or cancelled</td></tr><tr><td><strong>Items count</strong></td><td>Total quantity of items included in the order</td></tr><tr><td><strong>Order tax</strong></td><td>Total tax amount applied to the order</td></tr><tr><td><strong>Tax rate</strong></td><td>Tax percentage applied to the order</td></tr><tr><td><strong>Discount</strong></td><td>Total discount applied to the order</td></tr></tbody></table>

**Order items** *(repeating list — the products in an order)*:

<table><thead><tr><th width="232.27734375">Dataset</th><th>What it reflects</th></tr></thead><tbody><tr><td><strong>Item name</strong></td><td>The product name</td></tr><tr><td><strong>Quantity</strong></td><td>The number of units purchased</td></tr><tr><td><strong>Item price</strong></td><td>The item’s individual price</td></tr><tr><td><strong>Item image</strong></td><td>The product image associated with the item</td></tr></tbody></table>

#### Order summary (current subscription price breakdown)

There’s no separate summary dataset — you build the summary from data you already have: a repeating **Current subscription items** block for the line items, plus the **Current subscription**’s **Subtotal**, **Discount**, **Tax total**, and **Total** fields for the breakdown rows.

#### Customer & payment datasets

**Customer** *(the current subscription’s contact & address details — usable*\
\&#xNAN;*anywhere on the page)*:

* **Full name**, **Initials**, **First name**, **Last name**
* **Email**, **Phone**
* **Shipping**: address, city, state, ZIP / postal code, country
* **Billing**: address, city, state, ZIP / postal code, country

**Payment details** (the saved card):

* **Card number** (masked, e.g. “•••• 1234”)
* **Expiry month**, **Expiry year**
* **Card brand** — e.g. visa, mastercard, amex
* **Card brand icon** — the brand’s logo

#### Products dataset

**Products** *(repeating list)* — for building upsell/add-product blocks:

* **Product ID**, **Name**, **Title**
* **Price**, **Displayed price**
* **Product image**

> **Tip:** Datasets and click actions work together. A common pattern is a\
> repeating **Products** block where each card shows the product’s image, name,\
> and price (datasets) with an **Upsell – add recurring** button (action).

*Note: Datasets prefixed with "Current" (like Current Subscription or Current Subscription Items) behave the same way but specifically reference the subscription the customer is currently viewing.*

### Conditional States

Conditional States allow elements to appear, disappear, or change based on subscription information, allowing you to create dynamic Customer Portal experiences without writing any code.

You can set conditions independently for every subscription.

For example:

* Display the **“Paused”** badge only when the subscription is paused. \
  To do this, click the **Paused** paragraph element. In the left panel, make sure visibility is enabled for all devices. Then, under **State**, select **Paused**.

<figure><img src="/files/s9Oh1Ie6o3jqNpeQvCax" alt=""><figcaption><p>Show a “Paused” badge only when the subscription is paused</p></figcaption></figure>

* Showing a "Resume Subscription" button only for paused subscriptions.&#x20;

<figure><img src="/files/gzX6dZ5geTYdZfEjy1A9" alt=""><figcaption><p>Hide the Resume button unless the subscription is paused</p></figcaption></figure>

{% hint style="info" %}
You can also **hide certain actions** depending on the customer's payment gateway or **display different elements** based on billing frequency or billing cycle.
{% endhint %}

### Final Overview&#x20;

Once assembled, the **Subscription Details** page gives customers a clear view of their current subscription and the tools they need to manage it directly from the portal.

A typical setup would include:

1. A **Current Subscription** heading connected to the subscription **Name**, with a **Status** badge beside it.
2. A repeating **Current Subscription Items** section showing each product in the subscription. Each item row displays the product image, name, price, quantity field, and a **Remove Subscription Item** button.
3. A **Save Changes** button that customers can use after editing item quantities.
4. An **Order Summary** section showing the subscription line items, discounts, taxes, and total.
5. Action buttons for common subscription changes, such as **Skip Next Order**, **Pause Subscription**, **Update Payment Method**, and **Update Customer Details**.
6. A **Resume Subscription** button that only appears when the subscription is paused, using Conditional States.

When customers log in, the portal automatically fills this page with their own subscription data. The buttons then perform the actions you assigned to them, so customers can manage their subscription without contacting support.
