CTA Button List
A vertical stack of call-to-action buttons with icons — ideal for link-in-bio pages and resource lists.
Pricing tiers with a monthly/yearly toggle, feature checklists, a highlighted plan, and per-tier CTAs.
Add it to any Hugo page's sections list — no build step.
Quick start
Drop this into your page's front matter, under the sections list. Edit the values, and HugoBlox renders the block — no build step.
- block: pricing
content:
title: Simple, transparent pricing
subtitle: Start free. Upgrade when you're ready. No credit card required.
billing_toggle:
enabled: true
monthly_label: Monthly
yearly_label: Yearly
yearly_discount: Save 20%
tiers:
- name: Starter
description: Perfect for personal projects and portfolios.
price:
monthly: "0"
yearly: "0"
currency: $
price_suffix: ""
price_note: Free forever
highlight: false
cta:
text: Get started free
url: /signup
icon: hero/arrow-right
style: outline
features:
- text: 5 pages
included: true
- text: 1 GB storage
included: true
- text: Custom domain
included: false
- text: Analytics
included: false
- text: Priority support
included: false
- name: Pro
badge: Most popular
description: For freelancers and growing teams.
price:
monthly: "19"
yearly: "15"
currency: $
price_suffix: /month
price_note: Billed annually
highlight: true
cta:
text: Start free trial
url: /signup/pro
icon: hero/arrow-right
style: primary
features:
- text: Unlimited pages
included: true
- text: 10 GB storage
included: true
- text: Custom domain
included: true
- text: Analytics
included: true
- text: Priority support
included: false
- name: Business
description: Scale with confidence and dedicated support.
price:
monthly: "49"
yearly: "39"
currency: $
price_suffix: /month
price_note: Billed annually
highlight: false
cta:
text: Start free trial
url: /signup/business
icon: hero/arrow-right
style: outline
features:
- text: Unlimited pages
included: true
- text: 100 GB storage
included: true
- text: Custom domain
included: true
- text: Analytics
included: true
- text: Priority support
included: trueReference
Every option the Pricing block accepts, generated from its schema.
Properties set under the block's content key.
| Property | Type | Default | Description |
|---|---|---|---|
title | string | — | Section heading (supports Markdown bold/italic) |
subtitle | string | — | Supporting sentence below the title — context or reassurance |
billing_toggle | object | — | Optional monthly/yearly billing toggle. Only shown when tiers have different monthly and yearly prices. |
billing_toggle.enabled | boolean | false | Show the monthly/yearly billing toggle. Set to true when tiers have both monthly and yearly prices. |
billing_toggle.monthly_label | string | Monthly | Label for monthly billing option |
billing_toggle.yearly_label | string | Yearly | Label for yearly billing option |
billing_toggle.yearly_discount | string | — | Discount badge text shown next to the yearly option. E.g. 'Save 20%', '2 months free'. |
tiersrequired | object[] | — | Pricing tiers. Use 2–4 tiers; 3 is most common (Free/Pro/Business or Starter/Pro/Enterprise). |
tiers[].namerequired | string | — | Tier name. Keep short: Starter, Pro, Business, Enterprise, Team. |
tiers[].badge | string | — | Small floating badge above the card, e.g. 'Most popular', 'Best value'. Leave empty for no badge. Only one tier should have a badge. |
tiers[].description | string | — | Short tier positioning statement — who it's for |
tiers[].price | object | — | Pricing amounts. Set monthly and yearly to different values to enable the billing toggle for this tier. Set both to '0' for a free tier. Leave both empty for a 'Contact us' tier. |
tiers[].price.monthly | string | — | Monthly price as a plain number string (no currency symbol). Use '0' for free, leave empty for 'Contact us' tiers. E.g. '29', '99', '0', ''. |
tiers[].price.yearly | string | — | Yearly price per month as a plain number string — typically 15–25% lower than monthly. E.g. if monthly is '29', set yearly to '23'. Leave empty if no yearly option. |
tiers[].price.currency | string | $ | Currency symbol shown before the price. E.g. '$', '€', '£'. Leave empty for free or contact-us tiers. |
tiers[].price_suffix | string | /month | Text shown after the price amount, e.g. '/month', '/user/month', '/year'. Leave empty for free or contact tiers. |
tiers[].price_note | string | — | Static note under the price — shown in all billing modes. Use for tiers that don't change with the toggle (free tiers, contact-us tiers). E.g. 'Free forever', 'Custom pricing'. For paid tiers with a toggle, use price_note_monthly + price_note_yearly instead. |
tiers[].price_note_monthly | string | — | Note shown only when monthly billing is selected. Overrides price_note for monthly mode. E.g. 'Billed monthly', 'Cancel anytime'. |
tiers[].price_note_yearly | string | — | Note shown only when yearly billing is selected. Overrides price_note for yearly mode. E.g. 'Billed annually', 'Save $XX/year'. |
tiers[].highlight | boolean | false | Visually emphasise this tier with a primary colour ring and slight scale-up. Use on your primary conversion target (usually the same tier that has the badge). Only one tier should be highlighted. |
tiers[].cta | object | — | Call-to-action button for this tier |
tiers[].cta.textrequired | string | — | Button label. Match the commitment: free tiers → 'Get started free'; paid tiers → 'Start free trial' or 'Choose plan'; enterprise → 'Contact sales'. |
tiers[].cta.urlrequired | string | — | Button destination URL. Use relative paths for internal pages or absolute URLs for external links (e.g. sign-up page). |
tiers[].cta.icon | string | — | Optional icon after the button label. Supports hero/ pack. E.g. 'hero/arrow-right'. |
tiers[].cta.style | primary | outline | outline | Button visual style. Use 'primary' (filled) on the highlighted tier; 'outline' on others. |
tiers[].features | object[] | — | Feature list for this tier. Each item is either a plain string (included) or an object with text, included flag, and optional note. Show 4–8 features per tier for best scannability. |
Compose
Blocks that pair naturally with Pricing on the same page.
Frequently asked
Ready to build with the Pricing block?
More blocks like this
A vertical stack of call-to-action buttons with icons — ideal for link-in-bio pages and resource lists.
A high-contrast call-to-action card — bold headline, supporting line, and a button to drive the next step.
Alternating image-and-text rows with feature bullets and a CTA — tell your story as visitors scroll.
Show what your product does in a scannable grid of icons, names, and benefit-led descriptions.