Platform admin
Editable pricing page copy
Every piece of copy on the public /pricing page
(besides the plan + add-on data which lives in
plans / plan_addons) is editable from
Settings โ System โ Pricing page copy. The form
sits right under Marketing homepage in
/settings/system and groups the 28 editable fields
into five tabs (Hero / Plans & toggle / Lifetime & add-on /
Comparison & FAQ / CTA & footer). Use it to rewrite the
hero title, billing toggle labels, lifetime & add-on section
copy, comparison table heading, FAQ heading, bottom CTA, and the
Enterprise footer line.
Saved values are deep-merged over the shipped defaults at render time, so you can leave the fields you don't want to touch blank โ only the changed keys are persisted and surfaced to the visitor.
What you can edit
| Field | Where it appears |
|---|---|
| Hero eyebrow | The small UPPERCASE pill above the headline ("Pricing" by default). |
| Hero title prefix / accent / suffix | "Simple, conversation-based pricing" โ three editable parts so you can rewrite either side of the italic accent. |
| Hero subtitle | The paragraph under the title. |
| Billing toggle labels | "Monthly" / "Yearly" โ useful if you sell yearly only and want to relabel as "Annual" / "Monthly". |
| Save badge template | "Save :percent% with yearly" โ use :percent as the placeholder. |
| Currency label | The "Currency" label next to the currency dropdown. |
| Lifetime section | Eyebrow + title + subtitle for the LTD section. Only renders when at least one lifetime plan is published. |
| Comparison table | Heading + subheading + the "Feature" column label. |
| FAQ heading | "Frequently asked" by default. |
| CTA section | Bottom black band with title + subtitle + button label + button href. Customise the href to point at /register?trial=14 etc. |
| Enterprise footer | "Need higher limits or a self-hosted license? Talk to us about Enterprise" โ both halves editable. |
| Add-on section | Eyebrow + footnote shown under the addon card on the pricing page. |
How the values are stored
A single JSON blob on app_settings.pricing_page_content.
The App\\Support\\MarketingPricingContent resolver
deep-merges it over the shipped defaults at every render so a
partial customisation never breaks the page โ any key you didn't
touch falls back to the default.
Translation: every string is still wrapped in the t()
helper on the React side, so the translation system can localise
your custom strings via the standard locale JSON files.
Themes other than the default
The Aurora and Prism marketing themes also consume the same
content prop and render the editor's customisations
natively, including the addon_section card. Switch
themes from Settings โ System โ Marketing โ Theme;
edited pricing copy survives the theme switch.
See also: Plans & Stripe sync for plan-level pricing data and One-time add-ons for the add-on catalog.