Fjord for Craft CMS

For Craft Commerce 5

The checkout is one page. The sale doesn't have to be.

Commerce gives you a cart and a checkout. Fjord gives you the shape around them — a landing page, a checkout that knows what it is selling, an offer after the sale, and a thank-you page nobody can reach early. Your templates, your markup; Fjord owns the routing, the state and the money.

Fjord

One line in your checkout

Fjord does not replace your checkout — it routes to it. The only change a working Commerce checkout needs is where its redirect points, because the next step is decided after the order completes, not when the form was rendered.

twig
{# Resolved when it is followed, not when the page renders.
   At render time there is no completed order, so an upsell
   looks unreachable and a baked-in URL would skip it. #}
{{ redirectInput(craft.fjord.continueUrl) }}

{# The bumps for this checkout, already filtered by eligibility #}
{% for bump in craft.fjord.bumps(step, cart) %}
    <h3>{{ bump.getDisplayHeadline() }}</h3>
    <strong>{{ bump.getPrice()|commerceCurrency(cart.currency) }}</strong>
{% endfor %}

Features

A funnel engine and an offer engine, each with one place where decisions happen.

Six kinds of step

Landing, opt-in, checkout, upsell, downsell and thank you, served under one base URI in the order you put them in.

  • A checkout step stocks the cart with what the funnel sells — once per session, so a reload never doubles it
  • Add to the cart, replace it, or leave it alone

Nobody skips ahead

One resolver decides whether a visitor may see a step, so a thank-you page cannot be reached without an order and an upsell cannot be reached without a paid one. Somebody who tries is walked forward to the first step they can see.

  • The offer endpoints ask the same resolver, so a hand-crafted POST cannot get past it

Order bumps that survive a recalculation

A discounted product ticked on the checkout, added as a real line item and discounted by a real order adjuster — spliced in ahead of tax, so nobody is taxed on a discount they were given.

  • The line item is the truth, not a ledger entry
  • Raising the quantity by hand does not extend the bump price

One click after the sale

An accepted post-purchase offer is charged on a new order linked to the original, against the card already used. A completed order is locked and already emailed — Fjord will not rewrite a document the customer has.

  • Refundable on its own, and visible in Commerce's own screens
  • Skipped entirely when there is nothing reusable to charge

It cannot charge twice

An offer resolves once per order, enforced by a unique database index rather than a check-then-act. A double-submitted form, a retried request and an impatient customer all collide on the index instead of taking a second payment.

  • Plus a paid-order requirement, an offer window, and an eligibility check — all re-checked when the endpoint is called

Split tests that keep a control

Give a step variants with traffic weights; whatever the weights leave over goes to the step's own template. A visitor is assigned once and keeps that arm.

  • Uplift and a two-proportion z-score, marked “too early” under 30 visitors an arm
  • Reported, never acted on — Fjord will not quietly reweight your traffic

Where they fall out

Visitors, views, conversions and drop-off per step, plus revenue, AOV and offer take rate across the funnel — including what share of revenue came from the offers rather than the thing you set out to sell.

  • A step converts when a visitor leaves it forwards, so nothing guesses at intent
  • Rates are per session: a reload is not another chance to convert

Moves between environments

Flows live in the database, not project config, because they reference purchasable and entry IDs. Export and import move them — and purchasables travel by SKU, so a product never silently becomes a different product.

Questions

The things people ask before installing a funnel builder.

Start free, upgrade when the offers pay for it

Lite is free and gives you the whole funnel engine. Pro is $99 with a $79/year renewal, and adds the order bumps, the one-click upsells, split testing and the revenue reporting.

More in Commerce

Pairs well with Fjord

For the storefront side of Craft Commerce. Checkout, subscriptions, bundles, loyalty, B2B and the product feeds that bring shoppers in.