Outcome
By the end of this lesson, you will be able to clone a preset, customize it for org-specific needs, and reason about the org-shared (not per-user) dashboard model and its limits.
| Prerequisites | M4.7.L1: Four presets |
| Time | 9 minutes |
1. Concept
The four presets cannot be changed, so you copy one and change the copy.
The original stays where it is, which matters more than it sounds: when ZopNight improves a preset, you can take a fresh copy and compare, rather than having lost the starting point.
WORKFLOW: 1. View preset (Executive / Engineering / FinOps / All Widgets) 2. Click "Clone" → creates a new saved dashboard 3. Modify the clone: - Add widgets from the registry - Remove widgets that don't apply - Reorder widgets via drag-and-drop - Pick widget size (Wide / Standard / Compact) 4. Save with a meaningful name 5. Optionally set as org defaultWhy clone vs edit-in-place
The clone pattern decouples customer customization from preset evolution:
PRESETS are versioned by ZopNight: As new widgets ship, presets may be updated to include them Changes to a preset's widget list, order or sizes apply to everyone viewing the preset
CUSTOMER CLONES are static: They reflect the customer's specific layout decisions Don't auto-update when ZopNight updates the preset Customer can re-clone the latest preset and re-apply changes if they want to pick up updatesThis means a customer cloning the FinOps preset today gets a snapshot. If ZopNight updates the FinOps preset next year to add a new widget, the customer’s clone does not change. They can re-clone the latest preset to see the new layout, then choose whether to migrate.
Customization options
ON A CLONED DASHBOARD (V1): Add widgets from the registry (13 widget types) Remove widgets Reorder via drag-and-drop Pick widget size: Wide (full row) / Standard (half row) / Compact Rename the dashboard Set as org default Delete the dashboard (with confirmation)
NOT YET CUSTOMIZABLE (V1): Free-form grid resize (only standard sizes) Per-user dashboard customization (org-shared only) Cross-dashboard linking (no drill-through) Custom widget creation (only selection from registry) Themed colors or brandingThe V1 scope is deliberately bounded. Cloning + modify gets most customers what they need.
Org-specific patterns
PATTERN A: Single org dashboard Clone "FinOps" preset Modify to remove widgets the org doesn't use Add team-specific widgets if relevant Set as org default All users land on this one dashboard
Best for: small to mid-size orgs with one cost-discipline focus
PATTERN B: Multiple persona dashboards Clone "Executive" → save as "Leadership Review"; org default Clone "Engineering" → save as "Platform Engineering" Clone "FinOps" → save as "FinOps Operations" Each persona has their own; users bookmark theirs
Best for: mid-to-large orgs with distinct audiences
PATTERN C: Per-team views Clone a preset once per team, keeping the widgets that team reads Save each as "<Team> Daily"; share its /dashboard/<id> link The org still has ONE default; teams reach theirs by link or the header switcher
Best for: large orgs with strong team boundariesPattern A is the most common. Pattern B emerges as orgs mature. Pattern C is for very large orgs.
Sharing dashboards
Dashboards in V1 are org-shared: anyone in the org can view any saved dashboard. There is no per-user private dashboard.
WHAT A USER CAN DO: - View any saved dashboard in the org - Set the org default (with dashboard:update: Admin or Editor) - Bookmark any dashboard's /dashboard/<id> URL in their browser - Switch between dashboards via the header switcher
WHAT A USER CANNOT DO (V1): - Create a private dashboard not visible to others - Customize a dashboard for themselves only - Hide a dashboard from specific usersBrowser bookmarks and the switcher give per-user flexibility on top of the org-shared dashboards. There is no per-user or per-team default: /dashboard always opens the org’s single default, and a bookmarked /dashboard/<id> link opens that specific dashboard.
Limits
PER-ORG CAPS: Dashboards: 50 Widgets per dashboard: 50 Per-widget config: 4 KiB (ceiling for any single widget's config) Total layout: 64 KiB (ceiling for the whole serialized layout)
ENFORCEMENT: Hard limits, checked when you save No early warning: the 51st dashboard is refused with a DASHBOARD_LIMIT_EXCEEDED error; delete one, then save
WHY THESE LIMITS: Performance: too many widgets means slow page loads Cognitive: too many dashboards means no one knows which to use Storage: bounded per-org footprintThe 4 KiB and 64 KiB caps are two independent ceilings, not a budget you multiply out. The 4 KiB bounds any single widget’s config; the 64 KiB bounds the serialized layout as a whole. They are not meant to be composed (50 × 4 KiB = 200 KiB would exceed 64 KiB); today’s widgets carry no settings of their own, so a full 50-widget dashboard stays comfortably inside the 64 KiB total. In practice whichever ceiling you hit first is the binding one.
Most customers do not approach these limits. If you do, consolidate: multiple 30-widget dashboards are usually two or three well-designed dashboards.
No per-widget settings
Widgets have no per-widget settings. There is no time-range, team filter or currency option to set on a widget; each one shows the data its viewer is allowed to see, the same way on every dashboard.
WHAT YOU CAN SET PER WIDGET: Which widgets are on the dashboard Their order Their size (Wide / Standard / Compact, where the widget allows it)
WHAT YOU CANNOT SET: Time range, team filter, currency or any other widget option
CONSEQUENCE: The same widget type can appear only once per dashboard: a second copy would render identically, so the widget picker disables itThis is why per-team views (Pattern C) differ by which widgets they carry, not by filters. For one team’s numbers, use the Teams tab of the Cost reports widget or the Cost Reports page.
Cross-references between dashboards
V1 LIMITATION: Dashboards do not link to each other directly.
WORKAROUND: Save bookmarks in a team wiki: - "FinOps daily review" → /dashboard/<id> - "Platform engineering" → /dashboard/<id> - "Executive monthly" → /dashboard/<id>
Users navigate via URLs; switcher in header for in-product navigation.This is a known gap. Future versions may support drill-through.
How ZopNight uses cloning
The dashboard backend stores each saved dashboard as a row in dashboards with a layout column containing the widget arrangement. Cloning copies the preset’s layout and assigns a new UUID. Modifications update the layout in-place. The org’s default dashboard is a value under the default_dashboard key in org_settings, not a foreign key.
For admin troubleshooting, the dashboard’s layout is browsable in the API, which lets support reproduce a customer’s view without needing UI access.
2. Demo
A team’s customization workflow:
TEAM: platform-engineering (8 engineers)GOAL: Start from FinOps preset; customize for daily engineering use
T+0 Admin opens Dashboards page Finds the FinOps preset card
T+10 s Uses the card's Clone action A new dashboard opens with the preset's eight widgets Names it "Platform Eng Daily"
T+30 s Reviews current widgets: ✓ Key metrics Keep ✓ Cost trend Keep (anomaly markers surface here) ✓ Cost reports Keep (Teams tab shows the platform team) ✗ Budget health Remove (FinOps owns it) ✓ Top costly resources Keep ✗ Cost saving opportunities Remove (too long for a daily glance) ✓ Schedule activity Keep ✓ Scheduler success rate Keep
T+1 min Adds a widget: + Quick insights (the same open recommendations as compact cards, in place of the full list)
T+1:30 Sets sizes: Top costly resources: Standard (half row) Quick insights: Compact (no per-widget filters to set; widgets have none)
T+2 min Reorders the slots: 1. Cost trend (top: spend plus anomaly markers) 2. Schedule activity (what ran, what is next) 3. Scheduler success rate (paired beside it) 4. Top costly resources (today's biggest line items) 5. Quick insights (action items) 6. Key metrics 7. Cost reports
There is no Sankey widget, no unit-economics widget and noanomaly widget to add here: cost flow has its own page underCosts → Flow, unit economics has its own page under Costs, and anomaliesappear as markers on the Cost trend widget.
T+2:30 Saves
T+3 min Does NOT set it as org default: that would move everyone in the org, not just the platform team. Shares the /dashboard/<id> link in the team channel; engineers bookmark it
TOTAL ELAPSED: 3 minutes from preset to customized, saved and sharedThe team now has a dashboard that exactly matches their daily workflow.
3. Hands-on (5 min)
Clone and customize a preset:
SELECTED PRESET to clone: __________
CLONE NAME: __________ (descriptive, your-team-specific)
WIDGETS TO REMOVE (not relevant to your audience): □ __________ □ __________ □ __________
WIDGETS TO ADD (from registry): □ __________ □ __________ □ __________
SIZE CHANGES (Wide / Standard / Compact): Widget: __________ Size: __________ Widget: __________ Size: __________
REORDER PRIORITY (top to bottom): 1. __________ 2. __________ 3. __________
SET AS ORG DEFAULT? Yes / No (why?)If you can’t finish this exercise in 5 minutes, the preset was close to your needs. That’s a healthy sign: the presets are designed to be close to common needs.
Do it through MCP. The same task you just did in the console, asked in one sentence.
BEFORE A ZopNight account with one cloud connected. A preset dashboard visible in your org.ASK "Clone the FinOps dashboard as Data Team Daily and make it the org default."CHECK widget-level access afterwards. A cloned dashboard can show more than its audience should see, which is L3.Tools behind it: list_dashboards (read, Explore), create_dashboard (write, tier 1, metadata only), set_default_dashboard (write, tier 1, metadata only). Connection details are in the MCP integration docs.
4. Knowledge check
Q1
A team wants to remove “Top costly resources” from the FinOps preset:
A. Edit the shipped FinOps preset in place, directly for the org
B. File a feature request and wait for the change to ship
C. Clone the preset first; modify the clone; save under a new name
D. It cannot be done at all, since the presets are fixed
Show answer
Correct: C. Presets are immutable templates that can be re-cloned from the latest version; clones are the customer’s customization surface. This pattern lets ZopNight update presets without breaking customer dashboards. Clone, then modify. The pattern is fundamental to dashboard architecture.
Q2
Per-user dashboard customization:
A. Supported in V1 today
B. NOT supported in V1
C. Per-team only, in V1
D. Per-role only, in V1
Show answer
Correct: B. Dashboards are org-shared. Users can bookmark a dashboard’s link in their browser and switch via the header switcher, but cannot create private dashboards or set a personal default. There is one org default and no per-team default either.
Q3
Per-org dashboard limits:
A. Unlimited dashboards per organisation, with no cap of any kind at all imposed
B. Ten dashboards per organisation, and never any more than that
C. 50 dashboards, 50 widgets per dashboard, 4 KiB per widget config, 64 KiB total layout
D. Per-tier limits, so the enterprise plans get more of them than others
Show answer
Correct: C. These are hard limits checked at save time, with no early warning: going over returns an error. The limits protect performance and prevent dashboard proliferation. Consolidation, not expansion, is the answer when approaching them.
5. Apply
Clone presets at Dashboards using the Clone action on the preset’s card. The editor supports adding and removing widgets, drag-and-drop ordering and the three sizes; set the org default from the dashboard’s card once it is saved.
For team-specific customizations, develop a naming convention (e.g., “Platform Eng Daily,” “FinOps Monthly Review”) so users can identify dashboards by purpose.
Related lessons
- L1: Four presets
- L3: Per-widget RBAC (next)
- L4: Default dashboard governance
- T4.M4.1.L6: Frontend gating with usePermission