# Settings



# 1. Settings: Overview

<article class="text-token-text-primary w-full" data-scroll-anchor="true" data-testid="conversation-turn-298" dir="auto" id="bkmrk-the-settings-module-">The **Settings** module is your CRM’s central control panel for defining how the system behaves, who can access it, and what your users see. It’s divided into three main areas—**Configurations**, **Translations**, and **Texts**—each of which governs a distinct layer of functionality or content. By adjusting these settings, you ensure your CRM adheres to your organization’s security policies, workflow rules, and brand voice.

Within **Configurations**, you’ll set the groundwork for system operations: lock down access with IP whitelists, define session timeouts and multi-factor login options, and model your business processes through custom statuses, client types, and multi-step verification levels. You also manage which languages are available to your users and how the CRM categorizes and verifies different classes of clients and requests, ensuring both compliance and tailored user experiences.

The **Translations** and **Texts** sections let you master your user-facing copy. **Translations** handles short UI elements—buttons, labels, and messages—while **Texts** covers longer notifications, legal disclaimers, and rich-text content. Together, they provide a complete workflow for adding, editing, searching, and locking multilingual content, so you can roll out a fully localized, on-brand interface across every module.

</article>It includes the following sections:

**Configurations**:

1. [Configuring security and authentication](https://wiki.wi.services/books/wifox-business-core-solution-wbcs/page/2-how-to-configure-security-and-authentication);
2. [Configuring the statuses](https://wiki.wi.services/books/wifox-business-core-solution-wbcs/page/3-how-to-configure-statuses) used in the [Clients](https://wiki.wi.services/books/wifox-business-core-solution-wbcs/chapter/slients) and [Requests](https://wiki.wi.services/books/wifox-business-core-solution-wbcs/chapter/requests) modules;
3. [Configuring the languages](https://wiki.wi.services/books/wifox-business-core-solution-wbcs/page/4-how-to-manage-languages-and-translate-crm) used in the system.

[Translations](https://wiki.wi.services/books/wifox-business-core-solution-wbcs/page/5-how-to-manage-translations): Translation of the elements used in the system.

[Texts](https://wiki.wi.services/books/wifox-business-core-solution-wbcs/page/6-how-to-manage-texts): Translation of texts used in the system.

# 2. How to Configure Security and Authentication

A robust security and authentication setup is fundamental to protecting sensitive customer data and ensuring that only authorized personnel can access your CRM. In the **Settings &gt; Configurations &gt; General** tab, you’ll define who can reach your system (via IP restrictions) and how users prove their identity (via session policies and multi-factor checks). Properly configuring these options helps you meet compliance requirements, reduce the risk of unauthorized access, and tailor the login experience to your organization’s security posture.

##### Use Cases

1. **Office-Only Access**  
    Limit CRM access to your corporate network by whitelisting office IP ranges, preventing external login attempts from unknown locations.
2. **High-Security Environments**  
    Require both password and biometric authentication (WebAuthn) for administrators or finance teams to meet stringent internal policies or regulatory frameworks.
3. **Adaptive Session Management**  
    Enforce shorter session timeouts for contractors or guest users, while allowing longer idle periods for full-time staff—striking a balance between security and productivity.
4. **Automated Bot Prevention**  
    Enable invisible reCAPTCHA on login screens to block scripted attacks without interrupting the legitimate user experience.

The **General** tab under **Settings &gt; Configurations** is where you define your system’s core access and login policies. Here you’ll find two sections:

1. **Security**: Restrict which IP addresses can access the CRM.
2. **Authentication**: Control session duration, password-attempt limits, and multi-factor requirements.

Below is a detailed, step-by-step guide—complete with screenshots—on how to locate and configure each option.

##### Navigating to the General Configuration

Click the **⚙️ Settings** icon in the sidebar.  
Select **Configurations**.  
Ensure the **General** tab (next to “Statuses” and “Languages”) is active.

##### Security: IP Whitelisting

**Click “+ New IP”. Enter a valid IP address** (IPv4 or IPv6). Invalid entries highlight in red.  
Press **Enter** to confirm the IP. Repeat steps to add more IPs.  
**Remove an IP** by hovering and clicking **×**.  
Click **Save** to save the list.

<p class="callout info">Note: IP addresses are usually expressed in dotted decimal notation as four numbers separated by dots, e.g., *172.16.255.2*, or as a set of 16-bit hexadecimals separated by colons, e.g., *2001:0000:130F:0000:0000:09C0:876A:130B* If the field turns red, you have entered an invalid IP address.</p>

##### Authentication: Session &amp; Login Policies

The **Authentication** section allows you to set logon and usage rules, including limited session times and additional logon checks.

**To configure authentication:**

1. Fill in the following fields:  
    **Session time minutes:** Enter how many minutes after login the user is automatically unlogged from the system when idle. If the field is left blank, the default value of 60 minutes will be applied.  
    **Login attempts:** Enter the number of times the user can enter an incorrect password before being temporarily locked out (for 2 minutes). The default is 3.
2. Check one of the options (or leave them all blank):  
    **Internal login or WebAuthn:** If you want the user to use a choice of password or WebAuthn (biometric data) to log in.  
    **Internal login and WebAuthn:** If you want the user to use both a password and biometrics for additional security to log in.  
    **Google TFA:** If you want the user to use two-factor authentication through Google for additional security.  
    **Phone TFA:** If you want the user to use two-factor authentication via phone number for additional security.   
    Get more information about authentication types in Wifox Business Core Solution [\[here\]](https://wiki.wi.services/books/wifox-business-core-solution-wbcs/chapter/authentication-types-in-wbcs).
3. Check the box next to **Recaptcha on login** to use reCAPTCHA. We use reCAPTCHA v3, which means users will not notice this additional check.
4. Click **Save** to save your settings.

<p class="callout info">**Note**: If you select one of the options, the others will be automatically disabled. Uncheck the selected box to enable other authentication options.</p>

<article class="text-token-text-primary w-full" data-scroll-anchor="true" data-testid="conversation-turn-304" dir="auto" id="bkmrk-by-leveraging-ip-whi">By leveraging IP whitelisting and advanced authentication controls, you can significantly bolster your CRM’s defenses against unauthorized access and automated attacks. Regularly revisit these settings—especially after network changes or user-role updates—to maintain an optimal balance between security and usability.

</article>

# 3. How to Configure Statuses

Effective status management lets you tailor client and request lifecycles to your business processes, ensuring clear visibility of progress and automating downstream actions. In **Settings &gt; Configurations &gt; Statuses**, you’ll find two panels—**Client status** and **Request status**—that govern how records appear and transition within the **Clients** and **Requests** modules, respectively.

##### Use Cases

1. **Customized Pipelines:** Define stages like “Lead,” “Prospect,” and “Customer” for clients, or “New,” “In Review,” and “Completed” for requests, matching your organization’s terminology.
2. **Default Routing:** Set a default status (e.g., “Active” for clients) so that all new records start in a predictable state, reducing manual setup.
3. **Visual Prioritization:** Assign distinct colors to statuses (red for high-priority, gray for archived) to surface critical items at a glance.

##### Accessing the Statuses Configuration

To configure statuses, go to **Configurations &gt; Statuses** tab at the top. A tab with two sections will open:

1. **Client status (left):** In this section, you can manage the statuses you select for clients in the [Clients](https://wiki.wi.services/books/wifox-business-core-solution-wbcs/chapter/slients) module.
2. **Request status (right):** In this section, you can manage the statuses that you select for clients in the [Requests](https://wiki.wi.services/books/wifox-business-core-solution-wbcs/chapter/requests) module.

##### Adding a New Status

1. Click the **Add** button in the upper right corner of the corresponding section.
2. In the **Add status** form, enter:  
    **Name:** The display text (e.g., “Pending Approval”).  
    **Label:** A unique identifier used internally (e.g., `pending_approval`).
3. (Optional) Choose a **Color** by clicking one of the swatches—this color will appear as the status badge.
4. To make this your system-wide default, check **Make as default**.
5. Click **Save** to add the status.

##### Editing an Existing Status

1. Click the ✏️**Edit** icon next to the appropriate status.
2. In the **Edit status** sidebar, you can update:  
    **Name** (label remains read-only)  
    **Color**
3. Click **Save** to apply the changes.

##### Setting a Default Status

Only one status per panel can be default. New records automatically receive this status.

1. Hover over the status you want as default.
2. Click **Make as default**.
3. The “Default” badge will move to this status.

##### Deleting a Status

<p class="callout info">**Important:** You cannot delete a status marked as default or one currently in use by existing records.</p>

1. Ensure the status is **not** the default (see “Make as default” above to change defaults).
2. Click the **🗑️ Delete** icon next to the status.
3. Confirm the deletion when prompted.

<article class="text-token-text-primary w-full" data-scroll-anchor="true" data-testid="conversation-turn-306" dir="auto" id="bkmrk-by-thoughtfully-defi">By thoughtfully defining client and request statuses—complete with unique labels, colors, and defaults—you create a transparent, enforceable workflow that scales with your business. Regularly review and prune unused statuses to keep your system lean, and leverage status-driven automation (notifications, reports, transition rules) to streamline daily operations.

<div bis_size="{"x":143,"y":1470,"w":840,"h":89,"abs_x":729,"abs_y":1688}" class="text-base my-auto mx-auto py-5 [--thread-content-margin:--spacing(4)] @[37rem]:[--thread-content-margin:--spacing(6)] @[72rem]:[--thread-content-margin:--spacing(16)] px-(--thread-content-margin)"><div bis_size="{"x":143,"y":1470,"w":840,"h":89,"abs_x":729,"abs_y":1688}" class="[--thread-content-max-width:32rem] @[34rem]:[--thread-content-max-width:40rem] @[64rem]:[--thread-content-max-width:48rem] mx-auto flex max-w-(--thread-content-max-width) flex-1 text-base gap-4 md:gap-5 lg:gap-6 group/turn-messages focus-visible:outline-hidden" tabindex="-1"><div bis_size="{"x":143,"y":1470,"w":840,"h":89,"abs_x":729,"abs_y":1688}" class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"><div bis_size="{"x":143,"y":1470,"w":840,"h":67,"abs_x":729,"abs_y":1688}" class="relative flex-col gap-1 md:gap-3"><div bis_size="{"x":143,"y":1470,"w":840,"h":22,"abs_x":729,"abs_y":1688}" class="flex max-w-full flex-col grow"><div bis_size="{"x":143,"y":1470,"w":840,"h":22,"abs_x":729,"abs_y":1688}" class="min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal [.text-message+&]:mt-5" data-message-author-role="assistant" data-message-id="fef3eac9-ed5d-4936-b7c1-a9fc84e578e9" data-message-model-slug="o4-mini-high" dir="auto"><div bis_size="{"x":143,"y":1470,"w":840,"h":22,"abs_x":729,"abs_y":1688}" class="flex w-full flex-col gap-1 empty:hidden first:pt-[3px]">  
</div></div></div><div bis_size="{"x":143,"y":1492,"w":840,"h":22,"abs_x":729,"abs_y":1710}" class="flex justify-start">  
</div><div bis_size="{"x":143,"y":1515,"w":840,"h":22,"abs_x":729,"abs_y":1733}" class="mt-3 w-full empty:hidden">  
</div></div><div bis_size="{"x":143,"y":1537,"w":840,"h":22,"abs_x":729,"abs_y":1755}" class="absolute"><div bis_size="{"x":143,"y":1537,"w":840,"h":22,"abs_x":729,"abs_y":1755}" class="flex items-center justify-center">  
</div></div></div></div></div></article>

# 4. How to Manage Languages and Translate CRM

Supporting multiple languages in your CRM ensures that users across regions can work in their preferred tongue and that customer‐facing elements display correctly. In **Settings &gt; Configurations &gt; Languages**, you control which languages are available for translation and which appear in the top‐level language selector. These settings work in concert with the **Translations** and **Texts** modules to provide a fully localized experience.

##### Use Cases

1. **Multi-Regional Teams:** Let support agents in Germany, Argentina, and Japan use the CRM in their local language.
2. **Global Customer Portals:** Ensure customer-facing emails, buttons, and notifications render in the end user’s language.
3. **Phased Roll-Outs:** Activate a new language only once all required labels, UI elements, and text blocks have been translated.

Languages and translations are managed in CRM through three sections:

1. Languages
2. Translations
3. Texts

##### Accessing the Languages Configuration

To translate CRM into another language:  
Navigate to **⚙️ Settings** in the sidebar, then select **Configurations**.  
Click the **Languages** tab at the top.

You will see two blocks:

1. **Available Languages** (to the left)**:** All languages available in our system.
2. **Active Languages** (to the right)**:** Languages that are used in your CRM.

##### Adding a Language to Active List

To add a language from the list of available languages to the list of active languages:  
In the **Available languages** panel, scroll or use the **Search** field to find your target language (e.g., “German,” “Japanese”).  
Check the box next to the language you wish to add. A flag or code (e.g., “Ar” for Argentine Spanish) appears to the right.  
Click **Save** at the bottom to apply the changes.

<p class="callout info">Note: The language will appear in the list of active languages, but will not yet be available for selection in the new menu. Before adding, it is recommended to translate CRM items into that language. Refer to the [\[How to Manage Translations\]](https://wiki.wi.services/books/wifox-business-core-solution-wbcs/page/5-how-to-manage-translations) and [\[How to Manage Texts\]](https://wiki.wi.services/books/wifox-business-core-solution-wbcs/page/6-how-to-manage-texts) for more information.</p>

##### Enabling a Language for Users

When you have all the necessary texts and CRM elements translated:

1. Go back to **Languages**.
2. In the **Active languages** panel, check the box next to the language you’ve translated content for.
3. (Optional) If you’d like this language to be the default for new users, click **Make as default** next to it.
4. Click **Save** again.

<p class="callout info">It will now appear in the top menu and be available for selection by all users.</p>

<article class="text-token-text-primary w-full" data-scroll-anchor="true" data-testid="conversation-turn-310" dir="auto" id="bkmrk-by-managing-availabl">By managing **Available** vs. **Active** languages, you control the rollout of new translations and prevent incomplete or partially-translated elements from going live. Always activate a language only after verifying that all UI labels (**Translations** module) and longer texts (**Texts** module) have been properly localized. This phased approach ensures a seamless, professional multilingual experience for both your team and your customers.

<div bis_size="{"x":143,"y":1341,"w":840,"h":89,"abs_x":729,"abs_y":1559}" class="text-base my-auto mx-auto py-5 [--thread-content-margin:--spacing(4)] @[37rem]:[--thread-content-margin:--spacing(6)] @[72rem]:[--thread-content-margin:--spacing(16)] px-(--thread-content-margin)"><div bis_size="{"x":143,"y":1341,"w":840,"h":89,"abs_x":729,"abs_y":1559}" class="[--thread-content-max-width:32rem] @[34rem]:[--thread-content-max-width:40rem] @[64rem]:[--thread-content-max-width:48rem] mx-auto flex max-w-(--thread-content-max-width) flex-1 text-base gap-4 md:gap-5 lg:gap-6 group/turn-messages focus-visible:outline-hidden" tabindex="-1"><div bis_size="{"x":143,"y":1341,"w":840,"h":89,"abs_x":729,"abs_y":1559}" class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"><div bis_size="{"x":143,"y":1341,"w":840,"h":67,"abs_x":729,"abs_y":1559}" class="relative flex-col gap-1 md:gap-3"><div bis_size="{"x":143,"y":1341,"w":840,"h":22,"abs_x":729,"abs_y":1559}" class="flex max-w-full flex-col grow"><div bis_size="{"x":143,"y":1341,"w":840,"h":22,"abs_x":729,"abs_y":1559}" class="min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal [.text-message+&]:mt-5" data-message-author-role="assistant" data-message-id="dfa2c8fa-b512-47d7-936f-b793bae8836c" data-message-model-slug="o4-mini-high" dir="auto"><div bis_size="{"x":143,"y":1341,"w":840,"h":22,"abs_x":729,"abs_y":1559}" class="flex w-full flex-col gap-1 empty:hidden first:pt-[3px]">  
</div></div></div><div bis_size="{"x":143,"y":1363,"w":840,"h":22,"abs_x":729,"abs_y":1581}" class="flex justify-start">  
</div><div bis_size="{"x":143,"y":1386,"w":840,"h":22,"abs_x":729,"abs_y":1604}" class="mt-3 w-full empty:hidden">  
</div></div><div bis_size="{"x":143,"y":1408,"w":840,"h":22,"abs_x":729,"abs_y":1626}" class="absolute"><div bis_size="{"x":143,"y":1408,"w":840,"h":22,"abs_x":729,"abs_y":1626}" class="flex items-center justify-center">  
</div></div></div></div></div></article>

# 5. How to Manage Translations

Short UI elements—like button labels, menu items, and field names—are handled in **Settings &gt; Translations**. This section lets you review, edit, and add translations for all “labels” (internal identifiers) used throughout the CRM. Keeping these up to date ensures that every small piece of text in the interface is fully localized.

**Why Use Translations?**

1. **Consistent UI**: Make sure every button or menu item appears correctly in each active language.
2. **Rapid Updates**: Quickly fix typos or change wording without redeploying code.
3. **Custom Elements**: Add new labels (for custom development) and translate them for your users.

##### Viewing &amp; Searching Existing Translations

Go to ****⚙️ Settings** → **Translations**.** You’ll see a table with two main columns:  
**Label**: the internal key (e.g., `totalLeads`).  
**Text**: the currently translated string, along with language badges (`En`, `Bg`, etc.).

##### Editing a Translation

Click the **Edit** icon on the right of the row you want to update.

In the panel that appears:  
**Label** (read-only) shows which key you’re editing.  
**Languages** badges indicate which target languages have entries.  
**Text** field: enter or update the translated string for the selected language.

**Clone translations from** To copy all existing text from another language into your current locale (without translating), open the “Select” dropdown, pick the source language (e.g. English), and click **Clone**. This instantly duplicates those fields as-is.

**Translating flow** To programmatically generate translations, click **Translate** in the drawer header, then choose your provider (OpenAI, etc.) from the **Integration** dropdown. The system will pull translated strings and populate every field.

> **Tip:** Cloning and translating are independent—feel free to clone first and then auto-translate, or translate first and use cloning to reset individual entries.

<article class="text-token-text-primary w-full" data-scroll-anchor="true" data-testid="conversation-turn-594" dir="auto" id="bkmrk-you-aren%E2%80%99t-limited-t"></article>Click **Save** to apply the changes.  
**To easily search for elements**, use the **Search** field at the top to find a specific item. Typing part of a label filters the list in real time.

<p class="callout info">**Note**: Adding custom elements is intended for development purposes only. The translation object label should be added to the code by developers. Otherwise, if you add a label just with this functionality, it will not be displayed anywhere on the page.</p>

##### Cloning &amp; Translating with the Widget

To speed up localization, you can bulk-copy all strings from an existing language and even drive translations for specific integrations right from a single button:

**Open the translation drawer:** Go to **Settings → Translations**, click the ✏️ **Edit** icon on any row.  
The side-panel shows the **Label**, language badges, and a **Text** field.

**Clone translations from another language:** Click **Clone translation from** beneath the language badges.  
In the **Clone from** modal, select the source language (e.g. English → Spanish).  
Click **Clone** to populate the panel with every string from that language.  
Tweak any entries as needed, then hit **Save** to commit all at once.

**Use the unified “Translate” button: Translate** opens the modal with a top-level dropdown labeled **Integration**—but this actually lists your configured translation engines (e.g. OpenAI, Google Translate, DeepL).  
Select the engine you want (e.g. “OpenAI”).  
Click **Translate** to pull in its suggested strings for your current locale.  
As before, adjust any text in the drawer and press **Save** to store them.

##### Adding a New Translation

**To add a custom element:**

1. Click the +**Add Translation** button in the upper right corner.
2. In the **Add translation** panel:  
    **Label**: enter a unique key (e.g., `newButtonLabel`).  
    **Languages**: check each language you want to provide.  
    **Text**: fill in the translation for each selected language.
3. **Clone translations from** To copy all existing text from another language into your current locale (without translating), open the “Select” dropdown, pick the source language (e.g. English), and click **Clone**. This instantly duplicates those fields as-is.
4. **Translating flow** To programmatically generate translations, click **Translate** in the drawer header, then choose your provider (OpenAI, etc.) from the **Integration** dropdown. The system will pull translated strings and populate every field.
5. Click **Save**. The new label now appears in the table, ready to be referenced in code.

##### Deleting a Translation

Click the **Delete** (trash) icon on the row you wish to remove.  
Confirm the deletion in the prompt.

<p class="callout warning">You can also delete current items using the **Delete** icon. It is not recommended to delete items already defined in the system.</p>

##### Best Practices &amp; Conclusion

1. **Batch your changes:** When rolling out a new feature or language, edit multiple translations at once to maintain consistency.
2. **Coordinate with developers:** Ensure that any custom labels added here are actually referenced in the codebase.
3. **Review periodically:** As UI evolves, legacy labels may become obsolete—clean them up to keep the table manageable.

By centrally managing your short-text translations, you guarantee that every button, tooltip, and menu option in your CRM remains clear, accurate, and localized for all users.

# 6. How to Manage Texts

Long, structured content—such as notifications, email bodies, tooltips, and rich messages—is managed under **Settings &gt; Texts**. This module lets you centrally edit, clone, and auto-translate entire text objects (often JSON trees) across any active language. By using it you ensure that every notification, onboarding message, or rich UI copy is consistent and localized without touching code.

**Why Manage Texts Here?**

1. **Complex Structures**: Handle nested content (titles, subtitles, descriptions) in one place.
2. **Rich Formatting**: Preserve HTML or Markdown within descriptions.
3. **AI-Powered Translation**: Leverage built-in “Translate” for bulk localization.
4. **Version Control**: Lock critical texts to prevent accidental deletion.

##### Viewing &amp; Searching Texts

Navigate to **⚙️ Settings** → **Texts**.  
You’ll see a “card” layout of each text’s **label** and a snippet of its default language.  
To find a specific item, use the **Search** bar at the top: typing part of a label filters cards instantly.

##### Editing &amp; Translating an Existing Text

**To add a translation to any of these texts:**

1. Click the **Edit** (pencil) icon on the text card you want to update.
2. In the right-hand panel:  
    **Unique label** (read-only) identifies the object.  
    **Locked** checkbox prevents deletion; leave checked for core messages.  
    **Properties** view shows the JSON structure (nodes you can select to edit).  
    **Language** tabs let you switch between existing translations.
3. **Clone translations from** To copy all existing text from another language into your current locale (without translating), open the “Select” dropdown, pick the source language (e.g. English), and click **Clone**. This instantly duplicates those fields as-is.
4. **Translating flow** To programmatically generate translations, click **Translate** in the drawer header, then choose your provider (OpenAI, etc.) from the **Integration** dropdown. The system will pull translated strings and populate every field.
5. Manually tweak any node in the JSON tree as needed.
6. Click **Save** to apply changes.

**To search for a text:** Start typing its label in the **Search** field.

<p class="callout info">**Tip:** Cloning and translating are independent—feel free to clone first and then auto-translate, or translate first and use cloning to reset individual entries.</p>

##### Adding a New Text

**To add a new text and its translations:**

1. Click on the +**Add Text** button in the upper right corner.
2. Fill out the **Unique label** and check or uncheck **Locked**.
3. Populate the **Properties** JSON structure by selecting nodes and entering content for each (e.g., title, description).
4. Switch to your target language tab, then either **Clone** or **Translate** into it.
5. Add a plain-text **Title** and **Description** at the bottom for summary display.
6. Click **Save**—your new text appears as a card.

##### Unlocking &amp; Deleting Texts

By default, new texts are created as **Locked**—they cannot be deleted. **To unlock a text**:

1. Go to the text editing tab.
2. Uncheck the **Locked** checkbox.
3. Click **Save**.

**To delete text:**

1. Make sure it is not locked. Back on the main **Texts** page, click the **Delete** (trash) icon on the unlocked card.
2. Click the **Delete** icon next to the corresponding text.
3. Confirm deletion.

<p class="callout warning">**Warning**: Locked texts cannot be removed. Only unlock when you’re certain the text is obsolete.</p>

##### Best Practices &amp; Conclusion

1. **Lock** critical system messages to avoid accidental removal.
2. **Review** auto-translations for tone and accuracy.
3. **Audit** periodically to prune unused texts and trim JSON nodes.
4. **Coordinate** with your dev team: ensure labels here map to code references.

By centralizing rich-text management, your CRM stays cohesive, fully localized, and easy to update—without code deployments or scattered copy files.

# 7. Clients Types in Configurations

Clients Types define different types of clients within the system. By default, there are two standard client types: Personal and Business. However, the system allows creating custom client types to suit specific needs.

When adding or editing a client, the Type field determines which category they belong to. Once a client type is assigned, it cannot be changed later.

This is defined by your business requirements, not by the system itself. For example, if in your process a client is verified at Level X with Status Y, you configure it here. Once set, the entire system uses these properties to automate verification workflows, control access, and ensure compliance based on your specific criteria.

##### Use Cases

1. **Flexibility** Organizations can define custom client categories (e.g., “Investor,” “VIP,” “Test”) to align with their specific business needs.
2. **Enhanced Onboarding** Different client types may require varying verification thresholds—for example, Business accounts might need stricter verification than Personal accounts.
3. **Compliance &amp; Security** By defining Verification Level and Status, organizations ensure clients meet KYC and other regulatory requirements.
4. **Automation** The system automatically marks clients as “Verified” or “Not verified”, streamlining processes and reducing manual verification tasks.

##### Where to Find Clients Types

Navigation: In the top menu within Configurations, click Client Types.  
On the left, you’ll see a list of existing client types (e.g., Business, Personal, Test).

##### Adding or Deleting a Client Type

1. **Add a New Client Type** Click **+ Add** in the Clients types panel.  
    Provide a **Name** (e.g., “Test,” etc.) and an internal Label if prompted.  
    After saving, the new type appears in the list.
2. **Delete an Existing Client Type** Click the **trash bin icon** next to the client type you want to remove.  
    Confirm the deletion in the pop‐up (“Are you sure?”).

<p class="callout warning">**Important**: A client type can only be deleted if no clients exist with that type and verification level.</p>

##### Selecting a Client Type When Creating or Editing a Client

1. **Create or Edit a Client** Go to **Clients** and click **Add** (or **Edit** on an existing client).
2. **Choose the Type** In the **General tab** (Personal details section), find the Type dropdown.  
    You’ll see your available client types (e.g., “Business,” “Personal,” “Test”).
3. **Save** The chosen type is now assigned to that client.

##### Clients Configurations: Verification Rules

To the right of the **Clients Types** list you’ll find the **Clients configurations** panel, where you control exactly **when** a given client type is considered “Verified.” It exposes two dropdowns:

1. **Consider client is verified level**
2. **Consider client is verified status**

##### Consider client is verified level

**What it is:**  
A dropdown that lets you choose **which** verification flow to monitor. Typical options include:

1. `email`
2. `phone`
3. `identity`

> **Pick the verification “type”** your business cares about for this client category—e.g. if you select **email**, the system will watch the client’s email-verification record.

##### Consider client is verified status

**What it is:**  
Once you’ve chosen a level, this second dropdown appears, listing **only** the statuses defined for that level. Common statuses:

1. `init`
2. `pending`
3. `completed`
4. `rejected`

> **Pick the “threshold” status** at which the client should flip to Verified. For instance, choosing **pending** means:  
> *“As soon as the client’s email verification moves into **pending**, mark them Verified.”*

##### Defining Levels &amp; Statuses (Configuration → Verification Levels)

These dropdown options aren’t hard-coded—they come from your **Configurations → Verification Levels** setup. There you:

1. **Add/Edit** a level (e.g. “Verify Email Address,” “Verify Phone Number,” etc.).
2. Define the **Statuses** each level can assume (`init`, `pending`, `completed`, `rejected`, …).

Once a level exists there, it shows up here for selection.

<p class="callout info">If you set “Consider client is verified status = pending,” then once the client’s status is pending (at the specified level), the system marks them as Verified.</p>

##### How It Works in Practice

A Verification Level might have multiple statuses (e.g., init, pending, rejected).

Imagine you’ve set, for **Personal** customers:  
**Verified level** = `email`**Verified status** = `pending`

Then:  
A new client signs up → their **Email verification** starts at `init` → the header reads **Not verified**.  
They click the link in the welcome email → their email status flips to `pending` → the header immediately updates to **Verified**.

<p class="callout info">If you configure “Consider client is verified level = email” and “Consider client is verified status = pending,” any client with Verification Level = email and Verification Status = pending will show up as Verified in the interface.</p>

##### Real‐Time Verification Indicators in the Client Profile

**Not Verified / Verified Labels:**

In the Edit client screen (see screenshots), you’ll notice a red **“Not verified”** or green **“Verified”** label at the top.  
These labels change dynamically based on the verification rules you set in Clients configurations.  
If the client’s Verification Level is “email” and Verification Status is “init,” they might appear Not verified (red label).  
Changing the status to “pending” (assuming your rules say “pending” = verified) makes the label turn Verified (green).

<p class="callout info">“Consider client is verified level” and “Consider client is verified status” define the threshold at which a client is deemed Verified.</p>

These rules tie into the Verification Levels (e.g., email, phone) and Statuses (e.g., init, pending, approved).

**Real‐Time Indicators:** Clients meeting the configured criteria display a green “Verified” badge; otherwise, they remain “Not verified.”

By combining custom client types with verification configurations, you can tailor the onboarding and validation process to match your organization’s unique requirements, ensuring a streamlined and compliant client management workflow.

# 8. Configurations: Verification levels

In Configurations, **Verification Levels** play a key role in managing the client verification process. Each client type (e.g., Personal or Business) can have its own set of verification levels, which are linked to different verification statuses. These levels determine how a client progresses through authentication, ensuring compliance with KYC (Know Your Customer) requirements.

##### Use Cases

1. **Multi-Step KYC**
    
    Financial institutions can define verification levels such as **“Email,” “Phone,” “Identity”**, with statuses progressing from **init** to **approved** for enhanced security.
2. **Business vs. Personal Clients**
    
    Verification processes can be tailored—**business accounts** may require additional documents and higher verification levels than **personal accounts**.
3. **Automation &amp; Compliance**
    
    The system can **automatically update** a client’s **“verified”** status when they reach a specific level/status threshold (e.g., **“email/pending”** or **“identity/approved”**), ensuring compliance without manual intervention.

##### Accessing Verification Levels

To manage your verification flows, first switch to the **Verification Levels** tab in **Configurations**:

1. In the top navigation of the Configurations page, click **Verification Levels**.
2. The screen splits into three panels. On the **left**, you’ll see every **Verification Level** defined in your system (e.g., **Test**, **Email**, **Phone**, **Identity**), each tagged with its associated client type (for example, **Personal**).

##### Creating or Editing a Verification Level

**1. Add a New Level** Click the **+ Add** button above the left panel.

In the **Add verification level** modal that appears:  
**Type**: Choose the client type this level applies to (Business, Personal, Test, etc.).

**Name:** Enter the human-readable name displayed in the UI (e.g., Email, Phone, Identity).

**Properties**: (Optional) Map any custom JSON nodes or metadata for this flow.  
**Language &amp; Translations**: Use the language buttons, **Clone**, or **Translate** to localize.

Click **Save**. Your new level immediately shows up in the list on the left.

**2. Edit an Existing Level** Hover over any level in the list and click its pencil icon.  
Modify its Name, Properties, or Translations as needed.  
Click **Save**.

<p class="callout warning">**Warning**: If a verification level is already in use by some clients, you cannot delete it—only edit.</p>

##### Defining Statuses for Each Verification Level

Every verification level drives one or more **Statuses** (e.g., Init → Pending → Completed/Rejected). You configure these in the right-hand panel:

**1. Statuses Panel (Right Side)** With a level selected on the left, the **Statuses** panel on the right shows all statuses defined for that flow.  
Typical statuses include:  
**Init**: No verification started.  
**Pending**: Verification in progress.  
**Completed**: Verification passed.  
**Rejected**: Verification failed.

Each verification level can have its own set of statuses.

**2. Add or Edit Status** Click **+ Add** in the top-right of the Statuses panel.  
In the **Add status** modal:

**Name (User-facing name):** e.g., Pending.

**Properties**: (Optional) Attach any JSON metadata nodes.

Click **Save**. The new status appears in the list.

**3. Edit or Delete a Status Edit**: Hover over a status and click its pencil icon to rename or remap properties.  
**Delete**: Click the trash bin—only enabled if no clients are currently in that status.

##### How Verification Levels and Statuses Appear in Clients

**1. Client Type Dependency** If you create a verification level for “Personal,” only Personal clients will see that level.  
Similarly, levels for “Business” apply only to Business clients.

**2. Edit a Client a. Navigate to the Clients List** In the main sidebar, click **Clients** to open the clients table.  
**b. Open the Edit Form** Find the client you want to change, then click the **pencil (Edit)** icon at the end of its row.  
**c. Locate Verification Fields** In the **General** section of the edit drawer you’ll see two new dropdowns under **Affiliation** (or wherever your form layout places them):  
**Verification level Verification status**   
**Dropdown options** are exactly the levels and statuses you configured in **Configurations → Verification Levels**.  
Only the levels matching this client’s **Type** appear.  
Once a level is chosen, its associated statuses populate the **Verification status** dropdown.

<article class="text-token-text-primary w-full" data-scroll-anchor="true" data-testid="conversation-turn-330" dir="auto" id="bkmrk-3.-cannot-delete-in-">**3. Cannot Delete In-Use Items** If any client is currently assigned a given level or status, the trash-bin icon for that item in **Configurations → Verification Levels** will be disabled.  
You may **rename** or **reconfigure** it, but **full deletion** is blocked to avoid orphaning existing client records.

</article>##### Key Points to Remember

1. **Client Type Binding**: Each verification level is tied to a specific client type (Personal or Business, etc.).
2. **Multiple Statuses per Level**: You can define as many statuses as needed to reflect each step (e.g., init, pending, completed).
3. **No Deletion If In Use**: Levels or statuses assigned to real clients can’t be removed.
4. **Properties &amp; Language Fields**: Allows storing custom data or translations for each level/status, enabling localized or extended flows.

Verification Levels in Configurations enable you to create structured, multi-step KYC (Know Your Customer) processes for each client type. By pairing these levels with custom statuses, you can tailor how a client progresses from “Init” to “Pending” to “Completed,” ensuring each user meets the compliance and verification standards required for their account.

<span style="font-weight: normal; color: rgb(161, 163, 165);">  
</span>

# 9. Configurations: Verification Documents

In Configurations, the Verification Documents section allows administrators to define the required documents for client verification. These documents serve as proof of identity, financial information, or residency, ensuring compliance with KYC (Know Your Customer) policies.

**With this function, businesses can:**

1. Set mandatory and optional verification documents for different client types.
2. Modify document requirements dynamically as business policies evolve.
3. Ensure compliance by enforcing document submission before account activation.

##### Use Cases

1. **Enforcing KYC Compliance** Clients must submit documents (e.g., Passport, Utility Bill) before account activation by selecting required documents in Configurations → Documents, ensuring compliance with regulatory policies.
2. **Updating Requirements by Client Type** Enable Source of Funds for business clients in Configurations → Documents, applying the new requirement to future verifications while existing clients remain unaffected unless manually updated.
3. **Reviewing &amp; Approving Client Documents** Admins verify pending client documents by navigating to Clients → Profile → Documents, reviewing submissions, and approving or rejecting them, ensuring clients meet verification requirements before proceeding.

##### Accessing Verification Documents

To manage which documents clients must upload during verification, open the **Documents** tab in the Configurations area:

1. Click **Configurations** in the sidebar (⚙️ icon).
2. Along the top, select **Documents**.

##### Selecting Required Verification Documents

Inside the **Documents** panel you’ll see a checklist of all available verification document types:

1. Typical options include:  
    **Passport or ID Bank card (front) Bank card (back) Source of funds Utility bill Driver license**
2. Click **Save**<span data-end="1174" data-start="1166">.</span>

<p class="callout info"><span data-end="1174" data-start="1166">**Tip:** To require a document, check its box. A blue checkmark means clients must upload that document. Unchecked items become optional (or hidden).</span></p>

##### Editing a Client’s Verification Documents

Once you’ve defined which documents are required, they automatically surface in every matching client’s profile.

1. **Navigate to Clients:** In the sidebar, click **Clients**.
2. **Open the Edit Drawer:** In the clients table, click the **pencil (Edit)** icon for the client you want.
3. **Switch to the Documents Tab:** In the client-edit modal, select **Documents**.

There you’ll see one upload area for each required document. Clients or admins can drag-and-drop or browse to attach files. Uploaded items remain linked to the client record for audit or review.

##### Adding or Removing Required Documents

**Adding a New Required Document:**

1. Go to **Configurations → Documents**.
2. Check the box next to the new document type (e.g., **Bank card**).
3. Click **Save** and watch for the “Successfully Updated” message.
4. New verifications now require that document.

<p class="callout info">Once added, the new document will be required for all future client verifications. Clients who have already completed verification will not be affected unless an administrator updates their profile manually.</p>

**Removing a Required Document**

1. Go to **Configurations → Documents**.
2. Uncheck the box next to the document you no longer need (e.g., **Bank card (back)**).
3. Click **Save**.
4. Future verifications will not prompt for that document—though existing uploads stay accessible.

<p class="callout info">Once removed, that document will no longer be required for new verifications. However, previously uploaded documents will still be available for reference in client profiles.</p>

##### Key Points to Remember

1. **Flexibility in Requirements** – Administrators can adjust document requirements at any time.
2. **Client-Specific Settings** – Different client types may have different document verification requirements.
3. **Real-Time Updates** – Any modification in document settings is applied instantly to new and existing clients.
4. **API Integration** – Documents can also be managed and uploaded via API for automated verification workflows.

By properly managing Verification Documents, businesses can ensure a secure, compliant, and efficient verification process tailored to their needs.

<span id="bkmrk--10" style="font-weight: normal; color: rgb(161, 163, 165);">  
</span>

# 10. Clients Custom Fields

<article class="text-token-text-primary w-full" data-scroll-anchor="true" data-testid="conversation-turn-446" dir="auto" id="bkmrk-in-wifox-business-co"> The **Clients custom fields** section allows administrators to define additional, customizable data fields that appear on client profiles across the system. These fields let you extend the standard client model with business-specific attributes without changing core logic.

Custom fields are useful for capturing extra information such as internal classifications, preferences, tags, or any domain-specific data required by your workflows.

This section is located under **Settings → Configurations → Clients custom fields**.

##### What You Can Do

<div class="text-base my-auto mx-auto py-5 [--thread-content-margin:--spacing(4)] @[37rem]:[--thread-content-margin:--spacing(6)] @[72rem]:[--thread-content-margin:--spacing(16)] px-(--thread-content-margin)"><div class="[--thread-content-max-width:32rem] @[34rem]:[--thread-content-max-width:40rem] @[64rem]:[--thread-content-max-width:48rem] mx-auto flex max-w-(--thread-content-max-width) flex-1 text-base gap-4 md:gap-5 lg:gap-6 group/turn-messages focus-visible:outline-hidden" tabindex="-1"><div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"><div class="relative flex-col gap-1 md:gap-3"><div class="flex max-w-full flex-col grow"><div class="min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal [.text-message+&]:mt-5" data-message-author-role="assistant" data-message-id="6184e9c7-5f95-4ab0-b470-1dea14ffcfa5" data-message-model-slug="o4-mini-high" dir="auto"><div class="flex w-full flex-col gap-1 empty:hidden first:pt-[3px]"><div class="markdown prose dark:prose-invert w-full break-words light">1. Create new custom fields for client profiles
2. Define how each field is filled in (free text, single choice, or multiple choice)
3. Edit or remove existing custom fields
4. Control which custom attributes are available consistently across all clients
5. Reorder custom fields using drag &amp; drop
6. Control the display order of custom fields on client profiles

</div></div></div></div></div></div></div></div>Once created, custom fields appear:  
on the **Client profile** view  
in **client edit forms** consistently across all modules that display client details

##### Custom Fields List

The main table displays all configured client custom fields with the following information:

1. **Field name** – The label shown to users on client profiles
2. **Type** – The input type used to capture data:  
    **Input** – Free-text field  
    **Select** – Single-choice dropdown  
    **Multi-select** – Multiple-choice selector
3. **Options** – For Select and Multi-select fields, the list of available values
4. **Actions** ✏️ Edit – Modify the field configuration  
    🗑️ Delete – Remove the custom field

</article>> <article class="text-token-text-primary w-full" data-scroll-anchor="true" data-testid="conversation-turn-446" dir="auto">**Display behavior**  
> Field Label is shown exactly as entered (including capitalization).  
> Field Name does not affect how values are displayed to users.  
> Field order in the list defines the order shown on client profiles.  
> </article>

<article class="text-token-text-primary w-full" data-scroll-anchor="true" data-testid="conversation-turn-446" dir="auto" id="bkmrk-adding-a-client-cust">##### Adding a Client Custom Field

To create a new custom field:

<div class="text-base my-auto mx-auto py-5 [--thread-content-margin:--spacing(4)] @[37rem]:[--thread-content-margin:--spacing(6)] @[72rem]:[--thread-content-margin:--spacing(16)] px-(--thread-content-margin)"><div class="[--thread-content-max-width:32rem] @[34rem]:[--thread-content-max-width:40rem] @[64rem]:[--thread-content-max-width:48rem] mx-auto flex max-w-(--thread-content-max-width) flex-1 text-base gap-4 md:gap-5 lg:gap-6 group/turn-messages focus-visible:outline-hidden" tabindex="-1"><div class="group/conversation-turn relative flex w-full min-w-0 flex-col agent-turn"><div class="relative flex-col gap-1 md:gap-3"><div class="flex max-w-full flex-col grow"><div class="min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal [.text-message+&]:mt-5" data-message-author-role="assistant" data-message-id="6184e9c7-5f95-4ab0-b470-1dea14ffcfa5" data-message-model-slug="o4-mini-high" dir="auto"><div class="flex w-full flex-col gap-1 empty:hidden first:pt-[3px]"><div class="markdown prose dark:prose-invert w-full break-words light">1. Click **+ Add** in the top-right corner.
2. In the **Add client custom field** panel:  
    **Name** – Internal field name.  
    Used as the base identifier and for auto-generating the Label.  
    **Type** – Choose one of:  
    Input  
    Select  
    Multi-select
3. If **Select** or **Multi-select** is chosen, define the allowed options.  
    Label – User-facing label shown on client profiles.  
    Auto-filled from Name but can be edited manually.
4. Click **Save** to apply the changes.

</div></div></div></div></div></div></div></div>> **Validation rules**  
> Name is mandatory.  
> Label is mandatory (auto-filled if not edited).  
> Type is mandatory.  
> Select and Multi-select fields require at least one option.  
> Fields cannot be saved if required values are missing.

The new field becomes immediately available on client profiles.

#####   
Editing or Deleting Fields

**Edit** – Click the pencil icon to update the field name, type, or options.  
Changes made during editing are applied immediately after saving.  
**Delete** – Click the trash icon to permanently remove the field.

<p class="callout warning">Deleting a custom field removes it from all client profiles. Existing values stored in that field will no longer be accessible.</p>

##### Ordering custom fields

Custom fields can be reordered using drag &amp; drop in the list.  
The defined order controls how fields appear on client profiles and edit forms.

</article>