Documentation
Docs
Learn
Release Notes
  • English
  • Українська
Docs
Learn
Release Notes
  • English
  • Українська
  • Getting Started

    • ConnectiveOne Documentation
    • How to use the Service Desk portal
  • Channel Configuration

    • Channels

      • Integrator — Channels Configuration Hub
      • Explanations

        • What is ConnectiveOne Widget
        • Widget JavaScript API
      • Instructions

        • How to Configure IP Blocking Message?
        • How to Configure Widget in Settings
        • How to Connect Facebook Messenger and Instagram to ConnectiveOne
        • How to Connect Gmail to ConnectiveOne
        • How to Connect Outlook to ConnectiveOne
        • How to Connect Telegram to ConnectiveOne
        • How to Connect Numbered Viber, Telegram, and WhatsApp via e-chat
        • How to Connect Viber to ConnectiveOne
        • How to Connect WhatsApp to ConnectiveOne
        • How to Customize Widget Colors
        • How to Manage Widget from Website
        • How to Pass Parameters from Website to Scenario
        • How to Configure Sending SMS via Alpha SMS
        • How to Configure Sending Viber/SMS via Infobip
        • How to Connect Widget to Website
        • How to Use Custom Code for Widget
        • How to Work with Widget on SPA Applications
  • Request Processing

    • Operator Panel (OperatorLine)

      • Operator — OperatorLine Scenarios Hub
      • Supervisor — OperatorLine Scenarios Hub
      • Administrator — OperatorLine Scenarios Hub
      • Integrator — Operator Panel Hub for OperatorLine
      • Explanations

        • About Processing Requests in ConnectiveOne
        • What Are Filters and Why You Need Them
        • About Auto-Distribution of Dialogs Between Operators
        • About Automatic Connection of Free Operator to New Dialog
        • Instagram Content Display in Chats
        • About Connecting Chat with Operator Through Operator Panel
        • HEIC/HEIF image support (photos from iPhone)
        • About Redistribution of Chats from Operator
        • Email View Modes in Conversations
      • Instructions

        • Change Request Status
        • Create Filter
        • Create Folder
        • Create Outbound Request
        • How to Create a Ticket?
        • How to Download Attachments from the Dialog?
        • How to export a chat to PDF?
        • How to Link Tickets to Each Other?
        • How to Manage Email Reply Recipients?
        • Manage Folders
        • How to Edit Ticket Fields?
        • How to Manage Ticket Watchers?
        • Monitor Operator Statuses
        • Queue monitoring and distribution audit
        • Open Request
        • Reorder Folders
        • How to Reply to a Client?
        • Set Topic and Tags
        • How to Switch the Email View Mode in a Conversation?
        • Use Copilot
        • Use Quick Replies
        • How to View Active Dialogs in Client Card?
        • View Chat List
        • View Chats in Table
        • View Quality Assessment in Chat
        • View Request Queue
        • How to View Ticket Logs?
        • How to View Ticket SLA Metrics?
    • Profile

      • Operator — Profile Scenarios Hub
      • Administrator — Profile Scenarios Hub
      • Instructions

        • How to Change Interface Language?
        • Configure Folders
        • Configure notifications in your profile
        • Configure Operator Settings in Profile
        • Configure Quick Replies
        • Configure Signature
    • BroadcastUsers (Clients)

      • Operator — BroadcastUsers Scenarios Hub
      • Integrator — BroadcastUsers Scenarios Hub
      • Administrator — BroadcastUsers Scenarios Hub
      • Explanations

        • Why Does One Client Have Many Channels?
        • Client Card Sections
      • Instructions

        • Create Segment by Filters
        • Edit Client Data
        • Export Client Data
        • Filter Clients
        • Manage Subscription
        • How to Search and Merge Similar Contacts
        • How to Find a Client?
        • Search Clients by File
        • Send Broadcast to Selected Clients
        • How to View a Client Card?
        • View Client Channels
  • Broadcasts

    • Broadcast

      • Operator — Broadcast Hub
      • Integrator — Broadcast Settings Hub
      • Analyst — Broadcast Analytics Hub
      • Instructions

        • How to Activate a Scheduled Broadcast?
        • How to Add Images to Broadcasts?
        • How to Check Broadcast Status?
        • How to Configure an Automatic Broadcast?
        • How to Configure Alias in Broadcasts?
        • How to Configure Broadcast Limits?
        • How to Create a Broadcast Template?
        • How to Create a Broadcast?
        • How to Create a Broadcast Topic?
        • How to Deactivate a Broadcast Topic?
        • How to Edit a Broadcast Draft?
        • How to Edit a Broadcast Topic?
        • How to Export Broadcast Results to Excel?
        • How to Format Messages in Broadcasts?
        • How to Launch a Broadcast Immediately?
        • How to Save a Broadcast as a Draft?
        • How to Find Contacts by File?
        • How to Send a Broadcast from the Clients Module?
        • How to Configure a Scheduled Broadcast?
        • How to Configure Subscription to Broadcast Topics?
        • How to View a Broadcast Report?
        • How to View Broadcast Results?
        • How to View Click Statistics?
        • How to View Delivery Statistics?
        • How to View Open Statistics?
  • Automation

    • Scenario Builder

      • Scenario Builder — Integrator Hub
      • Instructions

        • How to add translations to a scenario in Scenario Builder
        • How to Configure an Instagram Scenario in Scenario Builder
        • How to create a new bot scenario in Scenario Builder
        • How to create a scenario section in Scenario Builder
        • How to edit a scenario in Scenario Builder
        • How to find a node on the canvas in Scenario Builder
        • How to export and import a scenario in Scenario Builder
        • How to test a scenario in Scenario Builder
        • How to use an action in a Scenario Builder scenario
        • How to view scenario version history in Scenario Builder
    • Scenario Dialog (Legacy)

      • Integrator — Scenario Dialog Scenarios Hub (Legacy)
      • Explanations

        • Actions in Scenarios — What They Are and How They Work
        • About Using autobroadcast__create Action in Scenarios
        • About Copying Existing Bot Scenario
        • About ConnectiveOne Integration with Corezoid Through Operator Panel
        • About Displaying Images to User
        • About Email Categorization Using AI
        • About Facebook Ads Referral Tags
        • About Launching Scenario from Facebook Ads
        • About HTML Text Formatting in Telegram and Widget
        • About Inline Keyboard in Telegram and Widget
        • About Configuring Alias for Outgoing Dialog
        • About Payment via Bot
        • About Telegram Group Bots
        • Telegram Keyboard Button Styling
        • About Telegram WebApp in Scenarios
        • About Viber Keyboard Styling
        • About Viber Start Message
      • Instructions

        • How to Add Translations to a Scenario?
        • How to Create a New Bot Scenario?
        • How to Create a Scenario Section?
        • How to Edit an Existing Bot Scenario?
        • How to Export or Import a Scenario?
        • How to Use an Action in a Scenario?
        • How to View and Restore Scenario Versions?
    • ActionJail

      • Operator — ActionJail Scenarios Hub
      • Explanations

        • Action Jail Editor Sections
        • How Action Jail Data Flows to Scenario Builder
      • Instructions

        • How to Create a Custom Action in Action Jail
        • How to Create and Maintain an Action in ActionJail (Administrator)
        • AI Generator Setup in Action Jail (Administrator)
        • How to Clone an Action in ActionJail
        • How to Quickly Find an Action in ActionJail
        • How to Connect an ActionJail Action to a Bot Scenario (Integrator)
      • Reference

        • Actions Reference — Actions Guide
    • Integrations

      • Integrator — ConnectiveOne Integrations Hub
      • Explanations

        • Launch Scenario via Deeplink
        • Transfer UTM Tags Through Messages
        • What are ConnectiveOne Integrations
      • Instructions

        • How to Integrate Operator Panel as Widget in CRM/ERP
        • How to Configure Product Name for Zoho CRM
        • How to Integrate External System via Custom Channel
        • How to Get Data from API Using send_request
        • How to Send Data from ConnectiveOne via send_request
        • How to Configure User Subscription to Notifications
        • How to Launch Bot Scenario via API call_node
        • How to Integrate ConnectiveOne with eSputnik
        • How to Send Phone Broadcast via Route
        • How to Use ConnectiveOne API
        • How to Configure Operator Panel Webhook
      • Reference

        • API Reference — ConnectiveOne API Reference
    • Custom Data

      • Integrator — Custom Data Scenarios Hub
      • Administrator — Custom Data Scenarios Hub
      • Analyst — Custom Data Scenarios Hub
      • Explanations

        • About Custom Data in ConnectiveOne
        • Custom Data Patterns and Examples
        • Advanced Custom Data Cases
      • Instructions

        • Add Field to Model
        • How to Configure Field Display in Custom Data?
        • Configure Field Type
        • How to Create an Association Between Tables in Custom Data?
        • Create Group
        • How to Create a Data Model?
        • Edit Model
        • Export Filtered Data
        • How to Export Model Data?
        • How to Extend Client Contacts Table Through Custom Data?
        • How to Find Records by Filters?
        • Import Data from File
        • How to Save Data from Scenario to Custom Data?
        • Sort Records
        • How to Use AI Magic to Create Custom Data Models?
        • How to Get a Record from Custom Data by Search Criteria?
        • How to Use Autocomplete Search in Custom Data?
        • How to Create a Record in Custom Data from Scenario Data?
        • Validate Data
        • View Model Records
      • Reference

        • Advanced Model Options Reference
    • FileManager

      • Operator — FileManager Scenarios Hub
      • Instructions

        • ⚠️ DEPRECATED: How to Create a Jira Task with a File?
        • How to Delete a File or Folder?
        • How to Navigate to a Folder?
        • How to Upload a New File?
        • How to View the File List?
  • Artificial Intelligence

    • FastLinePro

      • Integrator — FastLinePro Scenarios Hub
      • Administrator — FastLinePro Scenarios Hub
      • Instructions

        • Activate KB Plugin
        • How to Check AI Agent Response in Scenario?
        • Check Synchronization Status
        • Configure Agent Prompt
        • How to Configure Agent Variables in FastLinePro?
        • How to Configure Chunking in FastLinePro Knowledge Base?
        • Configure KB Plugin Synchronization
        • Configure Knowledge Synchronization
        • How to Connect Knowledge Base to AI Agent in FastLinePro?
        • Create Agent
        • How to Create a Chatbot?
        • How to Create a Knowledge Base?
        • Deactivate KB Plugin
        • How to Generate Gemini API Key for FastLine Pro
        • How to Prepare a File for FastLinePro Knowledge Base?
        • Run KB Synchronization
        • Update KB Files
        • Upload Files to KB
        • How to Use action_fastline_pro Action in Scenario?
    • Quality Assurance

      • Supervisor — Quality Assurance Scenarios Hub
      • Administrator — Quality Assurance Scenarios Hub
      • Analyst — Quality Assurance Scenarios Hub
      • Instructions

        • How to Adjust AI Assessment Criteria?
        • How to Approve Assessment?
        • Assess Request
        • Conduct Quality Check
        • How to Create a New Dialogue Assessment?
        • Export Assessments
        • Filter Assessments
        • Use Checklist
        • View Assessment Details
        • How to View Assessments List and Find the Needed One?
        • View Quality Dashboard
        • View Quality Reports
  • Statistics

    • Statistics

      • Supervisor — Statistics Scenarios Hub
      • Administrator — Statistics Scenarios Hub
      • Analyst — Statistics Scenarios Hub
      • Explanation

        • Hybrid ticket analytics: how to read the dashboard
      • Instructions

        • Apply Filters to Report
        • How to Configure CSAT (Customer Satisfaction) in Statistics?
        • How to Create and Configure a Funnel in Statistics?
        • Create Detailed Report
        • Create Funnel
        • Export Report
        • How to Export Statistics Data?
        • Set Target Metrics
        • View Daily Report
        • View Dashboard
        • How to View Metabase Dashboards in Statistics Module?
        • How to View Operator Schedule in Statistics?
        • View Shift Report
      • Reference

        • Statistics Metrics — Reference
  • Administration

    • Constructor

      • Constructor — home screen and navigation
      • Instructions

        • How to use the Constructor home screen?
    • Settings

      • Supervisor — Operator Panel Settings Hub
      • Administrator — System Settings Hub
      • Instructions

        • How to Activate or Deactivate a Bot?
        • How to Configure Authentication and Access Management?
        • How to Configure a Bot?
        • How to Configure Operator Calendars?
        • How to Configure Chat Parameters?
        • How to Configure Field Display in the Client Card?
        • How to Configure Client Fields?
        • How to configure email templates (header and footer)?
        • How to Configure File Parameters?
        • How to Configure Hot Keys?
        • How to Configure Instance Parameters?
        • How to enable the Notification Center on the instance (root)
        • How to Configure Operators in Chats?
        • How to Configure Roles and Access Rights?
        • How to Configure Styles and Scripts?
        • How to Configure Ticket Topics?
        • How to Configure General System Settings?
        • How to Configure Ticket Parameters?
        • How to Configure Timers for Chats?
        • How to Configure User Fields?
        • How to Create a New Bot?
        • How to View Bots List?
        • How to View System Status?
        • How to View Users List?
      • Reference

        • What Are Server Requirements for Hosting ConnectiveOne?
    • Access Recovery

      • Access Recovery — Scenarios Hub
      • Instructions

        • How to Enable Password Recovery Flow (Administrator)
        • How to Generate a Password Reset Link Manually (Administrator)
        • How to Reset Password Through "Forgot Password?"
  1. Docs
  2. /Settings
  3. /How To
  4. /How to Configure Client Fields?

How to Configure Client Fields?

Configuring client fields lets you define custom fields and control their visibility for operators. Without custom fields, only a limited set of standard client-card fields is available.

When You'll Need This

  • You need to add additional fields to the client card (for example, "Client Number", "Category", "Registration Date").
  • Integration with external systems requires storing additional client information.
  • You need to extend the standard client profile for your business processes.

What's Important to Know

  • Client Fields (/settings-page/client-fields): first block — custom field definitions (form + JSON); below — visibility toggles and optional visibility JSON. One Save button in the page header stores both client_fields_json and client_card_fields — there is no second Save inside the visibility card.
  • Same visibility UI is also available under Field editor in the Client Card (/settings-page/op-settings/client-fields, operator panel Settings menu): visibility only; save uses the op-settings header Save (batch operator-panel settings; needs settings permission). See Field editor in the Client Card.
  • Standard fields — native OpClients columns: phone, bot_id, bot_name, fullName (from full_name). clientType, whiteLabel in samples may be custom extra_data keys or legacy.
  • Custom field values are stored in the client's extra_data.
  • Field form and JSON — basic inputs (key, type, label) plus optional properties; full list in the Client fields JSON reference. The field editor includes JSON examples snippets.

Before You Start

  • You are logged in with administrator or integrator rights.
  • You have permission to edit client fields (canSave for the users section).

Step-by-step

1. Open Client Fields

  1. Open the Settings module via the menu or at /settings-page.
  2. In the side menu, expand Bots (Process Library).
  3. Click Client Fields (/settings-page/client-fields).

2. Define fields and visibility

  1. In the first block, review or edit the field list and JSON (custom_fields_json). Use Add field or edit JSON (reference).
  2. In the second block, set visibility toggles for standard and custom fields.
  3. Optionally expand visibility JSON — same data as toggles; editors stay in sync.
  4. Click the single Save in the page header to persist both field definitions and visibility.

3. Alternative: visibility only in op-settings

Open Field editor in the Client Card (/settings-page/op-settings/client-fields) from operator panel Settings for the same visibility controls; use the on-page link to Client Fields for full field definition. Save with the op-settings header button. Details: Field editor in the Client Card.

JSON examples (same as the JSON examples block in the UI)

At the bottom of the Client Fields page, a selector offers five scenarios — the JSON below matches that content. Names in the UI are short; here each example explains what it is meant to demonstrate. Each block is the field object payload (under custom_fields_json when saved). Copy it, rename keys to match your project, then click Save in the page header.

Two levels of keys: outer keys (full_name, store_id, etc.) are your field names in client data; inner keys (type, label, association…) are schema parameters the UI understands. After each sample, a short list explains why each key is there.

Basic

Three standalone fields of different types: short text, date, and integer with a default value for loyalty points. Use it as a minimal starter without validation or cross-field logic.

{
  "full_name": {
    "type": "STRING",
    "label": "Full name"
  },
  "birth_date": {
    "type": "DATE",
    "label": "Date of birth"
  },
  "loyalty_points": {
    "type": "INTEGER",
    "label": "Points",
    "default": "0"
  }
}

Keys and why: type — data type in the form; label — caption for operators; default — pre-filled value (here for the numeric field). Names like full_name, birth_date, loyalty_points are only examples — use your own keys.

Date / time + validation

Two time fields (type_string: time, HH:mm format). Both are required; the end field adds a cross-field check via validate: end time must be after start. That object is not exposed as separate toggles in the form — configure it in JSON.

{
  "start_time": {
    "type": "STRING",
    "label": "Start",
    "type_string": "time",
    "format": "HH:mm",
    "string_input": {},
    "rules": ["required"]
  },
  "end_time": {
    "type": "STRING",
    "label": "End",
    "type_string": "time",
    "format": "HH:mm",
    "string_input": {},
    "rules": ["required"],
    "validate": {
      "required_field_not_empty": "start_time",
      "rules": {
        "type": "time",
        "val_from_field": "start_time",
        "action": "gt"
      }
    }
  }
}

Keys and why: again type and label. For time-as-string fields: type_string: "time" tells the UI to treat input as time; format is the mask (HH:mm); string_input: {} enables the matching input widget. rules: ["required"] marks the field mandatory (also available from the form). The validate object is a cross-field rule: required_field_not_empty requires start_time to be set; nested rules compares end time to start_time with action gt (greater than — strictly later). Exact validate shapes depend on the scenario — use this snippet as the pattern.

Linked field

A field with association stores the linked record’s ID; a second field shows a human-readable label (e.g. name), is hidden in the quick-create popup, and is read-only. Typical “stored ID + display label for operators” pattern.

{
  "store_id": {
    "type": "INTEGER",
    "label": "Store",
    "association": {
      "as": "store_name",
      "model_field_label": "name",
      "fetch_limit": 500
    }
  },
  "store_name": {
    "type": "STRING",
    "label": "Store name",
    "hidden_in_create_popup": true,
    "non_editable": "true"
  }
}

Keys and why: association describes a link to another entity: as — the other field key in this JSON that receives the display label; model_field_label — which field from the linked record to show; fetch_limit — how many rows can be loaded for the picker. On store_name: hidden_in_create_popup: true hides it in quick create; non_editable: "true" makes it read-only (the label is usually filled from store_id).

Row highlighting

Planned and actual time fields; one field uses sting_highlight so table rows get conditional colours based on comparing the two times. This is advanced behaviour and is wired only through JSON, not the field form.

{
  "planned_finish": {
    "type": "STRING",
    "label": "Planned",
    "type_string": "time",
    "format": "HH:mm",
    "string_input": {}
  },
  "actual_finish": {
    "type": "STRING",
    "label": "Actual",
    "type_string": "time",
    "format": "HH:mm",
    "string_input": {},
    "sting_highlight": {
      "type": "STRING",
      "highlight_rules": {
        "type": "time",
        "rules": [
          { "0": "actual_finish", "1": "planned_finish", "action": "gt",  "color": "red"   },
          { "0": "actual_finish", "1": "planned_finish", "action": "lte", "color": "green" }
        ]
      }
    }
  }
}

Keys and why: for plain time fields — again type_string, format, string_input. sting_highlight (spelling as in the product) enables conditional row colouring; inside highlight_rules, type: "time" sets the comparison mode; the rules array lists conditions: "0" and "1" reference other field keys, action (gt, lte, …) is the comparison, color is the row colour when the condition matches.

Table totals + link

A numeric field with a footer total (total_sum), width, alignment, and sorting; a second string field uses display_type: link so the value opens as a URL. Flags like total_sum are set in JSON when the form does not offer them.

{
  "amount": {
    "type": "FLOAT",
    "label": "Amount",
    "width": "90",
    "align": "end",
    "sortable": "true",
    "total_sum": true
  },
  "invoice_url": {
    "type": "STRING",
    "label": "Invoice",
    "display_type": "link",
    "width": "60"
  }
}

Keys and why: for the clients table — width (column width in px), align (end is typical for numbers), sortable: "true" enables sorting; total_sum: true includes the field in the footer total. For the link column: display_type: "link" opens the cell value as a URL in a new tab (see also the reference).

What Happens Next

  • Custom field definitions are stored in client_fields_json (instance settings).
  • Visibility is stored in client_card_fields (operator panel settings).
  • Operators see and fill fields according to the toggles / visibility JSON.

How to Verify Everything Worked

  • On Client Fields, confirm fields and toggles match what you want.
  • Open a client card in the operator panel and verify the right fields appear.

Related Materials

  • Client fields JSON reference — all properties inside custom_fields_json
  • Configure user fields
  • Field editor in the Client Card (op-settings) — same visibility block, different save affordance

Important Notes

  • ⚠️ On Client Fields, one header Save writes both parts. On op-settings/client-fields, saving uses the op-settings header Save (settings permission).
  • ⚠️ Deleting fields: data in extra_data may be lost.
  • 💡 Backup: make a copy of the JSON before major changes.
Prev
How to Configure Field Display in the Client Card?
Next
How to configure email templates (header and footer)?

On this page