hugoblox.com/blocks/pricing
Calls to actionFree · MITPreact · interactive

Pricing block

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.

v1.0.0Version
26Options
MITLicense

Quick start

Add the Pricing block

Drop this into your page's front matter, under the sections list. Edit the values, and HugoBlox renders the block — no build step.

Add to your page's sections
- 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: true

Reference

Configuration

Every option the Pricing block accepts, generated from its schema.

Content options

Properties set under the block's content key.

PropertyTypeDefaultDescription
titlestringSection heading (supports Markdown bold/italic)
subtitlestringSupporting sentence below the title — context or reassurance
billing_toggleobjectOptional monthly/yearly billing toggle. Only shown when tiers have different monthly and yearly prices.
billing_toggle.enabledbooleanfalseShow the monthly/yearly billing toggle. Set to true when tiers have both monthly and yearly prices.
billing_toggle.monthly_labelstringMonthlyLabel for monthly billing option
billing_toggle.yearly_labelstringYearlyLabel for yearly billing option
billing_toggle.yearly_discountstringDiscount badge text shown next to the yearly option. E.g. 'Save 20%', '2 months free'.
tiersrequiredobject[]Pricing tiers. Use 2–4 tiers; 3 is most common (Free/Pro/Business or Starter/Pro/Enterprise).
tiers[].namerequiredstringTier name. Keep short: Starter, Pro, Business, Enterprise, Team.
tiers[].badgestringSmall floating badge above the card, e.g. 'Most popular', 'Best value'. Leave empty for no badge. Only one tier should have a badge.
tiers[].descriptionstringShort tier positioning statement — who it's for
tiers[].priceobjectPricing 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.monthlystringMonthly 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.yearlystringYearly 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.currencystring$Currency symbol shown before the price. E.g. '$', '€', '£'. Leave empty for free or contact-us tiers.
tiers[].price_suffixstring/monthText shown after the price amount, e.g. '/month', '/user/month', '/year'. Leave empty for free or contact tiers.
tiers[].price_notestringStatic 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_monthlystringNote shown only when monthly billing is selected. Overrides price_note for monthly mode. E.g. 'Billed monthly', 'Cancel anytime'.
tiers[].price_note_yearlystringNote shown only when yearly billing is selected. Overrides price_note for yearly mode. E.g. 'Billed annually', 'Save $XX/year'.
tiers[].highlightbooleanfalseVisually 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[].ctaobjectCall-to-action button for this tier
tiers[].cta.textrequiredstringButton label. Match the commitment: free tiers → 'Get started free'; paid tiers → 'Start free trial' or 'Choose plan'; enterprise → 'Contact sales'.
tiers[].cta.urlrequiredstringButton destination URL. Use relative paths for internal pages or absolute URLs for external links (e.g. sign-up page).
tiers[].cta.iconstringOptional icon after the button label. Supports hero/ pack. E.g. 'hero/arrow-right'.
tiers[].cta.styleprimary | outlineoutlineButton visual style. Use 'primary' (filled) on the highlighted tier; 'outline' on others.
tiers[].featuresobject[]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

Works well with

Blocks that pair naturally with Pricing on the same page.

Frequently asked

Pricing block FAQ

  • Add a "block: pricing" entry to the sections list in your page's front matter, then fill in the content fields. HugoBlox renders it automatically — copy the example config above as a starting point.

Ready to build with the Pricing block?