Console & config
Commands
php craft fjord/flows # the flows and their steps
php craft fjord/flows/routes # the site routes Fjord contributes
php craft fjord/flows/check # preflight
php craft fjord/flows/export # the whole configuration as JSON
php craft fjord/flows/export springLaunch --file=spring.json
php craft fjord/flows/import --file=spring.json
php craft fjord/flows/install-templates # copy the reference templates into your site
php craft fjord/stats/report [handle] --days=30
php craft fjord/stats/prune
fjord/flows/routes is the fastest way to find out why a step 404s: it prints exactly what Fjord
has contributed to the site's URL rules, per site.
Moving funnels between environments
Fjord's configuration lives in the database, not project config — the same call Commerce makes for its own shipping methods, and for the same reason: flows reference purchasable IDs, entry IDs and coupon codes, none of which mean the same thing in two environments.
export and import are how a funnel travels. Purchasables are written out by SKU as well as by
ID, and read back by SKU first, so a product does not silently become a different product.
Importing a flow whose handle already exists replaces it wholesale rather than merging — a half-merged funnel is a funnel nobody can reason about. Offers are matched by handle and updated in place.
Settings
| Setting | Default | Does |
|---|---|---|
| Template Root | shop/fjord | Where a bare step template name is looked up |
| Session Cookie Name | fjord_session | The cookie carrying a visitor's place in a funnel |
| Session Lifetime | 72 hours | Inactivity before a funnel session is forgotten |
| Offer Window | 60 minutes | How long after an order a one-click offer may still be charged |
| Require a Paid Order | on | Only offer an upsell once the parent order is paid |
| Replay Declined Offers | off | Show an offer again to someone who already refused it |
| Track Events | on | Record views and conversions |
| Event Retention | 365 days | 0 keeps them forever |
| Webhook Timeout | 10s | How long to wait on an outbound webhook |
Permissions
- Manage flows and steps
- Manage offers
- View funnel reports
- Manage webhooks
The control-panel section only appears for a user who has at least one of them.
What Fjord stores
Nine tables: flows, steps, variants, offers, the step–offer join, sessions, events, grants and webhooks. Deleting a flow cascades to its steps, variants, sessions and events.
Grants — the record of what each offer resolved to on each order — are deliberately not deleted with the order they belong to, and events are not foreign-keyed to orders at all. Commerce's own garbage collection can remove an order long after the funnel it came through, and losing the analytics row with it would silently rewrite history.