Jepto
Help Center
Close


Data Sources

General

Data Sources | General

Connections

Data Sources | Connections

Fields & Formulas

Data Sources | Fields & Formulas

Reports

Creating & Sharing

Reports | Creating & Sharing

Report Editing

Reports | Editing

Report Config

Reports | Report Config

Chart Cards

Reports | Chart Cards

Content Cards

Reports | Content Cards

Data Chat

General

Data Chat | General

AI

General

AI | General

Clients
Integrations
Settings
KPI Forecasting

General

KPI Forecasting | General

Settings & Status

KPI Forecasting | Settings & Status

Seasonality

KPI Forecasting | Seasonality

Metrics by Source

KPI Forecasting | Metrics by Source

Budget Tracking

General

Budget Tracking | General

Anomaly Detection

General

Anomaly Detection | General

Automation Jobs

General

Automation Jobs | General

Change History

Automation Jobs | Change History

URL & Page Checkers

Automation Jobs | URL & Page Checkers

Local & Reviews

Automation Jobs | Local & Reviews

Search Console

Automation Jobs | Search Console

Insights

Managing Insights

Insights | Managing Insights

Change History

Insights | Change History

URL & Page

Insights | URL & Page

Local & Reviews

Insights | Local & Reviews

Other Insight Types

Insights | Other Insight Types

Local Listings

General

Local Listings | General

Profiles & Content

Local Listings | Profiles & Content

Performance & Activity

Local Listings | Performance & Activity

Media

Local Listings | Media

Categories & Services

Local Listings | Categories & Services

Reviews

General

Reviews | General

Social Posts

General

Social Posts | General

Creating Posts

Social Posts | Creating Posts

Managing Posts

Social Posts | Managing Posts

Data Warehouse

Pipelines

Data Warehouse | Pipelines

Access & Credits

Data Warehouse | Access & Credits

Source Fields

Data Warehouse | Source Fields

Data Studio

Data Warehouse | Data Studio

BigQuery

Data Warehouse | BigQuery

General

Clients | General

General

Integrations | General

MCP

Integrations | MCP

Webhook — Automation Payloads

Integrations | Webhook — Automation Payloads

Webhook — Local & Reviews

Integrations | Webhook — Local & Reviews

Webhook — Other

Integrations | Webhook — Other

Account & Billing

Settings | Account & Billing

Users

Settings | Users

Comments & Notes

Settings | Comments & Notes

Notifications

Settings | Notifications

FAQ

Settings | FAQ

Other

Settings | Other

Account Settings

Settings | Account & Billing

Acknowledging and Resolving Insights

Insights | Managing Insights

Add comment from Slack

Integrations | General

Add comment from Zapier

Settings | Comments & Notes

Adding a User

Settings | Users

AI Credits

AI | General

AI Models

AI | General

Analysis Card

Reports | Content Cards

Anomalies Bulk Action

Anomaly Detection | General

Anomaly Algorithm

Anomaly Detection | General

Anomaly Detection

Anomaly Detection | General

Anomaly Detection Insight

Insights | Other Insight Types

Anomaly Detection Settings

Anomaly Detection | General

Anomaly Detection Webhook Payload

Integrations | Webhook — Other

Anomaly Job Common Errors

Anomaly Detection | General

An overview of Local Listings

Local Listings | General

An overview of Reviews

Reviews | General

Area Chart Card

Reports | Chart Cards

Attributes

Local Listings | Profiles & Content

Automatic Schema Updates

Data Warehouse | Pipelines

Automation: Facebook Ads Destination URL Checker

Integrations | Webhook — Automation Payloads

Automation: Google Ads Change History

Integrations | Webhook — Automation Payloads

Automation: Google Ads Destination URL Checker

Integrations | Webhook — Automation Payloads

Automation: Google Analytics Change History

Integrations | Webhook — Automation Payloads

Automation: Google Business Profile Answer

Integrations | Webhook — Local & Reviews

Automation: Google Business Profile Change History

Integrations | Webhook — Automation Payloads

Automation: Google Business Profile Pending Updates

Integrations | Webhook — Local & Reviews

Automation: Google Business Profile Question

Integrations | Webhook — Local & Reviews

Automation: Google Review

Integrations | Webhook — Local & Reviews

Automation: Google Review Change History

Integrations | Webhook — Automation Payloads

Automation Job Common Errors

Automation Jobs | General

Automation Jobs

Automation Jobs | General

Automation: Microsoft Ads Destination URL Checker

Integrations | Webhook — Automation Payloads

Automation: Page Status Checker

Integrations | Webhook — Automation Payloads

Automation: Robots.txt Change Detection

Integrations | Webhook — Automation Payloads

Automations Bulk Action

Automation Jobs | General

Automation: Search Console Activity

Integrations | Webhook — Automation Payloads

Automation: Search Console Keyword Movement

Integrations | Webhook — Automation Payloads

Auto Resolving

Insights | Managing Insights

Bar Chart Card

Reports | Chart Cards

Budget Campaign Dynamic Filter

Budget Tracking | General

Budget Common Errors

Budget Tracking | General

Budget history

Budget Tracking | General

Budgets Bulk Actions

Budget Tracking | General

Budget Settings

Budget Tracking | General

Budget Status

Budget Tracking | General

Budget Tracker Webhook Payload

Integrations | Webhook — Other

Budget Tracking

Budget Tracking | General

Budget Webhook URL

Budget Tracking | General

Bulk Action

Local Listings | General

Bulk Upload Images

Local Listings | Media

Calendar

Social Posts | General

Cancel Subscription

Settings | Account & Billing

Card Chat

Reports | Editing

Card Data Filters

Reports | Creating & Sharing

Categories

Local Listings | Categories & Services

Categories Bulk Action

Local Listings | Categories & Services

Category and Service List

Local Listings | Categories & Services

Change email address

Settings | Users

Client Filtering

Clients | General

Client Settings

Clients | General

Column Chart Card

Reports | Chart Cards

Comment notification settings

Settings | Notifications

Connect a data source

Data Sources | General

Connecting to Slack

Integrations | General

Connecting Zapier

Integrations | General

Connect to Google BigQuery

Data Sources | Connections

Connect to Google Sheets

Data Sources | Connections

Cover Photo Guide

Local Listings | Media

Create a Report

Reports | Creating & Sharing

Create Theme

Reports | Report Config

Creating a Card

Reports | Creating & Sharing

Creating a Client

Clients | General

Creating a Data Studio Report

Data Warehouse | Data Studio

Creating and configuring a KPI

KPI Forecasting | General

Creating a Pipeline

Data Warehouse | Pipelines

Creating a Social Post

Social Posts | Creating Posts

Creating Automation Jobs

Automation Jobs | General

Creating Social Posts with Liquid

Social Posts | Creating Posts

Custom Visualizations

Reports | Editing

Data Model

Data Sources | Fields & Formulas

Data Query

Reports | Chart Cards

Data Sources

Data Sources | General

Data Studio Parameters

Data Warehouse | Data Studio

Data Warehouse Access Control

Data Warehouse | Access & Credits

Data Warehouse Common Errors

Data Warehouse | Access & Credits

Data Warehouse Credits

Data Warehouse | Access & Credits

Delete or Archive Client

Clients | General

Deleting a User

Settings | Users

Difference between comments and notes

Settings | Comments & Notes

Disconnect Data Source Connection

Data Sources | General

Donut Chart Card

Reports | Chart Cards

Draft Posts

Social Posts | Managing Posts

Edit default Data Studio Report

Data Warehouse | Data Studio

Edit Email and Slack Notification

Settings | Notifications

Editing a Pipeline

Data Warehouse | Pipelines

Editing or Deleting a Comment

Settings | Comments & Notes

Email Notifications

Settings | Notifications

Email preferences

Settings | Notifications

Error Posts

Social Posts | Managing Posts

Execution Webhook

Data Warehouse | Pipelines

Facebook Ads Data Source Metrics

KPI Forecasting | Metrics by Source

Facebook Ads destination URL checker

Automation Jobs | URL & Page Checkers

Facebook Ads Fields

Data Warehouse | Source Fields

Facebook Ads KPI

KPI Forecasting | Metrics by Source

Fast Reply

Reviews | General

Filter Date Range

Reports | Report Config

Filter Dropdown List

Reports | Report Config

Formula

Data Sources | Fields & Formulas

Getting Started

Settings | FAQ

Google Account Connection

Data Sources | Connections

Google Account Not Connecting

Data Sources | Connections

Google Ads change history

Automation Jobs | Change History

Google Ads change history Insight

Insights | Change History

Google Ads Data Source Metrics

KPI Forecasting | Metrics by Source

Google Ads destination URL checker

Automation Jobs | URL & Page Checkers

Google Analytics change history

Automation Jobs | Change History

Google Analytics Data Source Metrics

KPI Forecasting | Metrics by Source

Google BigQuery Permissions

Data Warehouse | BigQuery

Google Business Profile Change History

Automation Jobs | Change History

Google Business Profile Data Source Metrics

KPI Forecasting | Metrics by Source

Google Business Profile Fields

Data Warehouse | Source Fields

Google Business Profile Listing Answers

Automation Jobs | Local & Reviews

Google Business Profile Listing Questions

Automation Jobs | Local & Reviews

Google Business Profile Pending Updates

Automation Jobs | Local & Reviews

Google Business Profile Reporting Timezone

Data Warehouse | Source Fields

Google Drive Account Connection

Data Sources | Connections

Google Review Change History

Automation Jobs | Change History

Google Review Change History Insight

Insights | Change History

Google Reviews

Automation Jobs | Local & Reviews

Google Reviews Insight

Insights | Local & Reviews

Google Search Console Configuration Options

Data Warehouse | Source Fields

Google Search Console Fields

Data Warehouse | Source Fields

Google Sheets for Budgets

Budget Tracking | General

Google Sheets format

KPI Forecasting | Settings & Status

Grant access to BigQuery data

Data Warehouse | Data Studio

History

Data Chat | General

How to add a comment

Settings | Comments & Notes

How to apply variables to your profiles

Local Listings | Profiles & Content

HTML Card

Reports | Content Cards

Image Card

Reports | Content Cards

Image Categories

Local Listings | Media

Insights

Insights | Managing Insights

Insights Bulk Actions

Insights | Managing Insights

Integrations

Integrations | General

Jepto MCP Server Overview

Integrations | MCP

KPI Campaign Dynamic Filter

KPI Forecasting | Settings & Status

KPI Common Errors

KPI Forecasting | Settings & Status

KPI Forecasting

KPI Forecasting | General

KPI Forecasting Webhook Payload

Integrations | Webhook — Other

KPI history

KPI Forecasting | Settings & Status

KPI Insight

Insights | Other Insight Types

KPIs Bulk Actions

KPI Forecasting | General

KPI Seasonal Trends

KPI Forecasting | Seasonality

KPI Status

KPI Forecasting | Settings & Status

KPI Yearly Seasonality

KPI Forecasting | Seasonality

Line Chart Card

Reports | Chart Cards

Local Listings Activity

Local Listings | Performance & Activity

Local Listings Performance

Local Listings | Performance & Activity

Local Profiles

Local Listings | Profiles & Content

Logo Photo Guide

Local Listings | Media

Make Authentication

Integrations | MCP

Managed BigQuery

Data Warehouse | BigQuery

Management - Data Studio Connector Fields

Data Warehouse | Data Studio

MCP Connector

Data Chat | General

Media

Local Listings | Media

Media Bulk Actions

Local Listings | Media

Media Description

Local Listings | Media

Media file requirements

Social Posts | General

Media file requirements

Local Listings | Media

Media Pacing

Local Listings | Media

Memories

Data Chat | General

Microsoft Ads Data Source Metrics

KPI Forecasting | Metrics by Source

Microsoft Ads destination URL checker

Automation Jobs | URL & Page Checkers

Number Chart Card

Reports | Chart Cards

Opening Hours Display

Local Listings | Profiles & Content

Overview

Data Chat | General

Page status checker

Automation Jobs | URL & Page Checkers

Page status checker Insight

Insights | URL & Page

Palettes

Reports | Report Config

Performance

Reviews | General

Pipeline Extensions

Data Warehouse | Pipelines

Platforms

Local Listings | General

Portfolio

Clients | General

Post Types

Social Posts | Creating Posts

Preview a Report

Reports | Creating & Sharing

Published Posts

Social Posts | Managing Posts

Questions and Answers

Local Listings | Profiles & Content

Refresh data source fields

Data Warehouse | Data Studio

Refresh Report Data

Reports | Report Config

Related Insights

Insights | Managing Insights

Removed Reviews

Reviews | General

Report Chat

Reports | Editing

Report Settings

Reports | Report Config

Resolve or Acknowledge via 3rd parties

Insights | Managing Insights

Review Activity

Reviews | General

Review Replies

Reviews | General

Review Reply AI Models

Reviews | General

Robots.txt change detection

Automation Jobs | URL & Page Checkers

Robots.txt change detection Warning

Automation Jobs | URL & Page Checkers

Rolling Average

KPI Forecasting | Settings & Status

Rules

Clients | General

Scatter Chart Card

Reports | Chart Cards

Scheduled Posts

Social Posts | Managing Posts

Search Console Activity

Automation Jobs | Search Console

Search Console Activity Insight

Insights | Other Insight Types

Search Console keyword movement

Automation Jobs | Search Console

Search Console keyword movement Insight

Insights | Other Insight Types

Search Keywords

Local Listings | General

Select a Client

Clients | General

Send a Report

Reports | Creating & Sharing

Sending Slack Notifications

Integrations | General

Services

Local Listings | Categories & Services

Services Bulk Action

Local Listings | Categories & Services

Settings

Settings | Account & Billing

Share a Report

Reports | Creating & Sharing

Social Posts

Social Posts | General

Submit a Ticket

Settings | FAQ

Subscribe or Update Plan

Settings | Account & Billing

Table Card

Reports | Content Cards

Template Data Sources

Data Sources | Fields & Formulas

Templates

Reports | Report Config

Text Card

Reports | Content Cards

Transfer ownership

Settings | Account & Billing

Unified Fields

Data Sources | Fields & Formulas

Unreplied Reviews

Reviews | General

Update Account Profile

Settings | Account & Billing

Update Client Profile

Clients | General

Update Data Studio Fields

Data Warehouse | Data Studio

Update user password

Settings | Users

Users

Settings | Users

UTM Tagging

Social Posts | General

Variables

Settings | Other

Visibility

Local Listings | Performance & Activity

Watchers

Settings | Comments & Notes

Webhook Logs

Integrations | Webhook — Other

Choose article...
Reports
|
Report Editing

Custom Visualizations


Custom Visualizations let you go beyond the form controls in a chart or table editor. On the Custom tab you edit Visualization overrides (JSON) — a partial config that Jepto deep-merges on top of its defaults when the card renders.

This is the same idea as Looker’s Chart Config Editor: keep the data query and common options in the UI, and use JSON only for advanced formatting Highcharts (charts) or table presentation options that the forms don’t expose.

Overview

  • Available on chart and table cards under Settings → Custom.
  • Charts: JSON is Highcharts-style options stored on the card as visualization overrides.
  • Tables: JSON shapes table presentation (columns, rendering, sorting UI, etc.) — not Highcharts.
  • The editor shows {} when nothing is customized yet.
  • Turn Custom Chart Override off to make the JSON read-only (charts).

Prefer Chart / Table / Palette for everyday changes. Use Custom when you need options those tabs don’t cover (tooltips, plot bands, line dash styles, fine axis styling, and similar).

When to use Custom

  • Metrics, dimensions, dates, filtersData tab (Data Query)
  • Chart type, common chart optionsChart tab
  • Table pagination, sorting UI, column displayTable tab
  • Series colors / report palettePalette tab (Palettes)
  • Title, subtitle, card chromeCard tab
  • Fast natural-language rewrite of the cardAI Edit / Card Chat
  • Advanced formatting not in the formsCustom (this article)

Custom does not replace the data query. It only overrides how the result is drawn.

How to edit

  1. Open a chart or table card in a report (Creating a Card).
  2. Switch to Settings (not AI Edit).
  3. Open the Custom tab.
  4. On charts, leave Custom Chart Override on.
  5. Edit the Visualization overrides (JSON) editor. Start from {} or extend what is already there.
  6. Watch Card Preview update when the JSON is valid.
  7. Fix any JSON error message before leaving — invalid JSON is not applied (preview keeps the last good config).
  8. Save / leave the editor when the preview looks right.

Tips while editing:

  • Only include keys you intend to change. Jepto stores overrides, not a full chart dump.
  • After large Chart-tab changes, re-open Custom and confirm your JSON still matches what you want.
  • Changing chart type resets visualization overrides to {} — Custom JSON for the old type is cleared.

Merge order

When Jepto draws a chart, it deep-merges layers so later layers win on the same property path:

  1. Jepto defaults — built-in options for that chart type (or table defaults).
  2. Form settings — options from Chart / Table / Palette (and related form-driven visualization patches).
  3. Custom tab JSON — the visualization overrides you type on Custom.

Series data still comes from the card’s data query result. Custom should style the chart; it should not try to invent the query.

How layers combine (later wins)

1. Jepto defaults
Chart-type or table built-ins
↓ deep merge
2. Form settings
Chart / Table / Palette (and form-driven visualization patches)
↓ deep merge
3. Custom tab JSON
Visualization overrides you type on Custom
Rendered chart or table
Series values still come from the Data query

Charts vs tables

Charts

  • Custom JSON is merged with Highcharts options at render time (Highcharts.merge).
  • Good candidates: chart, plot title/subtitle, tooltip, legend, xAxis / yAxis, plotOptions, caption, annotations, and per-series style keys (for example dashStyle, lineWidth) when you know the series index.
  • Prefer the Palette tab for colors when possible. Palette changes can strip stale colors overrides from visualization so theme/palette stay consistent (Create Theme).

Tables

  • Custom edits the same visualization object the Table tab uses (pagination, sorting UI, column widths, cell formats, rendering flags).
  • Prefer the Table tab for everyday toggles; use Custom for shapes the form doesn’t expose.
  • Column overrides should use stable field ids that match your Data Query metrics/dimensions.

Important limits

  • Invalid JSON — shown inline; Jepto does not apply the broken draft.
  • Chart type change — visualization resets to {}.
  • Arrays replace, they do not deep-merge — an empty series: [] in Custom can wipe plotted series. Prefer plotOptions or series entries without replacing data.
  • Don’t put query fields in Custom — metrics and dimensions belong on Data.
  • Functions / dates / undefined — use plain JSON only (strings, numbers, booleans, objects, arrays). No JavaScript functions in the editor.
  • Undo — use the editor undo control if a Custom edit goes wrong.

Full Highcharts option reference: Highcharts API.

Examples

These snippets are starting points. Test each one on a real chart or table in your account before relying on them in client reports. Exact keys can differ by chart type.

Chart — background and axis label color

{
  "chart": {
    "backgroundColor": "#f7f7f9"
  },
  "xAxis": {
    "labels": {
      "style": {
        "color": "#334155"
      }
    }
  },
  "yAxis": {
    "labels": {
      "style": {
        "color": "#334155"
      }
    }
  }
}

Chart — tooltip styling

{
  "tooltip": {
    "backgroundColor": "#0f172a",
    "style": {
      "color": "#f8fafc"
    }
  }
}

Chart — thicker dashed lines (all series via plotOptions)

{
  "plotOptions": {
    "series": {
      "lineWidth": 3,
      "dashStyle": "Dash"
    }
  }
}

Chart — caption under the plot

{
  "caption": {
    "text": "Source: connected client data. Values refresh with the report date range."
  }
}

Table — keep row heights strict (example)

{
  "rendering": {
    "rows": {
      "strictHeights": true
    }
  }
}

If a snippet does nothing, the chart type may ignore that option, or a form/palette setting may be overriding the same path — check merge order above and simplify the JSON to one key at a time.

How merge works (technical)

This section is for advanced users who need to reason about conflicts between form tabs and Custom.

What is stored

Jepto persists visualization as a diff from defaults, not a full Highcharts options object. Empty customization is {}.

Both the Chart (or Table) form and the Custom JSON editor write into that same field. Saving from either path merges into the card config; the preview then re-renders.

Render-time merge (charts)

At display time, chart components roughly do:

  1. Start from chart-type defaults (+ runtime component options such as live series data).
  2. Deep-merge cardConfig.visualization (your form + Custom overrides).
  3. Apply palette / theme color policy where relevant.

Jepto uses Highcharts’ deep merge. Nested objects combine; arrays are replaced as a whole. That is why an empty series array in Custom is dangerous.

Form vs Custom

  • Chart tab maps form fields → partial Highcharts → strips down to overrides vs type defaults → patches visualization.
  • Custom tab parses JSON and patches visualization directly.
  • Palette tab updates palette and may remove color keys from visualization so palette remains the source of truth for series colors.
  • AI / Card Chat can also patch visualization (and may delete keys with null in AI patches).

Practical rules

  1. Put everyday options in forms; keep Custom lean.
  2. Avoid copying full exported Highcharts configs into Custom — prefer the smallest override that achieves the look.
  3. After changing chart type, rebuild Custom from scratch for the new type.
  4. If preview blanks out after a Custom edit, clear series from your JSON (or remove the whole draft) and undo.
Related Articles
Was this article helpful?
Nice one!

Thanks a lot for your feedback! If you’d like a member of our support team to respond to you, please send a message here

Please try again

Oops! Something went wrong while submitting the form.

Sorry about that. What did you find most unhelpful?
Nice one!

Thanks a lot for your feedback! If you’d like a member of our support team to respond to you, please send a message here

Please try again

Oops! Something went wrong while submitting the form.