Skip to main content
18 min readBilling & Invoicing

The Custom Plan Feature Matrix

The authoritative reference for every option on a custom plan — what each toggle controls, its default, and the gotchas that catch agencies out.

Custom plans are the most load-bearing screen in the platform. Every plan is a bundle of pricing, limits, and feature switches, and every customer's experience — what they see, what they can use, and what asks them to upgrade — is decided here.

This guide is the complete reference. It walks the plan editor tab by tab, lists every option with its default, and covers the Stripe and non-Stripe billing paths, per-customer overrides, the plan lifecycle, and the gotchas agencies hit most often.

Open a plan from `Business -> Billing & Revenue -> Custom Plans`. The editor has three tabs: `General`, `Pricing & Billing`, and `Features & Options`.

How the plan editor is organised

The `Features & Options` tab is where the feature matrix lives. It is split into six sub-tabs: `General`, `Reviews`, `Campaigns`, `Review Tools`, `Social Proof`, and `Integrations`.

Above the sub-tabs sits an `Advanced View` switch. It reveals extra controls — Platform Mode, API Access, widget filter options, and more — and it resets to off on every page load. Several important options are simply invisible until you flick it, so if an option from this guide is missing from your screen, turn `Advanced View` on before assuming anything else.

The same editor appears in two places: on the plan itself (the template every subscriber inherits) and on each customer's Manage Customer page (a per-customer override layer). Anything set on the customer overrides the plan for that customer only; clearing the override re-inherits the plan value.

Worth knowing

Saving the plan editor opens a price-recommendation dialog first. Your option changes only persist after you click `Save Plan Options` inside that dialog — closing it discards them.

The three access states

Most options are a 3-state access control rather than a simple on/off switch. Understanding the difference between `Upgrade` and `Hidden` is the key to designing a plan ladder.

  • Section-visibility options are 2-state instead: `Visible` / `Hidden`. These are `Settings Pages`, `Billing Pages`, `Reviews Page`, `Campaigns Section`, and `NFC Cards`
  • Some options are parents with nested children — hiding a parent (for example `Respond with AI` or `Email Campaigns`) also hides its children
  • Use `Upgrade` on features you want to sell against, and `Hidden` on features that should never appear for that tier
StateWhat the customer experiences
`Enabled`The feature is fully available and works normally.
`Upgrade`The feature is visible but locked. The customer sees it with an upgrade prompt — useful for showing what a higher tier includes.
`Hidden`The feature is removed from the customer's UI entirely, as if it does not exist.

Testing plan gating (do not use your agency login)

You cannot QA plan gating from your agency account. Tenant owners and sales agents bypass every plan gate, so when you look at a customer account through your own login, everything appears enabled regardless of the plan.

Always test by logging in as (or impersonating) a customer. Only then do the `Upgrade` locks, hidden sections, and limits actually apply.

The General tab: identity and availability

Before the feature matrix, the `General` tab holds the plan's identity and how customers can reach it.

FieldWhat it doesNotes
`Name`The plan's nameMust be unique across your plans.
`Description`Short text shown to customers when they are choosing a planSell the tier here, not internally.
`Default Plan`Auto-selected for new customers at signupSetting a plan as default un-defaults every other plan.
`Hide Plan`Removes the plan from the customer subscription pageExisting subscribers keep it, and it stays usable in your Switch Plan modal — this is how you retire a plan.
`Plan Registration URL`A direct signup link for this planAlways `register?plan={id}`. A status banner tells you whether it is ready to share: it warns when signups are off, when payment-first needs a payment link, or when you should share the Stripe payment link instead.

Features & Options: General sub-tab

The `General` sub-tab holds account-wide limits, monthly credits, and the section-visibility switches.

OptionWhat it controlsDefaultNotes
`Max Locations`How many locations the customer can create10 = unlimited. On Stripe plans this limit also drives add-on location billing.
`Max Team Members`How many team members the customer can invite0 (unlimited)0 = unlimited.
`Monthly Email Credits`Email sending credits granted each month0Renews monthly per channel.
`Monthly SMS Credits`SMS sending credits granted each month0Renews monthly per channel.
`Monthly WhatsApp Credits`WhatsApp sending credits granted each month0Renews monthly per channel.
`Settings Pages`Visibility of the customer's Settings groupVisibleHiding 404s the whole Settings group — except Profile, which always stays reachable.
`Billing Pages`Visibility of the customer's Billing menuVisibleHiding removes the entire Billing menu plus upgrade and top-up links. UI only — Stripe subscriptions keep renewing.
`Remove 'Powered By' Branding`Whether the customer can strip platform brandingEnabled
`Platform Mode`Multi-Location vs Multi-Organization account structureMulti-LocationAdvanced View only.
`API Access`Access to the customer API and API settingsUpgradeAdvanced View only. On `Upgrade` the API settings page shows locked, but the API docs page 404s until the option is fully `Enabled`.

Features & Options: Reviews sub-tab

The `Reviews` sub-tab controls the reviews page itself, the AI reply stack, and review management tools. `Respond with AI` is a parent option: hiding it also hides `Auto-Responding` and `Custom AI Prompts` beneath it.

Note that `AI Hub` and `API Access` are separate products with separate switches — enabling API access does not grant the AI Hub, and vice versa. The last five rows only appear with `Advanced View` on.

OptionWhat it controlsDefaultNotes
`Reviews Page`Visibility of the customer's Reviews pageVisible2-state Visible / Hidden.
`Respond with AI`AI reply generation on reviewsEnabledParent option — hiding it also hides its children below.
`Auto-Responding`Automatic AI replies to incoming reviewsUpgradeChild of `Respond with AI`.
`Custom AI Prompts`Customer-defined prompts for AI repliesEnabledChild of `Respond with AI`.
`Tag Reviews`Tagging and organising reviewsEnabled
`AI Insights`AI-generated insight reports over reviewsUpgrade
`Search AI`AI-powered review searchUpgrade
`AI Hub`The AI Hub (MCP) connectionUpgradeSold independently of `API Access` — enabling one does not enable the other.
`Import Reviews`Importing reviews manuallyEnabledAdvanced View only.
`Export Reviews`Exporting reviewsEnabledAdvanced View only.
`Hide Reviews from Widgets`Excluding individual reviews from widget displayEnabledAdvanced View only.
`Scheduled Reporting`Recurring emailed reportsEnabledAdvanced View only. Deliberately independent of `Settings Pages` visibility — hiding Settings does not switch reporting off.
`Sentiment Analysis`Sentiment analysis over reviewsUpgradeAdvanced View only.

Features & Options: Campaigns sub-tab

The `Campaigns` sub-tab gates each sending channel separately. `Email Campaigns`, `SMS Campaigns`, and `WhatsApp Campaigns` are parents — hiding a parent hides its children with it.

The bring-your-own-provider children (`Own Email Provider`, `Own SMS Provider`, `Own WhatsApp Provider`) and WhatsApp `Custom Templates` all default to `Hidden`, so customers use your managed sending unless you deliberately open BYOK up on the plan.

OptionWhat it controlsDefaultNotes
`Campaigns Section`Visibility of the campaigns area in nav and dashboardVisibleNav and dashboard only — direct URLs stay reachable.
`Email Campaigns`Email review-request campaignsEnabledParent option with the three children below.
`Custom 'From' Email`Sending from the customer's own from-addressEnabledChild of `Email Campaigns`.
`Own Email Provider`Bring-your-own email provider (BYOK)HiddenChild of `Email Campaigns`.
`BCC Automation`Triggering requests via BCC'd emailsEnabledChild of `Email Campaigns`.
`SMS Campaigns`SMS review-request campaignsEnabledParent option with the two children below.
`Own SMS Provider`Bring-your-own SMS providerHiddenChild of `SMS Campaigns`.
`MMS Requests`Sending MMS review requestsUpgradeChild of `SMS Campaigns`.
`Video Review Requests`Video-based review requestsUpgrade
`WhatsApp Campaigns`WhatsApp review-request campaignsUpgradeParent option with the two children below.
`Own WhatsApp Provider`Bring-your-own WhatsApp providerHiddenChild of `WhatsApp Campaigns`.
`Custom Templates`Custom WhatsApp message templatesHiddenChild of `WhatsApp Campaigns`.
`No Credits During Trial`Withholds monthly credits while the customer is on trialOffAdvanced View only.

Features & Options: Review Tools sub-tab

The `Review Tools` sub-tab covers the collection assets: feedback forms, QR codes, and NFC cards. `Feedback Forms` is a parent — hiding it hides the form limit, AI Review Assistant, Video Testimonials, and custom domain options beneath it.

OptionWhat it controlsDefaultNotes
`Feedback Forms`Branded review-collection formsEnabledParent option with the four children below.
`Feedback Form Limit`Maximum number of feedback forms0 (unlimited)Child of `Feedback Forms`.
`AI Review Assistant`AI-assisted review writing on formsUpgradeChild of `Feedback Forms`.
`Video Testimonials`Video collection on feedback formsUpgradeChild of `Feedback Forms`. Shows an inline warning to keep the Testimonials source allowed on the Integrations sub-tab.
`Custom Domain for Feedback Forms`Serving forms from the customer's own domainUpgradeChild of `Feedback Forms`.
`Review Gating / Negative Feedback`Routing unhappy customers into private feedbackEnabledAdvanced View only.
`QR Codes`QR codes that link to collection pagesEnabled
`NFC Cards`Visibility of the NFC cards areaHiddenThe only option hidden by default. Even when visible, the customer nav additionally needs an actual NFC order before the item shows.

Features & Options: Social Proof sub-tab

The `Social Proof` sub-tab gates widget creation and display controls. `Create Widgets` is the parent for the widget limit and SEO snippets; the fine-grained display controls — allowed widget types, rating and verified filters, sort order, and custom CSS — live behind `Advanced View` inside the widgets area.

OptionWhat it controlsDefaultNotes
`Create Widgets`Building embeddable review widgetsEnabledParent option with the two children below.
`Widget Limit`Maximum number of widgets0 (unlimited)Child of `Create Widgets`.
`SEO Review Snippets`Structured-data review snippets for search enginesEnabledChild of `Create Widgets`.
`Social Sharing`Sharing reviews as social imagesEnabled
`Allowed Widget Types`Which widget types the customer can createAll allowedAdvanced View only, inside the widgets area.
`Minimum Rating Filter`Filtering widgets by a minimum star ratingEnabledAdvanced View only.
`Verified Reviews Filter`Filtering widgets to verified reviewsEnabledAdvanced View only.
`Custom Sort Order`Custom review ordering inside widgetsEnabledAdvanced View only.
`Custom CSS`Custom CSS on widgetsEnabledAdvanced View only.

Features & Options: Integrations sub-tab

The `Integrations` sub-tab decides which review platforms a customer can connect. `Allowed Review Sources` is a logo grid with every platform selected by default — deselect a platform to block customers on this plan from connecting it.

By default a blocked platform still shows greyed out in the customer's picker; turn on `Hide Unselected Sources` to remove blocked platforms from the picker entirely.

OptionWhat it controlsDefaultNotes
`Allowed Review Sources`A logo grid of review platforms the customer may connectAll selectedDeselecting a platform blocks connecting it.
`Review Source Limit`Maximum number of connected review sources0 (unlimited)
`Allow Custom Review Sources`Letting customers add sources not in the gridEnabledAdvanced View only.
`Hide Unselected Sources`How blocked platforms appear in the customer's pickerOffAdvanced View only. When on, blocked platforms disappear from the picker instead of showing greyed out.

The Stripe path: Pricing & Billing

The `Pricing & Billing` tab is only rendered once your Stripe account is connected via `Business -> Billing & Revenue -> Connect Stripe`.

The core fields are `Monthly Stripe Price ID` and `Yearly Stripe Price ID`, each with a `Create` button for in-app price creation. The currency comes from your platform currency setting and is shown read-only. A plan counts as a Stripe plan if at least one price ID is set, and IDs are validated against your connected account.

Additional location pricing lives here too: `Monthly Add-on Price ID` and `Yearly Add-on Price ID` bill each location beyond the plan's `Max Locations`. If you configure Tiered Pricing (volume discounts by location count), it overrides the simple add-on price IDs.

  • Platform commission: a 1.9% application fee applies to customer payments
  • The fee is waived for lifetime-deal agencies
  • The fee is silently dropped for BRL, INR, MXN, MYR, SGD, and THB currencies
Worth knowing

A plan with no price IDs at all is treated as billed externally — see the non-Stripe path below. Setting even one price ID (monthly or yearly) makes it a Stripe plan.

Trials and what happens when a subscription ends

`Trial Days` sits on the Pricing tab. It is hidden for Free plans and forced to 0 when the plan is free. When a Stripe trial ends, Stripe takes over billing.

When a subscription fully ends, the plan's Subscription End Behavior decides what happens next: `Use default`, `Do nothing` (block access), or auto-switch the customer to a chosen free plan. Note that the auto-downgrade clears all per-customer overrides.

When a customer's trial expires or their subscription lapses, the dashboard redirects them to your subscriptions page — or to a subscription-required page when billing is hidden or Stripe is absent. Campaign sending and review syncing stop. Their public feedback forms and QR links show a branded 'page paused' notice (HTTP 402) rather than a broken 404, so end customers scanning a QR code never hit a dead page.

  • `Trial Days` is hidden for Free plans and forced to 0 when the plan is free
  • Subscription End Behavior options: `Use default`, `Do nothing` (block access), or auto-switch to a chosen free plan
  • Auto-downgrade to a free plan clears all per-customer overrides — re-apply any you still want

The non-Stripe path: billing externally

A plan with no price IDs is billed externally, and the plan list badges it `Billed Externally`. The `Free Plan` toggle marks a genuinely free plan — free-plan customers always keep access, even when paused.

Non-Stripe, non-free customers stay active until their platform trial date passes. You assign plans manually via the customer's Switch Plan modal.

Credits on free and non-Stripe plans renew monthly per the plan's limits — independently per channel, and respecting the `No Credits During Trial` option.

  • Customers without your Stripe see a reduced Billing menu: `Credit usage` only, plus `Buy credits` when you sell credit products with external payment URLs
  • Pause is available for non-Stripe customers only, from Manage Customer, and stops access unless the plan is free
Worth knowing

Warning: pausing wipes the customer's trial date, and resuming does not restore it. Do not pause a trialing customer you intend to resume unless you are prepared to reset their access manually.

Per-customer overrides and credit timing

The same Features & Options editor appears on each customer's Manage Customer page. Anything you set there overrides the plan for that customer only, and overrides store only the differences from the plan — clearing an override re-inherits the plan value.

Timing is the important part. Editing limits on a specific customer expires and re-grants their credits immediately. Editing the plan template does not touch existing subscribers' credits until their next monthly renewal.

  • Use the plan editor for changes that should roll out to everyone at renewal
  • Use the per-customer editor for changes that should take effect right now
  • The per-customer editor has no price-recommendation step — it saves options directly
  • Remember that an auto-downgrade at subscription end clears all per-customer overrides

Plan lifecycle: create, copy, hide, delete, reorder

  • Create: requires an Agency-tier EMR plan; a new plan starts from the defaults listed in the tables above
  • Copy: duplicates everything except Stripe price IDs and payment links — reconnect billing on the copy. It does copy the `Default Plan` flag, so un-default one of the two afterwards
  • Hide: retires a plan without deleting it — existing subscribers keep it and you can still assign it from the Switch Plan modal
  • Delete: a soft delete, blocked while any customer is assigned to the plan — including cancelled and free ones — with the error 'You have active subscribers on this plan'. Move customers off first
  • Reorder: drag plans in the list to change their display order
Worth knowing

Every agency starts with a seeded set: Starter, Professional (the default), and Enterprise. All three are created without Stripe price IDs — connect prices before selling them.

Gotchas: the ones agencies actually hit

Every item below is a behaviour that has surprised real agencies. Skim this list before and after any plan change — most support tickets about custom plans trace back to one of these.

  • Hiding a feature is not retroactive. Configuration customers already enabled (for example video collection on a feedback form) keeps working until you edit the form — audit existing records after downgrading a plan
  • `Advanced View` resets off each visit. If you cannot find Platform Mode, API Access, or the widget filter options, flick the switch
  • The plan editor's save opens a price-recommendation dialog — options only persist after you click `Save Plan Options` there
  • `Campaigns Section` hides navigation but not direct URLs
  • Setting `API Access` to `Upgrade` still 404s the API docs page — only fully `Enabled` unlocks the docs
  • NFC is hidden by default and the customer nav additionally requires a real NFC order before the item appears
  • The 1.9% commission is silently waived for BRL, INR, MXN, MYR, SGD, and THB — revenue reports will not show a fee for those currencies

Common questions