Home Advanced functionality Advanced JSON Fields in Simply CRM (SurveyJS-based)

Advanced JSON Fields in Simply CRM (SurveyJS-based)

Last updated on Mar 07, 2026

Simply CRM supports advanced dynamic fields that allow administrators to build complex forms, calculators, and structured data inputs directly inside a record.

These fields use a SurveyJS-style JSON definition, which means admins can configure rich interfaces such as:

  • Dynamic tables (matrixes)

  • Calculated fields

  • Conditional logic

  • Multi-tab layouts

  • Structured data collections

  • Configurable calculators

Instead of creating dozens of traditional CRM fields, you can define an entire structured form inside a single JSON field.


How It Works

An Advanced JSON Field consists of two parts.

1. JSON Definition (admin configuration)

This defines what the user sees in the CRM interface.

It includes:

  • Field types

  • Layout

  • Calculations

  • Conditional logic

  • Structured data collections

The definition is stored in the JSON Definition property of the field.


2. JSON Data (record value)

When a user fills out the form:

  • The resulting values are stored as JSON on the record

  • The JSON structure mirrors the definition

  • The stored data can later be used in:

    • automation

    • reporting

    • integrations

    • workflows

Example stored data:

{
  "totalMargin": 4200,
  "totalCost": 11800,
  "orderLines": [
    {
      "description": "Installation service",
      "quantity": 2,
      "unitPrice": 3000,
      "lineTotal": 6000
    }
  ]
}

Why Use JSON Fields?

Advanced JSON fields are useful when you need:

  • Complex calculations

  • Repeating rows

  • Structured objects

  • Configurable forms

  • Dynamic calculators

  • Multi-row pricing structures

Typical use cases include:

Use CaseExamplePricing calculatorsMargin / profit calculationsQuote buildersVendor pricing tablesProject estimationsTime + material breakdownStructured configurationsInstallation specificationsCost modelsBudget calculations


Layout Structure

SurveyJS normally uses pages, but in Simply CRM these are mapped to tabs.

This is configured in the meta section at the beginning of the JSON definition.

Example:

{
  "meta": {
    "pageNav": "tabs",
    "tabsStyle": "top",
    "tabLabels": "title"
  }
}

Mapping:

SurveyJS ConceptSimply CRMPageTabPanelSectionQuestionField


Example JSON Structure

A simple configuration might look like this:

{
  "meta": {
    "pageNav": "tabs"
  },
  "pages": [
    {
      "name": "pricing",
      "title": "Pricing Calculator",
      "elements": [
        {
          "type": "matrixdynamic",
          "name": "pricingLines",
          "title": "Items",
          "columns": [
            { "name": "vendor", "title": "Vendor" },
            { "name": "price", "title": "Price" },
            { "name": "discount", "title": "Discount %" }
          ]
        }
      ]
    }
  ]
}

This creates:

  • A tab called Pricing Calculator

  • A dynamic table

  • Columns for vendor, price, and discount

  • Rows that users can add or remove


Dynamic Matrix Tables

One of the most powerful features is the dynamic matrix (matrixdynamic).

It allows users to:

  • Add rows

  • Edit values

  • Perform row calculations

  • Aggregate totals

Example table in the CRM:

VendorPriceDiscountMarginNordic Supplies100010%auto calculatedGlobal Hardware8005%auto calculated

Matrix rows can include:

  • dropdown fields

  • numeric fields

  • calculated values

  • conditional visibility

  • read-only columns


Calculations and Expressions

SurveyJS supports expressions directly in the JSON definition.

Example expression:

sumInArray({pricingLines}, 'price')

This allows you to calculate:

  • totals

  • margins

  • discounts

  • averages

  • derived values

Fields can also be configured as read-only calculated outputs.


Conditional Logic

Fields and sections can appear or disappear based on logic.

Example:

"visibleIf": "{rowIndex} = 5"

Logic can be used for:

  • conditional fields

  • optional sections

  • workflow-driven forms

  • step-based calculations


Default Values

Fields can automatically populate using expressions.

Example configuration:

"defaultValueExpression": "sumInArray({pricingLines}, 'discountAmount')"

Data Storage

All values entered by the user are stored as JSON in the record.

Advantages:

  • flexible structure

  • easy API integration

  • no need to create many CRM fields

  • easy to export/import

Example stored record:

{
  "pricingLines": [
    {
      "vendor": "Nordic Supplies",
      "price": 1000,
      "discount": 10
    }
  ],
  "totalPrice": 900
}

Admin Configuration

Advanced JSON forms are configured using a JSON type field.

Administrators simply define the form structure inside the JSON Definition field.

To configure this:

  1. Edit or create a field in the module
    (see:
    https://help.simply-crm.com/hc/simply-crm-support/articles/how_to_add_or_edit_fields_in_a_module)

  2. Select Field Type: JSON

  3. Paste the SurveyJS-style JSON definition into the JSON Definition field

  4. Save the field

Once saved, Simply CRM will automatically:

  • render the form in the CRM interface

  • apply calculations and logic

  • store the resulting values as JSON on the record

Administrators only maintain the JSON definition — the CRM handles rendering and saving the data automatically.


Best Practices

Keep calculations inside the JSON

Avoid external scripts where possible.

Use matrix tables for repeating data

Examples:

  • products

  • suppliers

  • order lines

  • project tasks

Use expressions for totals

Example:

sumInArray()

Keep field names consistent

Example naming style:

unitPrice
lineTotal
discountPct
marginValue

When to Use JSON Fields vs Normal Fields

Use normal CRM fields when you need:

  • simple values

  • easy filtering

  • standard reporting

Use JSON fields when you need:

  • complex structures

  • dynamic forms

  • repeating tables

  • advanced calculations

  • configurable workflows


Advanced JSON fields make it possible to build powerful, flexible interfaces directly inside Simply CRM without custom development.