Installation
Requirements
- Craft CMS 5.3 or later
- Craft Commerce 5.0 or later
- PHP 8.2 or later
Fjord can be installed while Commerce is disabled or mid-upgrade — everything that touches an order checks first — but it does nothing useful until Commerce is running.
Install
composer require justinholtweb/craft-fjord
php craft plugin/install fjord
Editions
| Lite | Pro | |
|---|---|---|
| Flows, steps, routing and step guarding | ✓ | ✓ |
| Checkout steps that stock the cart | ✓ | ✓ |
| Store-checkout override | ✓ | ✓ |
craft.fjord and the front-end actions | ✓ | ✓ |
| Views, conversions and drop-off per step | ✓ | ✓ |
| Console commands, export and import | ✓ | ✓ |
| Order bumps | ✓ | |
| One-click post-purchase upsells and downsells | ✓ | |
| A/B split testing | ✓ | |
| Condition-builder routing rules | ✓ | |
| Auto-applied coupons | ✓ | |
| Revenue, AOV and offer take rate | ✓ | |
| Webhooks | ✓ |
Lite is free. Pro is $99, with a $79 annual renewal.
Pro configuration that survives a downgrade is ignored, not obeyed. A Lite install keeps every offer, variant and routing rule in the database, serves none of them, and says so in the control panel — so upgrading again picks up exactly where you left off, and nothing charges a customer on a licence that does not cover it.
Templates
Fjord renders your templates, not its own. Copy the reference set as a starting point:
php craft fjord/flows/install-templates
They land under the Template Root setting (shop/fjord by default), one per step type. They
are a starting point, not a runtime dependency: Fjord renders whatever is at the path and never
falls back to its own copy, because a funnel silently rendering a plugin's placeholder is worse
than one that tells you which template is missing.
Your first funnel
- Fjord → Flows → New flow. Give it a name and a base URI — say
funnels/spring. Saving a new flow creates a landing, a checkout and a thank-you step, which is the shortest arrangement that is actually a funnel. - Open the checkout step and add the SKU it sells. Set Cart Mode to Replace the cart if the funnel should sell only that.
- Visit
/funnels/spring. Fjord routes you to the first step and opens a flow session.
Then make the checkout template yours — see Templates. The one line that matters is the redirect:
{{ redirectInput(craft.fjord.continueUrl) }}
Preflight
Before pointing traffic at a funnel:
php craft fjord/flows/check
It reports the things that disappoint a customer rather than throwing an error: a step whose template does not exist, a checkout selling a SKU that has been deleted, an upsell step with no offer attached, variants that between them ask for more than 100% of the traffic, and — the one that quietly wastes a whole funnel — no enabled gateway that can charge a stored payment source.