Workflows are the automation engine of Kafinea. They allow you to automatically trigger actions when an event occurs on a record: sending emails, updating fields, creating records, calling an external service, and more. When properly configured, they eliminate repetitive tasks, reduce human error, and ensure that your business rules are consistently applied.
1. Access workflows #
Workflows are managed from Settings > Automation and Communication > Workflows. The list displays all existing workflows along with their target module, status (active/inactive), and description.
From this list, you can:
- Create a new workflow
- Edit an existing workflow
- Enable or disable a workflow
- Delete a workflow
2. Create a workflow #
Creating a workflow involves three steps: basic information, the trigger, and then conditions and actions.
Step 1 — Basic Information #
| Field | Description |
|---|---|
| Name | A descriptive name to identify the workflow (e.g., "Follow-up on invoice ") |
| Description | An optional description of the expected behavior |
| Target module | The module to which the workflow applies (Invoices, Contacts, Tickets, etc.) |
| Status | Active or inactive — an inactive workflow never triggers |
Tip: Use a clear naming convention for your workflows. For example: "[Module] — Action" (e.g., "Invoice — Automatic Send After Finalization"). This makes maintenance easier as the number of workflows grows.
Step 2 — Trigger #
The trigger determines when the workflow runs. Three types of triggers are available:
| Trigger | Behavior |
|---|---|
| At the beginning | The workflow runs only when a new record is created |
| Upon amendment | The workflow runs every time the record is modified (including when it is created) |
| By time interval | The workflow runs according to a schedule (see the "Scheduling" section) |
Recurrence (for the "On change" trigger):
When you select the "On change" trigger, you can specify the frequency:
- The first time the condition is met: the workflow runs only once per record, the first time the conditions are met
- Whenever the condition is met: the workflow runs every time a save is made, as long as the conditions are met
Example: A "Send a Welcome Email" workflow in the Contacts module with the recurrence "The first time the condition is met" ensures that only one welcome email is sent per contact, even if the record modified multiple times afterward.
Scheduling (time-based trigger) #
When the trigger is set to "Time interval," you configure the execution frequency:
| Frequency | Description |
|---|---|
| Every hour | Runs every hour |
| Daily | Run once a day at a specific time |
| Weekly | Runs on certain days of the week at a specific time |
| Monthly by date | Scheduled for certain days of the month (e.g., the 1st and the 15th) |
| Specific date | One-time execution on a specific date |
| Annual | Scheduled for specific dates each year |
For all frequencies except "Every hour," you specify the execution time.
Note: Scheduled workflows are executed by the Kafinea scheduler. They apply to all records in the target module that meet the defined conditions, rather than to a single record. This is what makes them particularly powerful for bulk processing (reminders, periodic updates, notifications, etc.).
Important: There is a limit on the number of scheduled workflows. If the limit is reached, the "By time interval" option will be disabled. Contact your administrator if you need to increase this limit.
Step 3 — Conditions and Actions #
After defining the trigger, you configure the filtering conditions and the actions to be performed.
3. Terms and Conditions #
The conditions determine which records are included in the workflow. They function as an advanced filter.
Create a condition #
Each condition consists of:
- A field in the target module (or a linked module)
- A comparison operator
- A benchmark
Available operators:
| Operator | Description |
|---|---|
| is equal to | Exact value |
| is not equal to | Different from the value |
| begins with | The field starts with the value |
| ends with | The field ends with the value |
| contains | The field contains the value |
| does not contain | The field does not contain the value |
| is less than | A numeric value or date that is earlier |
| is greater than | Larger number or date |
| is less than or equal to | A numeric value or date that is less than or equal to |
| is greater than or equal to | A numeric value or date that is greater than or equal to |
| is empty | The field has no value |
| is not empty | The field has a value |
| has changed | The field has been modified (useful with the "On Change" trigger) |
| has changed to | The field has been updated, and its new value is |
Condition groups #
Conditions can be combined using the logical operators AND and OR:
- All conditions (AND): All conditions in the group must be true
- At least one condition (OR): At least one condition in the group must be true
You can create multiple condition groups to build complex rules.
Example: For a workflow to follow up on unpaid invoices, you could set up:
- Group 1 (AND): Status is "Sent" AND Due Date is earlier than "today"
This workflow will target all invoices that have been sent and are past their due date.
Expressions in the terms and conditions #
In addition to fixed values, you can use dynamic expressions in conditions:
- Today: Today's Date
- Tomorrow: the day after today
- Yesterday: the day before
- Value of another field: Compare a field with the value of another field in the same record
4. Actions (tasks) #
Actions define what the workflow does when the conditions are met. You can add multiple actions to a single workflow, which will run in sequence.
Send an email #
Send an email to one or more recipients.
| Setting | Description |
|---|---|
| Recipient | The email address of a record field, a user, a group, or a static address |
| Subject | The email subject line (may contain variables from the record) |
| Body | The email content in rich text format (may contain variables from the record) |
| Attachments | Documents related to registration |
Note: Emails are not sent immediately. They are placed in a queue and sent by the scheduler. A slight delay is therefore normal between the time the workflow is triggered and the time the email is received.
Tip: Use variables (e.g.,
$contacts-lastname$,$invoice-invoice_no$) to customize the email content using data from the registration. The list of available variables is displayed in the editor.
Update fields #
Automatically changes the value of one or more fields in the record.
| Setting | Description |
|---|---|
| Field | The field to be modified |
| Value | The new value (constant, expression, or value from another field) |
Example: When a ticket is marked as "Resolved," automatically set the "Resolution Date" field to today's date.
Create a task (to-do) #
Automatically creates a task in the calendar.
| Setting | Description |
|---|---|
| Title | Task title |
| Status | The initial status of the task |
| Priority | The priority of the task |
| Due date | The deadline (can be calculated, e.g., "3 days from today") |
| Assigned to | The user or group responsible |
Create an event #
Automatically creates an event in the calendar (meeting, call, etc.).
| Setting | Description |
|---|---|
| Title | The title of the event |
| Type | Call, meeting, etc. |
| Date and time | The start and end of the event |
| Assigned to | The user or group responsible |
Create a record #
Automatically creates a new record in another module.
| Setting | Description |
|---|---|
| Target module | The module in which to create the record |
| Field mapping | The mapping between the fields of the source record and those of the new record |
Example: When a quote is accepted, automatically create a sales order with the same product lines.
Calling a custom function #
Executes a specific business function developed for your Kafinea instance. These functions allow you to automate complex processes that cannot be performed using standard actions.
Note: The custom functions available depend on your configuration. Contact your system integrator to find out which functions are available and to create new ones.
Webhook #
Sends an HTTP request to an external service when the workflow is triggered. This is the perfect tool for connecting Kafinea to other applications.
| Setting | Description |
|---|---|
| URL | The address of the field office to contact |
| HTTP Method | POST, GET, PUT, PATCH, or DELETE |
| Format | The format of the data sent (JSON) |
| Authentication | None, Basic Auth, Bearer Token, or custom header |
The record data is automatically included in the request in JSON format, along with the record type and all of its fields.
Example: When an invoice finalized, send a webhook to your accounting software to automatically sync the entries.
Tip: Webhooks let you integrate Kafinea with automation platforms like Zapier, Make (formerly Integromat), or n8n, opening up virtually unlimited integration possibilities.
AI Prompt #
Sends the recording data to an AI service with a custom prompt, then automatically updates fields with the generated response.
| Setting | Description |
|---|---|
| Prompt | The instructions sent to the AI (what you ask it to do) |
| Fields to update | The fields in the form that will receive the AI's response |
The AI automatically receives the full context of the record: its fields, related parent records, attached documents, images, product lines, and organizational information.
Example: When creating a support ticket, use AI to analyze the problem description and automatically fill in the "Category" and "Suggested Priority" fields.
Example: Upon receiving a scanned invoice , use AI to automatically extract the amount, date, and invoice number invoice the attached document.
Send a text message #
Send a text message to a phone number from the list.
Note: This action requires that an SMS provider be set up in advance in the Kafinea settings.
5. Common use cases #
Sales Automation #
- Reminders for unpaid invoices: a daily scheduled workflow that sends a reminder email for invoices past their due date
- New quote notification: When a quote is created, send an email to the sales manager
- Opportunity Tracking: Create a reminder task when an opportunity hasn't been updated in 7 days
Project Management #
- Assignment notification: Send an email to a person when they are assigned to a project task
- Status update: Automatically update a project's status when all its tasks are completed
Customer Support #
- Confirmation of receipt: Send a confirmation email to the customer when a ticket is created
- Automatic escalation: If a ticket is not resolved within 48 hours, send a notification to the team lead
- Resolution notification: Send an email to the customer when the ticket is marked as "Resolved"
Human Resources #
- Welcome email: Send a welcome email when a new record is created
- Contract expiration reminder: a scheduled workflow that notifies the HR department 30 days before the end of an employment contract
External integrations #
- Accounting synchronization: Send a webhook to the accounting software every time invoice
- Slack/Teams Notifications: Send a webhook to a chat channel when important events occur
- AI-powered data enrichment: automatically analyze incoming documents and populate relevant fields
6. Best Practices #
- One workflow = one responsibility: avoid overloading a workflow with too many actions. It’s better to have several simple workflows than one complex one
- Name it clearly: a good workflow name describes its trigger and its action (e.g., “Invoice — Reminder at 30 Days”)
- Test before activating: Create the workflow with an inactive status, verify the conditions on a few records, then activate it
- Use the "one-time" recurrence for one-time notifications (welcome, confirmation) to avoid sending multiple messages
- Document your workflows: use the description field to explain the business context and the rules applied
- Monitor scheduled workflows: Check the scheduler regularly to ensure that runs are proceeding correctly
7. Frequently Asked Questions #
Can I include multiple actions in a single workflow?
Yes, you can add as many actions as you need. They run in the order in which they appear.
My workflow email isn't sent right away. Is this normal?
Yes, emails are placed in a queue and sent by the scheduler. The delay depends on how often the scheduler runs (usually a few minutes).
How can I tell if a workflow has run successfully?
Check the event log to verify runs and identify any errors.
Can I use a workflow to modify a related record (parent or child)?
Yes, the "Update Fields" action allows you to directly modify the fields of a parent record linked via a reference field. In the configuration interface, fields from related modules appear in the format "(Reference Field: (Module) Target Field)". For example, you can update an account’s phone number from a workflow on contacts. However, to modify child records (which reference the current record), use the “Call a custom function” action or create a separate workflow on the child module.
What is the difference between a scheduled workflow and the scheduler?
The scheduler is the technical engine that runs tasks in the background (including scheduled workflows). A scheduled workflow is a business rule that you configure and that the scheduler will run at the specified frequency.
Can I duplicate an existing workflow?
There is no direct duplication feature. You must create a new workflow and reconfigure the settings manually.
Do workflows run during a CSV import?
No, workflows are not triggered during a CSV import. The import uses a performance-optimized batch process that does not go through the workflow trigger mechanism. If you need to apply automatic processing after an import, you can use a scheduled workflow that will periodically check for recently created or modified records.