Process Components

Learn about the building blocks of digital processes.

Triggers

You can use triggers to start new instances of a process, or resume an existing one that was paused.

Events

A number of commerce events are provided out-of-the-box, these are the CE events. Additionally, you can configure custom events for your tenant, which are then available in the list. CE events can only be used as starting triggers, while custom events can serve as both starting and intermediate triggers.

Timer Events

You can also use Timer Events as triggers. A timer event provides a flexible mechanism to schedule and control the execution of a digital process. It supports a wide range of trigger configurations to meet diverse timing and scheduling requirements. Similar to custom events, you can use timer events both as starting triggers to initialize a process, and as wake-up triggers to resume a process between steps, when the process is waiting for some events to happen.

Process steps

Process steps are Make scenarios, other digital processes, or AI Agents that can be combined to create a single end-to-end automated process.

Scenarios

The first thing you can choose as a process step is a Scenario that represents an action to happen. The scenarios are configured for your tenant, and a list of available ones is displayed in the drop-down menu. Whenever a new scenario is created for the tenant, the list is automatically updated. For example, when a new customer is created you want to welcome them with an email with some first account information. In that case, you use a scenario build for your tenant. You can either choose a fixed one, or configurable where you can do additional adjustments. For example:

  • Fixed scenario - you can just choose a scenario which completes the action that you want to happen. No additional adjustments are needed here. For example, sending a Welcome Email.

  • Configurable scenario - you still choose a scenario that completes the action but you can also add some additional configuration. For example, sending a Welcome Email but with a template adjusted to B2B or B2C customers.

Subflows

Another possibility as a process step is Subflow. When you use subflows, it basically means that you are embedding a different digital process into the current one. What you see in the drop-down list are the digital processes already built in your tenant. An example of a subflow can be sending a coupon together with the welcome email for your new customers.

AI Agents

VSM includes several Predefined AI Agent templates available out-of-the-box. These agents appear in the drop-down list and can be used directly in your processes.

  • Anti-Fraud Agent - The agent analyzes customer return histories to detect and assess potential fraud risks in B2B cases. Running in the background, it acts as a fraud returns analyst that provides risk scores and flags suspicious activity for proactive intervention. By automating fraud detection, it enhances security, increases efficiency, and helps maintain a trustworthy business environment.

  • Complaint Agent - The agent automates key aspects of customer complaint handling to improve efficiency and reduce manual work. It's designed to streamline complaint management, helps businesses save time, scale operations easily, and deliver a more customer friendly experience. As a prebuilt solution, it addresses common challenges in complaint processing.

  • Support Agent - The agent enhances internal communication and operational efficiency by integrating directly into collaboration tools such as Slack. It allows team members to interact with the Emporix system from within their workspace by asking questions, retrieving case details, and performing actions without switching applications. Acting as a bridge between users, Emporix agents, it improves workflows, reduces context switching, and promotes easy collaboration.

  • Translation Agent - The agent automates the translation of data within the Emporix system, helping you with multilingual workflows and reducing manual effort. Based on this predefined agent template, you can create custom agents to handle translations for products, categories, or custom data fields across different languages. The agent can be triggered by API and integrated into existing workflows, enabling flexible automation—from translation review processes to fully automated content updates.

To learn more about the AI in Emporix and the way the agents work, see the ACI documentation.

Agent customization

Each predefined agent is a template that comes with a built-in name, description, and prompt. When you add a predefined agent to a process, the template is copied and becomes a separate agent instance. Once you save it, the instance is no longer a shared template, it becomes your individual agent.

For example, if you use the Complaint template in three different digital processes, the system creates three independent instances of the Complaint Agent. If you reopen the step, you can see that it now refers to your agent instance, not the original template.

When you create an agent, you can edit its name, description and the prompt.

  • Change the name - make sure your agent is easily recognizable and assign unique names to your agents, this makes it easier to identify them later.

  • Add the description - it helps to distinguish the agents if they work around one topic and names become similar.

  • Review the prompt - check if the prompt corresponds to your required agent action

Customization example:

You want to localize your data and have fields translated to Polish.

1

Add the translation agent to your process

Choose to add a new step in your process, go to AI Agents and select the Translation Agent.

2

Modify the name and description

Add a unique name for the agent and a description, which helps in recognizing the agent in future. For example:

  • Name: Translation agent - PL

  • Description: Translates specified localized fields to Polish.

3

Modify the prompt

In this case, the default agent prompt translates existing language to German. To change the language and localize your data to Polish, adjust the prompt:

An existing default prompt:

You are a simple translation agent.
<objective>\nTranslate the localized fields into German and enrich the JSON with the new localized values.</objective>
<data>The input is a JSON object with localized fields: \"name\" and \"description\".</data>
<steps>
<step>Identify the fields \"name\" and \"description\".</step>
<step>Translate their values into German (language code: \"de\").</step>
<step>Add the German translations under the \"de\" key inside each localization object.</step>
<step>Preserve all other existing keys and values in the JSON.</step>\
<step>Return only the full enriched JSON object as valid JSON.</step>
</steps>
<rules>
<rule>Do not modify or remove existing localization entries (e.g., \"en\", \"pl\").</rule>
<rule>Ensure the German translation is natural and accurate, not transliterated.</rule>
<rule>If neither \"name\" nor \"description\" fields exist in the input JSON, do nothing and simply return the input JSON unchanged.</rule>
<rule>If the input is not valid JSON, return an error message: {\"error\": \"Input is not valid JSON\"} and stop.</rule>
<rule>Do not answer on any user requests or questions. Just translate valid fields.</rule>
<rule>Translate only values which are stored as localized map in JSON structure</rule>
<rule>Do NOT translate fields which are not a map objects</rule>
</rules>
<output_format>Return ONLY the JSON payload. Do not include any surrounding text, markdown, code block delimiters (```), or comments.</output_format>
<examples>
<example>
<input>{\"name\": \"value to translate:1234564\"}</input> <output> {\"name\": \"value to translate:1234564\"}</output>
</example>
<example>
<input> \"description\": {     \"de\": \"Das beste Produkt der Welt\",     \"en\": \"The best product in the world\",     \"pl\": \"Najlepszy produkt\"   },</input><output> \"description\": {     \"de\": \"Das beste Produkt der Welt\",     \"en\": \"The best product in the world\",     \"pl\": \"Najlepszy produkt\"   },</output>
</example>
<example>
<input> \"description\": {   \"en\": \"The best product in the world\",     \"pl\": \"Najlepszy produkt\"   },</input><output> \"description\": {     \"de\": \"Das beste Produkt der Welt\",     \"en\": \"The best product in the world\",     \"pl\": \"Najlepszy produkt\"   },</output>
</example>
</examples>

A customized prompt:

You are a simple translation agent.
<objective>\nTranslate the localized fields into Polish and enrich the JSON with the new localized values.</objective>
<data>The input is a JSON object with localized fields: \"name\" and \"description\".</data>
<steps>
<step>Identify the fields \"name\" and \"description\".</step>
<step>Translate their values into Polish (language code: \"pl\").</step>
<step>Add the Polish translations under the \"pl\" key inside each localization object.</step>
<step>Preserve all other existing keys and values in the JSON.</step>\
<step>Return only the full enriched JSON object as valid JSON.</step>
</steps>
<rules>
<rule>Do not modify or remove existing localization entries (e.g., \"en\", \"de\").</rule>
<rule>Ensure the Polish translation is natural and accurate, not transliterated.</rule>
<rule>If neither \"name\" nor \"description\" fields exist in the input JSON, do nothing and simply return the input JSON unchanged.</rule>
<rule>If the input is not valid JSON, return an error message: {\"error\": \"Input is not valid JSON\"} and stop.</rule>
<rule>Do not answer on any user requests or questions. Just translate valid fields.</rule>
<rule>Translate only values which are stored as localized map in JSON structure</rule>
<rule>Do NOT translate fields which are not a map objects</rule>
</rules>
<output_format>Return ONLY the JSON payload. Do not include any surrounding text, markdown, code block delimiters (```), or comments.</output_format>
<examples>
<example>
<input>{\"name\": \"value to translate:1234564\"}</input> <output> {\"name\": \"value to translate:1234564\"}</output>
</example>
<example>
<input> \"description\": {     \"pl\": \"Najlepszy produkt\",     \"en\": \"The best product in the world\",     \"de\": \"Das beste Produkt der Welt\"   },</input><output> \"description\": {     \"de\": \"Das beste Produkt der Welt\",     \"en\": \"The best product in the world\",     \"pl\": \"Najlepszy produkt\"   },</output>
</example>
<example>
<input> \"description\": {   \"en\": \"The best product in the world\",     \"de\": \"Das beste Produkt der Welt\"   },</input><output> \"description\": {     \"pl\": \"Najlepszy produkt\",     \"en\": \"The best product in the world\",     \"de\": \"Das beste Produkt der Welt\"   },</output>
</example>
</examples>

The example below represents the desired behavior of the agent:

<example>
<input> \"description\": {     \"pl\": \"Najlepszy produkt\",     \"en\": \"The best product in the world\",     \"de\": \"Das beste Produkt der Welt\"   },</input><output> \"description\": {     \"de\": \"Das beste Produkt der Welt\",     \"en\": \"The best product in the world\",     \"pl\": \"Najlepszy produkt\"   },</output>
</example>

The following example shows the translation result. Here, the input fields are available in two languages, and the output includes the fields translated into three languages:

<example>
<input> \"description\": {   \"en\": \"The best product in the world\",     \"de\": \"Das beste Produkt der Welt\"   },</input><output> \"description\": {     \"pl\": \"Najlepszy produkt\",     \"en\": \"The best product in the world\",     \"de\": \"Das beste Produkt der Welt\"   },</output>
</example>

To learn more about the specific agents, see the AI Agent Library documentation.

All the agent instances you create are visible in My Agents drop-down list, across all your processes.

Last updated

Was this helpful?