Configuring Commerce
Commerce supports a number of settings. Like Craft’s config settings, you can override their default values in a config/commerce.php
file.
return [
'purgeInactiveCartsDuration' => 'P1D',
];
In Commerce 5, many global settings have become store-specific. See the upgrade guide for more information.
# Aliases
Commerce adds these aliases on top of those provided by Craft.
Alias | Description |
---|---|
@commerceLib | The path to vendor/craftcms/commerce/lib/ |
# Environmental Configuration
Some Commerce settings can be defined on a per-environment basis using environment variables or aliases:
- System Settings →
- General Settings →
- Subscription Settings →
- Billing detail update URL
- Subscription Settings →
- Emails →
- Status Email Address (Environment variables only)
- From Name (Environment variables only)
- General Settings →
# Project Config
Craft Commerce stores the following items in the Craft project config:
- Commerce general settings
- Stores
- Order, product, variant, and subscription field layouts
- Order statuses
- Product types
- Email settings
- PDF settings
- Gateways settings
Some items are considered “content” and can change in production, meaning they’re not stored in project config:
- Pricing rules
- Discounts and sales
- Shipping categories
- Shipping zones
- Shipping methods and rules
- Subscription plans
- Tax categories
- Tax zones
- Tax rates
- Order, product, variant, and subscription elements
# Config Settings
# System
# defaultView
- Allowed types
- string (opens new window)
- Default value
'commerce/orders'
- Defined by
- Settings::$defaultView (opens new window)
- Since
- 2.2
Commerce’s default control panel view. (Defaults to order index.)
# Cart
# activeCartDuration
- Allowed types
mixed
- Default value
3600
(1 hour)- Defined by
- Settings::$activeCartDuration (opens new window)
- Since
- 2.2
How long a cart should go without being updated before it’s considered inactive.
See craft\helpers\ConfigHelper::durationInSeconds() (opens new window) for a list of supported value types.
# cartVariable
- Allowed types
- string (opens new window)
- Default value
'cart'
- Defined by
- Settings::$cartVariable (opens new window)
Key to be used when returning cart information in a response.
# loadCartRedirectUrl
- Allowed types
- string (opens new window), null (opens new window)
- Default value
null
- Defined by
- Settings::$loadCartRedirectUrl (opens new window)
- Since
- 3.1
Default URL to be loaded after using the load cart controller action (opens new window).
If null
(default), Craft’s default siteUrl
will be used.
# purgeInactiveCarts
- Allowed types
- boolean (opens new window)
- Default value
true
- Defined by
- Settings::$purgeInactiveCarts (opens new window)
Whether inactive carts should automatically be deleted from the database during garbage collection.
You can control how long a cart should go without being updated before it gets deleted purgeInactiveCartsDuration
setting.
# purgeInactiveCartsDuration
- Allowed types
mixed
- Default value
7776000
(90 days)- Defined by
- Settings::$purgeInactiveCartsDuration (opens new window)
Default length of time before inactive carts are purged. (Defaults to 90 days.)
See craft\helpers\ConfigHelper::durationInSeconds() (opens new window) for a list of supported value types.
# updateCartSearchIndexes
- Allowed types
- boolean (opens new window)
- Default value
true
- Defined by
- Settings::$updateCartSearchIndexes (opens new window)
- Since
- 3.1.5
Whether the search index for a cart should be updated when saving the cart via commerce/cart/*
controller actions.
May be set to false
to reduce performance impact on high-traffic sites.
Setting this to false
will result in fewer index update queue jobs, but you’ll need to manually re-index orders to ensure up-to-date cart search results in the control panel.
# validateCartCustomFieldsOnSubmission
- Allowed types
- boolean (opens new window)
- Default value
false
- Defined by
- Settings::$validateCartCustomFieldsOnSubmission (opens new window)
- Since
- 3.0.12
Whether to validate custom fields when a cart is updated.
Set to true
to allow custom content fields to return validation errors when a cart is updated.
# Orders
# pdfAllowRemoteImages
- Allowed types
- boolean (opens new window)
- Default value
false
- Defined by
- Settings::$pdfAllowRemoteImages (opens new window)
Whether to allow non-local images in generated order PDFs.
# updateBillingDetailsUrl
- Allowed types
- string (opens new window)
- Default value
''
- Defined by
- Settings::$updateBillingDetailsUrl (opens new window)
URL for a user to resolve billing issues with their subscription.
The example templates include a template for this page (opens new window).
# Payments
# gatewayPostRedirectTemplate
- Allowed types
- string (opens new window)
- Default value
''
- Defined by
- Settings::$gatewayPostRedirectTemplate (opens new window)
The path to the template that should be used to perform POST requests to offsite payment gateways.
The template must contain a form that posts to the URL supplied by the actionUrl
variable and outputs all hidden inputs with
the inputs
variable.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Redirecting...</title>
</head>
<body onload="document.forms[0].submit();">
<form action="{{ actionUrl }}" method="post">
<p>Redirecting to payment page...</p>
<p>
{{ inputs|raw }}
<button type="submit">Continue</button>
</p>
</form>
</body>
</html>
Since this template is simply used for redirecting, it only appears for a few seconds, so we suggest making it load fast with minimal images and inline styles to reduce HTTP requests.
If empty (default), each gateway will decide how to handle after-payment redirects.
# paymentCurrency
- Allowed types
- array (opens new window), null (opens new window)
- Default value
null
- Defined by
- Settings::$paymentCurrency (opens new window)
ISO codes for supported payment currencies.
See Payment Currencies (opens new window).
# Units
# dimensionUnits
- Allowed types
- string (opens new window)
- Default value
'mm'
- Defined by
- Settings::$dimensionUnits (opens new window)
Unit type for dimension measurements.
Options:
'mm'
'cm'
'm'
'ft'
'in'
# weightUnits
- Allowed types
- string (opens new window)
- Default value
'g'
- Defined by
- Settings::$weightUnits (opens new window)
Units to be used for weight measurements.
Options:
'g'
'kg'
'lb'
# Advanced Configuration
Additional customization of Commerce components is possible via application configuration. These settings must be added to your project’s config/app.php
file, within the pluginConfigs
block.
# Cart Cookie Configuration
Cart cookies expire after one year, by default. Change this with the carts.cartCookieDuration
(opens new window) property:
return [
'components' => [
'plugins' => [
'pluginConfigs' => [
'commerce' => [
'components' => [
'carts' => [
'cartCookie' => [
// Add custom key-value cookie params
],
// Set the cart expiry to one month
'cartCookieDuration' => 2629800,
],
],
],
],
],
],
];