Fjord for Craft CMS

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

LitePro
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

  1. 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.
  2. Open the checkout step and add the SKU it sells. Set Cart Mode to Replace the cart if the funnel should sell only that.
  3. 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.