- Manage — Customers can pause, skip, or cancel a subscription (with optional retention offers). The manage page also shows a list of orders eligible for a refund.
- Self-refund — Customers can submit a refund request for eligible orders (one-time purchases or subscription first charges).
Brand-level settings
Before configuring individual merchants, set the brand-wide customer support details in Brand Settings → General under the Customer support section:
These values are stored as brand variables and are accessible in templates as
{{ brand.support_email }}, {{ brand.support_phone }}, and {{ brand.mbg_days }}.
Enabling Customer Care
- Navigate to Merchants and open a merchant configured with Stripe or NMI.
- Click the Customer care tab.
- Enable the features you want:
- Subscription management — turns on the Manage page for active subscriptions.
- Self-refund — allows customers to request a refund on eligible orders.
- Save the merchant.
Subscription management
When enabled, an active subscription card on/members/subscription will show a Manage button. Clicking it opens /members/manage?tx=<transactionId>.
Configure the exit survey reasons and retention offers in the Retention offers tab. The Customer care tab controls the feature toggle; the Retention offers tab controls which offers are shown.
Self-refund — eligibility rules
Eligibility is checked at two levels: Brand level (checked first):
Merchant level (checked second):
If an order passes both levels, a Request refund link appears on its card in
/members/orders and in the refund candidates section on /members/manage.
Self-refund — on-request action
When a customer submits a refund request, one of three things happens (your choice):Error messages
All customer-facing error messages are friendly and non-technical. When a refund is denied, the message includes your brand’s support contact information automatically:“The refund window for this order has closed. Please contact us at support@yourbrand.com or call +1 800 555 0100.”If no support email or phone is configured, it falls back to:
“Please contact our support team.”
The Manage page (/members/manage)
The manage page is a multi-step flow. Customers land here from the Manage button on their subscription card.
Step 1 — Subscription summary + refund candidatesShows the product name, current status, and next charge date with a “I want to cancel” action. Below the subscription card, any orders eligible for a refund are displayed with a “Request refund” link. Step 2 — Exit survey
Displays the exit survey reasons configured in the Retention offers tab. The customer selects the reason that applies. Step 3 — Retention offer (optional)
If a retention offer is configured for the selected reason, the customer is shown the offer (discount, pause, or downgrade). They can accept it or proceed to cancel. Step 4 — Outcome
Shows the result: cancelled, offer accepted, or an error.
Refund candidates on the manage page
The manage page automatically shows refund-eligible orders below the subscription card. An order appears in this list when:refund_eligibleistrue(merchant rules pass)- The order is not fully refunded
- The order is within the brand’s money-back guarantee window (if configured)
Customising the manage page
The built-inmembers/manage page is a starting point. You can build a fully custom version using the getManageData() backend function, getOrders(), and the window.ef.customerCare JavaScript API.
getManageData() function returns null if the subscription doesn’t exist, doesn’t belong to the current customer, or manage is not enabled on the merchant. Use this to redirect before rendering the page.
The Refund page (/members/refund)
The refund page lets a customer submit a refund request for a specific order. They arrive here from the Request refund link on an order card or from the manage page.
What the customer sees:
- A summary of the order (order number, date, amount).
- The refund amount (the full remaining balance — read-only).
- A text area for a reason.
- A submit button.
Customising the refund page
Build a custom page usinggetRefundEligibility() and window.ef.customerCare.requestRefund():
getRefundEligibility() function returns null if the order is not found, doesn’t belong to the current customer, or is not eligible for a refund. The eligible flag is false when rules are not met (the reasons array describes why).
Brand variables (brand.*)
The following brand-level variables are available in all templates:
Use these in your templates:
Template variables reference
getManageData(transactionId)
Returns an object (or null):
getRefundEligibility(orderCode)
Returns an object (or null):
Order fields (from getOrders())
sub.manage_enabled (subscriptions list)
The getSubscriptions() function includes manage_enabled on each subscription object. Use this to conditionally show the Manage button:
Showing refund-eligible orders
Userefund_eligible, days_since_order, and brand.mbg_days together for the most accurate display: