Skip to main content

Configuration Finish

A configuration can be explicitly finished, which marks it as complete and triggers a number of user-defined actions such as sending mails, creating a quote, pushing data to 3rd party applications (such as ERPs) or adding an item to an ecommerce shopping cart.

On Checkout

The process of completing a configuration was previously known as Checkout, which is still available and fully functional.

We are currently in the process of rolling out the new Finish experience.

Finish Actions

Everything that happens when a configuration is finished is defined by so-called finish actions in the FinishActions rule.

You can define different sets of actions based on the current user, configurator stage or any other characteristic you like.
When a configuration is finished, you can view the results of all actions on the Insights page.
You can optionally assign a custom actionName to each of your finish actions, if you plan to access their results later on.

Checkout interaction: if your configurator contains a CheckoutComponent, then its Shop will be automatically converted into a finish action. You can keep using the CheckoutComponent and define additional finish actions – but be aware that certain actions can only be used once per configuration. If you do not define a Goal for your finish (with OnFinish.SetGoal), then the Shop.Name will be set as Goal.

Example FinishActions rule

var actions : List<FinishAction> = [
OnFinish.SetOutput({
color: SelectedColor,
price: unitPrice * Amount
}),
];

if Input = "Save" then
actions.concat([
OnFinish.SetGoal("Save"),
OnFinish.SendMail(new {
from: new { mail: "test@example.com", name: "Test Inc." },
to: [ new { mail: "user@example.com" } ],
subject: "Test Mail",
message: "Example content",
})
])
elif Input = "Quote" then
actions.concat([
OnFinish.SetGoal("Quote"),
OnFinish.Quote(MyQuote)
])
else
actions
end
TIP

By using an explicit type, the var actions : List<FinishAction> variable will be able to hold a list of any type of finish action. Without the explicit type, the list would want all actions to be of the same type.
This also helps when combining lists of actions and is why in the example the concat() is done in each branch of the if