Skip to content
Build your plan

Forge your plan.

A pricing page is usually a React app in disguise — toggles, steppers, a total that recomputes, upsell logic, the works. This one is a single Markdown file. Pick a tier, set your seats, switch features on, and watch the price move.

No credit card 14-day trial Cancel anytime

1 · Choose a tier

Starter

$12/mo base

For solo builders and side projects finding their footing.

Team

$20/mo base

The popular pick — for small teams shipping every week.

Current tier

Business

$40/mo base

Scale, controls, and the headroom growing orgs need.

2 · Set your seats

Every plan includes a generous base; each additional seat is a flat $8/mo. The stepper is just :button actions on a :state number.

3 seats

That's $24/mo in seats right now.

3 · Add features

Toggle the capabilities you need. Each card lights up when it's on and folds straight into the total.

Advanced analytics

+$25/mo

Funnels, retention cohorts, and a real-time dashboard your whole team can read.

SSO & SAML

+$50/mo

One-click sign-in with Okta, Google Workspace, or Entra — plus SCIM provisioning.

Priority support

+$40/mo

A private channel, a named engineer, and a one-hour first-response SLA.

Just the essentials so far. Add a feature above to see how the total moves.

Your plan

$44

per month

Base plan · $20/mo

3 seats · $24/mo

Add-ons · $0/mo

Billed annually: $440/yr — you save $88 vs. monthly.

A month-to-month list price would run $528/yr. Choose yearly at checkout to lock the discount.

4 · Start your trial

Drop in your details and we'll spin up your $44/mo workspace — no charge for 14 days.

Your plan today: $44/mo · billed annually at $440/yr. You can change tiers or seats any time.


It's just Markdown

No JSX, no useState, no pricing library. The tier buttons, the seat stepper, the feature toggles, the live total, the upsell hints, and the checkout are all directives in one .wd file. The pricing engine is a single :computed line:

View source — it's Markdown
:state base = 20
:state seats = 3
:state analytics = false
:state sso = false
:state priority = false

:computed total = base + seats*8 + analytics*25 + sso*50 + priority*40
:computed annualBill = total*10
:computed annualSaved = total*2

The price is ${ total }/mo.

::: card .tier .on when base == 20
:button "Select Team" -> base = 20
:::

:button "–" -> seats -= 1
:button "+" -> seats++

::: card .feature .on when analytics
:if analytics
:button "Remove" -> analytics toggle
:else
:button "Add analytics" -> analytics toggle
:endif
:::

:if sso and not priority
Teams that turn on SSO almost always add Priority support.
:endif

:if total > 150
You've unlocked the annual discount.
:endif

:button "Reset everything" -> base reset; seats reset; analytics reset; sso reset; priority reset

Booleans coerce in arithmetic, so analytics*25 is 25 when the toggle is on and 0 when it's off — that one rule is the whole pricing engine. Read the docs or see the reactive page.