Explanation
Article MarkdownReport an error

Custom Data patterns and examples

Custom Data is not only “storage for the bot”. In v2 one module serves three roles: the administrator designs the table and imports data, operators and managers work with lists in a comfortable UI, and the integrator connects the same table to the process. This document helps you pick a pattern for your task — without unnecessary code where UI is enough, and without keeping Google Sheets “forever” when both people and automation need the same data.


How to choose quickly

Your task Where to look
Cities, stores, categories — bot shows a list Directory + Routing in process
CSAT, requests, feedback — bot writes after a dialog Journal + Save from process
Operators maintain a list (statuses, filters, board) Operator patterns
Data already in Excel / Google Sheets Import from file or Google Sheets
Field on one client’s card (manager, segment) Client fields, not Custom Data → Extend contacts
Full CRM for the whole business External system; Custom Data is an internal service directory → Compared to other approaches

Client Fields and User Fields are for client or operator attributes, not standalone record registers.


Two main archetypes

In real projects almost all Custom Data tables fall into two models. The archetype defines who fills data and how to create the table.

Archetype 1: Directory (the process reads)

Idea: the table is filled by an administrator (import, manual edit), and the process reads records — cities, stores, categories, routing branches.

Who writes Administrator, integrator (import / editor)
Who reads Process (custom_modules__get), sometimes operator for checks
Where structure comes from Client file (most often) or from scratch
Typical examples Stores by city, product categories, branch codes, language branches

Best v2 start: New table → From file (Excel/CSV) or Data import into a new table. An empty directory without rows rarely makes sense — data usually already lives in the client’s spreadsheet.

Field example (stores): city, address, phone, lang_code.

Archetype 2: Journal (the process writes)

Idea: rows are created by the process during a dialog (rating, request, survey answer). Operators and supervisors view and change records in the UI — filters, board, card.

Who writes Process (custom_modules__set / save from input block)
Who reads / edits Operators, supervisors, Metabase reports
Where structure comes from Journal starter, CSAT starter, or design from scratch
Typical examples CSAT after dialog, callback requests, survey entries, processing queue

Best v2 start: Starters (e.g. quality rating) or From scratch with fields matching what the process collects. After save — Use in process tab and wire blocks.

Field example (CSAT): chat_id, rating, comment, created_at.

Important: a starter gives structure and hints, not ready automation. Until the process writes to the table, the journal stays empty — that is normal during design.


Table creation patterns (administrator / integrator)

Pattern: Directory from file → data ready to use

Task: move existing Excel/CSV into the platform and use it in the process immediately.

v2 path:

  1. New table → From file or Data import (new table).
  2. Wizard: source → name and group → column mapping → Preview before import → import.
  3. View data — verify rows in the table.
  4. Use in process — wire read access to the bot.

When it fits: routing directories, SKU catalogs, location lists — the most common path in production.

Import from file

Pattern: Journal from starter → process + team UI

Task: collect CSAT or a request register: bot writes, supervisor sees the list.

v2 path:

  1. New table → Starters (quality rating, tasks, etc.) or From scratch.
  2. Editor: fields → Field display → optionally UI settings (chart, highlighting).
  3. Save → Use in process: write / read / Ask AI.
  4. In records table — Saved view “Open today” for operators.

When it fits: feedback, NPS, callback requests, internal queues.

Starters · Process tab

Pattern: Ask AI during design

Task: describe the need in words (“repair requests with address, status, priority”) and get a draft structure.

v2 path: New table → Ask AI → Instance Agent suggests fields → you review in Model editor → save.

When it fits: non-standard domain when starters do not fit but you need a quick draft.

Ask AI for Custom Data

Pattern: Refresh a directory without manual CRUD

Task: update a catalog weekly from Google Sheets or a new file.

v2 path: Data import into an existing table → Add to current records or Clear model and import again (with confirmation only) → Preview before import.

Do not confuse with legacy: old custom action google_sheets_fetch_data in processes is a deprecated workaround; administrators have native Data import.

Google Sheets · Import from file


Patterns for operators and managers

These patterns show why Custom Data is more convenient than an external spreadsheet for daily team work.

Pattern: Working list with a saved view

Task: supervisor opens “my open requests today” with the same columns and filters every day.

How it works: in the records Table, apply Filter and SortingSave view → optionally Make shared for everyone. The team switches view tabs without reconfiguring.

Permissions: view — broad role; shared view and edit — module permissions.

Saved views

Pattern: Status board (Kanban)

Task: move requests or tasks across “New → In progress → Closed” by drag-and-drop.

How it works: List or Table relation field for grouping → Table / Board toggle → drag-and-drop updates status. The process sees the same value as the operator on the board.

When it fits: journals with a status field, internal queues, pipeline without a separate task tracker.

View records (table and board)

Pattern: Quick edit in grid or card

Task: operator changes one or two fields (comment, status, assignee) without opening CRM.

How it works: inline edit in the table or record Card in the side panel. Semantic types (User, Subject, Email) provide dropdowns instead of raw text.

Pattern: Macro from a row

Task: “Send to process” or “Check in CRM” button right on the record.

How it works: in editor UI settingsMacros → row button or selection button → launch process with id and field context.

When it fits: operator action on one journal row without opening the builder.

Row macros

Pattern: Export with current filter

Task: manager sends a data slice to an analyst or Excel for a meeting.

How it works: apply filter → Export (CSV, XLS, PDF, etc.) — the file contains what is on screen.

Export data · Export filtered


Process integration patterns (integrator)

Pattern: Routing via directory

Task: user picks a city → bot shows stores in that city.

Sequence: custom_modules__get (all or by lang_code) → keyboard with cities → get with city filter → message with addresses.

Model: storescity, address, lang_code.

custom_modules__get

Pattern: Write to journal after dialog

Task: save a rating or request after a survey.

Sequence:

  • Simple path: input block with Save to Custom Data.
  • Flexible path: custom_modules__set with module_name and fields.

Model: csat_feedbackchat_id, rating, comment, created_at.

Save from process · custom_modules__set

Pattern: Update client row (reg_user_id)

Task: one row per client, process appends attributes (city, segment, external id).

Sequence: custom_modules__update with reg_user_id key — updates existing row, no duplicate.

When Client Fields are better: if data belongs on the client card in Operator Line, not a separate register.

Pattern: Inline buttons with record id

Task: show requests as buttons; on click load the full record.

Sequence: get list → inline buttons with callback_data = id → inline_call_back → continue with record fields.

Typical for: journals where the user (not operator) picks from their own list.

Task: product references category; table shows label, not only id.

How it works: Table relation field → starters like “Products and categories” or two manually created tables.

Association between tables

Pattern: Analytics (Metabase)

Task: CSAT and NPS on dashboards.

Sequence: process writes to journal → Metabase reports on instance table. Optionally enable statistics under the table in UI (chart by rating field).

Richer display: charts, row highlighting, map — Advanced cases.


Summary matrix

Pattern Archetype Who maintains data v2 UI Process
Directory from file Directory Admin (import) Table, export get
Journal + operators Journal Process + operator Table, Board, views set / update
City → location routing Directory Admin Browse get + keyboard
CSAT / NPS Journal Process Statistics, export set
Request queue Journal Process + operator Kanban, macros set + get
Profile update Journal / hybrid Process Rarely update
Catalog from Google Directory Admin (import) Table get
Metabase Journal Process Optional charts set

Common mistakes

Mistake Why it hurts Better
Create CSAT starter and wait for data without a process Empty journal — nothing writes Use in process first, then test dialog
Keep directory in Google Sheets “for operators” Two UIs, sync, permissions Import → Custom Data → platform roles
Custom Data for “client’s manager” field That is profile, not a register Client fields
Rename field after process is wired Breaks get/set Check Use in process before change
Empty directory “from scratch” Nothing to show in bot From file or import

Using your own AI agent?Install the open skill so your AI agent can work with current official ConnectiveOne documentation.Get the skillNeed support?Couldn’t find the answer or need help from the ConnectiveOne team? Create a request in Client Portal.Create a request