1"use strict";(self.webpackChunkholistics_docs=self.webpackChunkholistics_docs||[]).push([["21083"],{64181(e,t,o){o.r(t),o.d(t,{metadata:()=>s,default:()=>E,frontMatter:()=>O,contentTitle:()=>I,toc:()=>_,assets:()=>U});var s=JSON.parse('{"id":"docs/guides/end-users-v1","title":"End Users Handbook (v1)","description":"Everything a business user can do in Holistics: find answers with AI, explore dashboards, build reports, and collaborate with your data team.","source":"@site/docs/docs/guides/end-users-v1.mdx","sourceDirName":"docs/guides","slug":"/docs/guides/end-users-v1","permalink":"/docs/guides/end-users-v1","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"End Users Handbook (v1)","sidebar_label":"End Users Handbook (v1)","description":"Everything a business user can do in Holistics: find answers with AI, explore dashboards, build reports, and collaborate with your data team."}}'),i=o(74848),a=o(28453),r=o(96540),n=o(20053);let l=[{id:"a",title:"Getting Answers Quickly",slug:"getting-answers-quickly",blurb:"Instead of hunting through dashboards, ask a question in plain language. Holistics surfaces trusted dashboards, charts, and answers, and can explain how to use the platform as you go.",pages:[{title:"Start with Ask AI",slug:"start-with-ask-ai",outcome:"Ask a business question and get a trusted chart or dashboard back.",time:"2 min",audience:"First-time users",media:{type:"video",src:"https://cdn.holistics.io/product/ai-explore-data-20260401-857.mp4"},steps:["Open Ask AI.","Type your question in plain language.","Review the suggested chart or dashboard.","Open the related report to explore further."],docUrl:"https://docs.holistics.io/docs/ai/capabilities#explore-data"},{title:"Share an Ask AI Conversation",slug:"share-an-ask-ai-conversation",outcome:"Send an AI-assisted analysis to a colleague with a link.",time:"2 min",audience:"Collaborators",media:{type:"video",src:"https://cdn.holistics.io/product/ai-chat-history-20260414-872.mp4"},steps:["Open the conversation.","Copy the share link.","Send it to teammates inside your company."],note:"Conversations are retained for a limited time, so save important charts to a dashboard.",docUrl:"https://docs.holistics.io/docs/ai/chat-history#manage-your-chats"},{title:"Ask Follow-Up Questions",slug:"ask-follow-up-questions",outcome:"Clarify a metric, trend, or spike from the chart itself.",time:"2 min",audience:"All users",media:{type:"video",src:"https://cdn.holistics.io/product/ai-get-chart-insights-20260401-859.mp4"},steps:["Open the chart or AI result.","Open the AI side panel.","Ask your follow-up question.","Read the explanation."],docUrl:"https://docs.holistics.io/docs/ai/capabilities#get-explanations-or-insights"},{title:"Summarize a Dashboard with AI",slug:"summarize-a-dashboard-with-ai",outcome:"Get a plain-language summary of what a dashboard is showing.",time:"3 min",audience:"All users",media:{type:"video",src:"https://cdn.holistics.io/product/ai-summarize-dashboards-20260401-860.mp4"},steps:["Open a dashboard.","Select the widgets you care about.","Ask AI to summarize them.","Review the summary."],docUrl:"https://docs.holistics.io/docs/ai/capabilities#summarize-dashboards"},{title:"Ask AI Across Widgets with Your Org's Context",slug:"ask-ai-across-widgets-with-your-org-s-context",outcome:"Select several widgets, ask one question across them, and get an answer shaped by your organization's own context and preferences, not generic guesses.",time:"3 min",audience:"All users",media:{type:"video",src:"https://media.holistics.io/c363bc52-ai-insights-multiple-widgets-custom-context.mp4"},steps:["Open a dashboard and select the widgets you want to analyze together.","Ask AI a question that spans those widgets.","AI answers using your organization's custom context, terminology, and response preferences.","Review the insight and ask follow-ups to go deeper."],note:"Your data team curates the organization context \u2014 business background, terminology, and how answers should be phrased \u2014 so AI responds in your company's language and conventions. Enriching this context is the most effective way to get more accurate answers.",docUrl:"https://docs.holistics.io/docs/ai/context/overview"},{title:"Interact with AI-Generated Charts",slug:"interact-with-ai-generated-charts",outcome:"Hover, filter, and drill into an AI result instead of reading a static chart.",time:"3 min",audie
1nce:"All users",media:{type:"video",src:"https://cdn.holistics.io/product/ai-visualize-data-20260401-856.mp4"},steps:["Review the AI-generated chart.","Hover or click to inspect values.","Open the report.","Filter or drill into the data."],docUrl:"https://docs.holistics.io/docs/ai/capabilities#visualize-data"},{title:"Use Holistics from Your Own AI Interface",slug:"use-holistics-from-your-own-ai-interface",outcome:"Connect Holistics to your chat or command-line tools via MCP.",time:"4 min",audience:"Teams with IT support",media:{type:"video",src:"https://cdn.holistics.io/product/ai-mcp-claude-desktop-20250910-805.mp4"},steps:["Identify the internal AI interface you want answers in.","Ask your data or IT team whether Holistics can be connected.","Define what types of questions to support.","Test responses with governed data access."],docUrl:"https://docs.holistics.io/docs/ai/mcp-server#how-to-connect"}]},{id:"b",title:"Exploring Dashboards & Reports",slug:"exploring-dashboards-and-reports",blurb:"Go beyond a static answer. Filter, cross-filter, and slice a dashboard down to the view you need.",pages:[{title:"Filter a Dashboard or Report",slug:"filter-a-dashboard-or-report",outcome:"Narrow results by time, region, segment, or product, even by hidden fields.",time:"3 min",audience:"All users",media:{type:"video",src:"https://media.holistics.io/873af963-Dashboard-Filter---Docs---Latest-v2.mp4"},steps:["Open a dashboard or report.","Add or edit a filter.","Pick the field and value.","Apply and review the result."],docUrl:"https://docs.holistics.io/docs/filter-data#filter-a-single-visualization"},{title:"Filter by a Relative Date or Time",slug:"filter-by-a-relative-date-or-time",outcome:"Filter on moving windows like the last 7 days, this month, or year to date. The view stays current without editing the date each time.",time:"3 min",audience:"All users",media:{type:"video",src:"https://media.holistics.io/67ac967e-filter-relative-time-expression.mp4"},steps:["Open a dashboard or report and add or edit a date filter.","Choose a relative option such as last N days, this month, or year to date.","Set the unit and range for the window.","Apply and review the result, which updates automatically as time moves on."],docUrl:"https://docs.holistics.io/docs/datetimes/relative-dates#relative-time-expressions"},{title:"Cross-Filter a Dashboard",slug:"cross-filter-a-dashboard",outcome:"Click a chart to filter every related chart on the dashboard at once.",time:"3 min",audience:"All users",media:{type:"video",src:"https://cdn.holistics.io/docs/v3/cross-filtering/cross-filtering-demo-official.mp4"},steps:["Open a dashboard with cross-filtering enabled.","Click a value or segment in any chart.","Watch the other charts filter to match.","Click again to clear the cross-filter."],note:"Cross-filtering is turned on by your data team when building the dashboard.",docUrl:"https://docs.holistics.io/docs/cross-filtering#how-to-use-cross-filtering"},{title:"Filter to Top or Bottom N",slug:"filter-to-top-or-bottom-n",outcome:"Show only the highest or lowest N records, applied after your other filters.",time:"3 min",audience:"All users",media:{type:"video",src:"https://cdn.holistics.io/docs/v3/filter-top-n/doc-filter-top-n-demo.mp4"},steps:["Open a report in exploration mode.","Add a top/bottom N filter on the metric.","Set N and the ranking direction.","Apply and review the ranked result."],docUrl:"https://docs.holistics.io/docs/top-bottom-n-filter#solution-in-holistics"},{title:"Drill Through to Another Dashboard",slug:"drill-through-to-another-dashboard",outcome:"Jump from a summary view to a related detail dashboard.",time:"3 min",audience:"All users",media:{type:"video",src:"https://cdn.holistics.io/product/reporting-drill-through-overview-20240904-244.mp4"},steps:["Click the metric, row, or record.","Pick the drill-through destination.","Continue analysis in the destination dashboard."],note:"This usually requires your data team to set up the workflow first.",docUrl:"https://docs.holistics.io/docs/interactions/drill-through#use-drill-through-from-the-source-dashboard"},{title:"Refresh Data to the Latest",slug:"refresh-data-to-the-latest",outcome:"Pull the newest numbers when data has been added since the dashboard last loaded. Refresh a whole dashboard or a single widget on demand.",time:"2 min",audie
1nce:"All users",media:{type:"video",src:"https://media.holistics.io/d8c85aca-cache-refresh-dashboard-and-widget.mp4"},steps:["Click Refresh to see when the results were last cached.","To refresh everything, choose Refresh Now next to the dashboard title.","To refresh just one chart, open the widget's more-options menu and refresh it.","Wait for the query to rerun and the latest numbers to load."],note:"Holistics caches query results for speed, so a dashboard may show data from its last run rather than this moment. Refreshing reruns the query against the warehouse. To limit load on the database, refresh is usually available to admins and dashboard owners.",docUrl:"https://docs.holistics.io/docs/performance/data-caching#forcing-reload-from-the-database"},{title:"KPI Metric Sheets",slug:"kpi-metric-sheets",outcome:"See the same set of key KPIs side by side across different time aggregations (day, week, month, quarter, year) in one compact view that updates automatically.",time:"3 min",audience:"Executives",media:{type:"video",src:"https://media.holistics.io/a10fcd55-metrics-sheet.mp4"},steps:["Open a dashboard with a metric sheet, or add one from the chart selector.","Pick the KPIs you want to track in a single view.","Choose the time aggregations to compare across, such as month, quarter, and year.","Read the latest numbers, which refresh automatically as new data lands."],note:"A metric sheet is
1ideal for executive scorecards. It gives one consistent set of KPIs, reviewed across time periods without rebuilding the view.",docUrl:"https://docs.holistics.io/docs/charts/metric-sheets"},{title:"Understand the Context Behind Your Data",slug:"understand-the-context-behind-your-data",outcome:"See what each metric and field actually means, straight from the definitions your BI team maintains, so you read every number with the right context.",time:"3 min",audience:"All users",media:{type:"video",src:"https://media.holistics.io/054af522-understand-context-of-your-data.mp4"},steps:["Open a dashboard and hover the info icon on any widget to read its definition.","Review the metric's meaning and context, written by the BI team.","Open a dataset to build your own report and see the same definitions inline.","Rely on these centralized definitions to interpret every number consistently."],note:"Definitions are authored once by the BI team in the backend and exposed live wherever you consume data, on dashboard widgets and in datasets. That keeps everyone on the same source of truth.",docUrl:"https://community.holistics.io/t/build-your-data-catalog-right-in-the-dashboard/2508"}]},{id:"e",title:"Uncover the Who and Why Behind a Number",slug:"uncover-the-who-and-why-behind-a-number",blurb:"Drill into any number until a pattern jumps out, then open the records behind the spike to see the actual customers and orders. In Holistics every metric works this way by default, with no drill paths to pre-build.",pages:[{title:"Drill Down into a Metric",slug:"drill-down-into-a-metric",outcome:"Slice a number open dimension by dimension, until the pattern driving it stands out.",time:"3 min",audience:"All users",media:{type:"video",src:"https://cdn.holistics.io/product/reporting-dd-bd-cf-20250612-783.mp4"},steps:["Click a metric or chart segment.","Choose a drill-down dimension.","Review the breakdown.","Keep drilling as needed."],note:"Drill as deep as the question needs, across every dimension in the dataset.",docUrl:"https://docs.holistics.io/docs/interactions/drill-down#drill-down"},{title:"View Underlying Data",slug:"view-underlying-data",outcome:"See the exact records behind a number, so a spike becomes the named customers or orders that caused it.",time:"3 min",audience:"All users",media:{type:"video",src:"https://cdn.holistics.io/product/reporting-view-underlying-data-20250411-746.mp4"},steps:["Click the metric or chart element.",'Choose "view underlying data".',"Inspect the record-level table.","Export only if permitted."],note:"Works on any metric, because the semantic layer already maps each number back to its rows.",docUrl:"https://docs.holistics.io/docs/interactions/view-underlying-data#introduction"}]},{id:"c",title:"Creating & Saving Your Own Analysis",slug:"creating-and-saving-your-own-analysis",blurb:"Safe self-service. Customize, save, and share your own analysis without touching official dashboards.",pages:[{title:"Explore a Report",slug:"explore-a-report",outcome:"Adjust dimensions and measures for your own analysis.",time:"4 min",audience:"Self-service users",media:{type:"image",src:"https://cdn.holistics.io/docs/readme/319316e-ExploreEverywhere_Explorer.gif"},steps:["Open the report.","Enter exploration mode.","Add or remove fields.","Save to your personal workspace if useful."],docUrl:"https://docs.holistics.io/docs/data-exploration#explore-with-datasets"},{title:"Share a Live Exploration Link",slug:"share-a-live-exploration-link",outcome:"Share your exploration without saving it first. The URL updates as you tweak fields, and a colleague opens the exact view you're looking at.",time:"2 min",audience:"All users",media:{type:"video",src:"https://media.holistics.io/2b1e2e5c-explore-links.mp4"},steps:["Open a report and enter exploration mode.","Add, edit, or remove fields and filters. The URL updates as you go.","Copy the URL straight from your browser.","Send it to a teammate so they open the same view."],note:"No save required. The link respects permissions, so teammates only see it if they already have access to the underlying data. Handy for collaboration, getting a second opinion, or troubleshooting a number together.",docUrl:"https://docs.holistics.io/docs/share-data-exploration"},{title:"Create a Dashboard from a Dataset",slug:"create-a-dashboard-from-a-dataset",outcome:"Spin up a brand-new dashboard straight from a dataset you already have access to.",time:"3 min",audie
1nce:"Self-service users",media:{type:"video",src:"https://media.holistics.io/0148ebcc-create-dashboard-from-dataset.mp4"},steps:["Open a dataset you have access to.","Create a new dashboard from it.","Add the fields and charts you want to show.","Save the dashboard to your workspace."]},{title:"Get to Know Canvas Dashboards",slug:"get-to-know-canvas-dashboards",outcome:"Learn the building blocks, and place filters and content anywhere you like.",time:"3 min",audience:"All users",media:{type:"image",src:"https://cdn.holistics.io/canvas/canvas-dashboard-thumbnail.png"},steps:["Open a canvas dashboard.","Learn the key parts: visualization blocks, text blocks, and filters.","Drag components anywhere on the canvas.","Place filters anywhere on the canvas, not only at the top."],note:"Unlike fixed dashboards, a canvas dashboard lets you position filters anywhere on the page, not only across the top.",docUrl:"https://docs.holistics.io/docs/dashboards/#dashboard-components"},{title:"Find Your Way Around the Visualization Interface",slug:"find-your-way-around-the-visualization-interface",outcome:"Know where the chart selector, Configure panel, and toolbar actions live.",time:"3 min",audience:"All users",media:{type:"video",src:"https://media.holistics.io/7c86b1af-bi-guide-viz-interface.mp4"},steps:["Pick a chart type from the chart selector.","Open the Configure panel to set fields and options.","Use the toolbar for Analyze, Ask AI, filters, and sort.","Run to preview your result."],docUrl:"https://docs.holistics.io/docs/data-exploration#explore-with-datasets"},{title:"Customize Your Dashboard Editor",slug:"customize-your-dashboard-editor",outcome:"Set your default layout preferences for the editor, like whether widgets can overlap and how content is trimmed, so every dashboard you build starts the way you lay things out.",time:"3 min",audience:"Self-service users",media:{type:"video",src:"https://media.holistics.io/ff934d69-Layout-Assist-vid.mp4"},steps:["Open a dashboard in edit mode.","Open the editing preferences in the authoring panel.","Set defaults like widget overlap and content trimming.","Save so the editor opens the way you like next time."],docUrl:"https://docs.holistics.io/docs/dashboards/settings#layout-settings"},{title:"Save to Personal Workspace",slug:"save-to-personal-workspace",outcome:"Keep your own version of an analysis, privately.",time:"2 min",audience:"Self-service users",media:{type:"image",src:"https://cdn.holistics.io/docs/readme/0edabc4-copy_to_private.gif"},steps:["Finish your exploration.","Click save.","Choose your personal workspace.","Name the report clearly."],docUrl:"https://docs.holistics.io/docs/workspaces#personal-workspace-old-private-workspace"},{title:"Share a Report Internally",slug:"share-a-report-internally",outcome:"Let teammates see your saved analysis with the right access.",time:"3 min",audience:"Collaborators",media:{type:"image",src:"https://res.cloudinary.com/holistics/image/upload/v1586849175/1_rptfa6.gif"},steps:["Open the saved report.","Click share.","Choose users or groups.","Confirm the access settings."],note:"Check with your data team if you are unsure whether a report should be shared broadly.",docUrl:"https://docs.holistics.io/docs/permission-system#dashboard-level-permission"},{title:"Auto-Sync a Report to Google Sheets",slug:"auto-sync-a-report-to-google-sheets",outcome:"Keep a Google Sheet in step with a Holistics report, refreshed on a schedule, so the numbers your team works with in Sheets are always current.",time:"3 min",audience:"All users",media:{type:"video",src:"https://media.holistics.io/c2e20e6f-google-sheets-sync.mp4"},steps:["Open the report or dashboard you want to sync.","Set up a Google Sheets schedule and connect your Google account.","Pick the destination sheet and how often it should refresh.","Save, then check that the sheet updates on schedule."],note:"Each run overwrites the sheet with the latest data, so downstream formulas and pivots stay live. Setting up the Google connection may need your data team's help the first time.",docUrl:"https://docs.holistics.io/docs/delivery/google-sheets#set-up-google-sheets-schedules"},{title:"Export to CSV or Excel",slug:"export-to-csv-or-excel",outcome:"Continue analysis offline, where permitted.",time:"2 min",audie
1nce:"All users",media:{type:"video",src:"https://cdn.holistics.io/docs/data-delivery/export-email.mp4"},steps:["Open the report.","Click export.","Choose CSV or Excel.","Download the file."],note:"Export permissions may be controlled by your data team.",docUrl:"https://docs.holistics.io/docs/delivery/export-data#export-to-a-local-file"}]},{id:"f",title:"Build Calculations, Conditions & Analytic Functions",slug:"build-calculations-conditions-and-analytic-functions",blurb:"Add calculated fields with a point-and-click builder or with AI, layer in advanced filter conditions, apply prebuilt analytic functions like period-over-period and trend lines, or package a repeatable analysis as a governed AI skill.",pages:[{title:"Create Advanced Nested Conditions",slug:"create-advanced-nested-conditions",outcome:"Combine AND/OR grouped filters without SQL.",time:"5 min",audience:"Power users",media:{type:"video",src:"https://cdn.holistics.io/docs/best-practices-dataset/condition_group.mp4"},steps:["Open a report in exploration mode.","Add a filter condition.","Group conditions together.","Combine AND and OR logic, then apply."],docUrl:"https://docs.holistics.io/docs/filter-with-condition-group"},{title:"Create Period-over-Period Comparisons",slug:"create-period-over-period-comparisons",outcome:"Compare current vs previous period in a few clicks.",time:"4 min",audience:"Self-service users",media:{type:"video",src:"https://cdn.holistics.io/product/reporting-aqlpopdemo-20250203-577.mp4"},steps:["Open a report in exploration mode.","Click the metric you want to analyze.","Choose period-over-period comparison.","Select the comparison period."],docUrl:"https://docs.holistics.io/docs/period-comparison#set-up"},{title:"Create a Running Total",slug:"create-a-running-total",outcome:"Accumulate a metric across a dimension, like running revenue by month.",time:"3 min",audience:"Self-service users",media:{type:"video",src:"https://cdn.holistics.io/docs/v3/running-total/running-total-setup-viz.mp4"},steps:["Open a report in exploration mode.","Click the metric.","Choose running total.","Pick the dimension to accumulate across."],docUrl:"https://docs.holistics.io/docs/running-total#how-to-create-a-running-total"},{title:"Add Moving Calculations",slug:"add-moving-calculations",outcome:"Smooth noisy trends with moving averages and measure change over time.",time:"3 min",audience:"Self-service users",media:{type:"video",src:"https://cdn.holistics.io/product/reporting-movcal-short-video-v2-final-20240917-292.mp4"},steps:["Open a report in exploration mode.","Click the metric.","Choose a moving calculation, such as a moving average.","Review the smoothed trend."],docUrl:"https://docs.holistics.io/docs/moving-calculation"},{title:"Show Percent of Total",slug:"show-percent-of-total",outcome:"Convert a metric into contribution percentages.",time:"3 min",audience:"Self-service users",media:{type:"youtube",src:"https://www.youtube.com/embed/7JyaZYGG4oQ"},steps:["Open a report in exploration mode.","Click the metric.","Choose percent of total.","Review the updated calculation."],docUrl:"https://docs.holistics.io/docs/percent-of-total"},{title:"Add a Trend Line",slug:"add-a-trend-line",outcome:"Overlay a trend line to see the direction behind the data points.",time:"2 min",audience:"Self-service users",media:{type:"video",src:"https://cdn.holistics.io/trendline/add-trendline.mp4"},steps:["Open a chart in exploration mode.","Open the analytic functions menu.","Add a trend line.","Pick the trend line type if needed."],docUrl:"https://docs.holistics.io/docs/trend-line#add-a-trend-line"},{title:"Add a Reference Line",slug:"add-a-reference-line",outcome:"Mark a target, average, or threshold line on a chart.",time:"2 min",audience:"Self-service users",media:{type:"video",src:"https://cdn.holistics.io/trendline/create_reference_line.mp4"},steps:["Open a chart in exploration mode.","Open the analytic functions menu.","Add a reference line.","Set the value or field it should mark."],docUrl:"https://docs.holistics.io/docs/reference-line#introduction"},{title:"Suggest Organization-Specific AI Skills",slug:"suggest-organization-specific-ai-skills",outcome:"Package a repeated analytical workflow as a reusable, governed AI skill.",time:"4 min",audie
1nce:"Power users",media:{type:"video",src:"https://cdn.holistics.io/product/ai-ai-skills-20260423-882.mp4"},steps:["Identify a repeated workflow or question.","Describe what the AI skill should help with.","Share examples with your data team to build and govern it.","Help test whether the skill produces useful results."],docUrl:"https://docs.holistics.io/docs/ai/skills#what-are-ai-skills"}]},{id:"d",title:"Design & Style Your Dashboard",slug:"design-and-style-your-dashboard",blurb:"Make your dashboards clear, branded, and great to look at.",pages:[{title:"Add Conditional Formatting",slug:"add-conditional-formatting",outcome:"Highlight values that cross a threshold.",time:"3 min",audience:"All users",media:{type:"video",src:"https://cdn.holistics.io/docs/v3/data-format/data-format-viz-settings-demo.mp4"},steps:["Open the report.","Choose conditional formatting.","Define the threshold.","Pick the style and save."],docUrl:"https://docs.holistics.io/docs/charts/table#conditional-formatting"},{title:"Wrap Content & Set Custom Labels",slug:"wrap-content-and-set-custom-labels",outcome:"Tidy tables by wrapping header or cell text and renaming fields with custom labels.",time:"3 min",audience:"All users",media:{type:"image",src:"https://media.holistics.io/lrtkrf-GUI-styling---Table.png"},steps:["Open a table visualization's style settings.","Turn on text wrapping for headers or cells.","Set a custom label to rename a field.","Save the styling."],docUrl:"https://docs.holistics.io/docs/charts/table#table-styles"},{title:"Change Colors & Style",slug:"change-colors-and-style",outcome:"Restyle a chart or table with your own colors and formatting.",time:"3 min",audience:"All users",media:{type:"video",src:"https://media.holistics.io/273e2669-bi-guide-dashboard-styling.mp4"},steps:["Select the chart or table.","Open its style settings.","Change colors, fonts, and borders.","Save your changes."],docUrl:"https://docs.holistics.io/docs/charts/table#table-styles"},{title:"Use Custom Charts",slug:"use-custom-charts",outcome:"Go beyond the built-in charts with open-source visualizations.",time:"4 min",audience:"Power users",media:{type:"video",src:"https://media.holistics.io/ee5fe68f-vega-lite-custom-charts-for-holistics.mp4"},steps:["Open a report and add a custom chart.","Paste or adapt a visualization spec.","Map your fields into the chart.","Save it to your dashboard."],note:'Adding a custom chart may need your data team\'s help. For inspiration, browse the <a href="https://vega.github.io/vega-lite/examples/" target="_blank" rel="noopener noreferrer">Vega-Lite example gallery</a> to see how flexible the presentation can be.',docUrl:"https://docs.holistics.io/docs/charts/custom-charts#how-to-add-a-custom-chart"},{title:"Build Dynamic Content Blocks",slug:"build-dynamic-content-blocks",outcome:"Create rich blocks like KPI cards, heatmaps, and metric trees from templates.",time:"5 min",audience:"Power users",media:{type:"image",src:"https://media.holistics.io/254a65e8-dynamic-content-hero-official.png"},steps:["Browse the template gallery for a starting point.","Add a Visualization block and choose the Markdown type.","Map your data fields into the template.","Adjust the design to taste."],note:'You can also ask AI to generate the block design for you. Browse the <a href="https://docs.holistics.io/docs/charts/dynamic-content-blocks/gallery" target="_blank" rel="noopener noreferrer">template gallery</a> to get started.',docUrl:"https://docs.holistics.io/docs/charts/dynamic-content-blocks/getting-started#step-by-step-tutorial"},{title:"Build Rich Layouts with HTML & CSS",slug:"build-rich-layouts-with-html-and-css",outcome:"Design branded, web-app-like dashboard themes and layouts.",time:"5 min",audience:"Power users",media:{type:"video",src:"https://media.holistics.io/503396c5-Screen-Recording-2026-03-31-at-11-41-39.mp4"},steps:["Open the Theme Builder Sandbox.","Pick a pre-built theme, generate one with AI, or start from scratch.","Customize colors, spacing, and layout in the live GUI editor.","Copy the generated theme into Holistics, or send it to your data team to apply."],docUrl:"https://docs.holistics.io/docs/admin/dashboard-themes/theme-builder"}]},{id:"g",title:"Deliver, Share & Act on Data",slug:"deliver-share-and-act-on-data",blurb:"Get data and insights out of Holistics, delivered to inboxes and channels, shared with external viewers, or used to trigger action in other systems. Most of these are set up with your data team. Need more access to do them yourself? Ask your data team.",pages:[{title:"Set Up Alerts",slug:"set-up-alerts",outcome:"Be notified through email, Slack, or a webhook when a metric crosses a threshold.",time:"3 min",audie
1nce:"All users",media:{type:"image",src:"https://media.holistics.io/53868254-reporting-data-alert-setup.png"},steps:["Pick the metric to monitor.","Define the alert condition or threshold.","Choose the channel (email, Slack, or webhook).","Ask your data team to set it up."],docUrl:"https://docs.holistics.io/docs/delivery/data-alert#set-up-data-alerts"},{title:"Schedule Report Delivery",slug:"schedule-report-delivery",outcome:'Have recurring reports delivered automatically to where your team already works, from <a href="https://docs.holistics.io/docs/delivery/email-schedules" target="_blank" rel="noopener noreferrer">email</a> and <a href="https://docs.holistics.io/docs/delivery/slack-schedules" target="_blank" rel="noopener noreferrer">Slack</a> to <a href="https://docs.holistics.io/docs/delivery/google-sheets" target="_blank" rel="noopener noreferrer">Google Sheets</a> and <a href="https://docs.holistics.io/docs/delivery/sftp-schedules" target="_blank" rel="noopener noreferrer">SFTP</a>.',time:"3 min",audience:"All users",media:{type:"image",src:"https://cdn.holistics.io/landing/features/email-schedules/email-schedule.gif"},steps:["Pick the report or dashboard to send.","Choose the delivery schedule.","Pick the destination and recipients.","Ask your data team to set it up."],docUrl:"https://docs.holistics.io/docs/delivery/email-schedules#set-up-email-schedules"},{title:"Create Shareable Links",slug:"create-shareable-links",outcome:"Share selected reports with people outside Holistics, safely.",time:"3 min",audience:"All users",media:{type:"video",src:"https://cdn.holistics.io/product/reporting-sharable-link-overview-20240910-261.mp4"},steps:["Pick the report or dashboard to share.","Define the external audience.","Set permission control and optional password protection.","Ask your data team to create the link."],note:"You can configure permission control over who is allowed to open the link, plus optional password protection for quick ad-hoc access.",docUrl:"https://docs.holistics.io/docs/delivery/shareable-links#create-shareable-links"},{title:"Set Up Product Actions",slug:"set-up-product-actions",outcome:"Trigger an operational workflow directly from a report.",time:"3 min",audience:"All users",media:{type:"youtube",src:"https://www.youtube.com/embed/RYKEZEbAxm8"},steps:["Pick the report or record where the action should appear.","Describe the action users should trigger.","Name the destination system or workflow.","Ask your data team to set it up."],docUrl:"https://docs.holistics.io/docs/actions#setting-up"}]}],d={root:"root_kStg",lead:"lead_nCgG",toolbar:"toolbar_EF2n",toggle:"toggle_g05Q",toggleBtn:"toggleBtn_ybVo",toggleActive:"toggleActive_F_4b",sections:"sections_jSle",section:"section_v4Gz",sectionHead:"sectionHead_hMtt",sectionTitle:"sectionTitle_QQHQ",blurb:"blurb_JuuO",grid:"grid_nvOP",card:"card_MY7B",body:"body_vyN9",cardHead:"cardHead_HpxQ",cardTitle:"cardTitle_lwdc",outcome:"outcome_z8Qz",note:"note_YJoy",media:"media_x5Vm",mediaEl:"mediaEl_lwPw",mediaContain:"mediaContain_CjkK",mediaPlaceholder:"mediaPlaceholder_UNos",meta:"meta_CEM4",metaItem:"metaItem_Juqq",steps:"steps_nwPO",chevron:"chevron_cHOY",stepList:"stepList_mQdp",noteIcon:"noteIcon_TA1X",watch:"watch_eXDY",guideLink:"guideLink_PLQr",permalink:"permalink_iYgw",anchor:"anchor_ioJG",isCopied:"isCopied_Rfe4",linked:"linked_Lr4D",expand:"expand_LRt3",backTopWrap:"backTopWrap_TG2T",backTop:"backTop_UDKb",lightbox:"lightbox_2oaR",lightboxBackdrop:"lightboxBackdrop_D34t",lightboxDialog:"lightboxDialog_nAfd",lightboxFrame:"lightboxFrame_wEAG",lightboxClose:"lightboxClose_V5i_"};function c(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{},s=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(s=s.concat(Object.getOwnPropertySymbols(o).filter(function(e){return Object.getOwnPropertyDescriptor(o,e).enumerable}))),s.forEach(function(t){var s;s=o[t],t in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s})}return e}function h(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t.push.apply(t,o)}return t}
1)(Object(t)).forEach(function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(t,o))}),e}let u=e=>(0,i.jsx)("svg",h(c({viewBox:"0 0 16 16",width:"14",height:"14",fill:"none","aria-hidden":"true"},e),{children:(0,i.jsx)("path",{d:"M6.5 9.5a2.5 2.5 0 0 0 3.54 0l2-2a2.5 2.5 0 1 0-3.54-3.54l-1 1M9.5 6.5a2.5 2.5 0 0 0-3.54 0l-2 2a2.5 2.5 0 1 0 3.54 3.54l1-1",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"})})),p=e=>(0,i.jsxs)("svg",h(c({viewBox:"0 0 16 16",width:"13",height:"13",fill:"none","aria-hidden":"true"},e),{children:[(0,i.jsx)("circle",{cx:"8",cy:"8",r:"6.25",stroke:"currentColor",strokeWidth:"1.3"}),(0,i.jsx)("path",{d:"M8 4.75V8l2.25 1.5",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"})]})),m=e=>(0,i.jsx)("svg",h(c({viewBox:"0 0 16 16",width:"14",height:"14",fill:"none","aria-hidden":"true"},e),{children:(0,i.jsx)("path",{d:"M4 6l4 4 4-4",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})})),g=e=>(0,i.jsxs)("svg",h(c({viewBox:"0 0 16 16",width:"14",height:"14",fill:"none","aria-hidden":"true"},e),{children:[(0,i.jsx)("circle",{cx:"8",cy:"8",r:"6.25",stroke:"currentColor",strokeWidth:"1.3"}),(0,i.jsx)("path",{d:"M8 7.25v4M8 4.75v.5",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round"})]})),y=e=>(0,i.jsx)("svg",h(c({viewBox:"0 0 16 16",width:"14",height:"14",fill:"none","aria-hidden":"true"},e),{children:(0,i.jsx)("path",{d:"M6 2.5H2.5V6M10 2.5h3.5V6M6 13.5H2.5V10M10 13.5h3.5V10",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"})})),b=e=>(0,i.jsx)("svg",h(c({viewBox:"0 0 16 16",width:"13",height:"13",fill:"none","aria-hidden":"true"},e),{children:(0,i.jsx)("path",{d:"M6.5 3.5H3.5v9h9v-3M9.5 3.5h3v3M12.5 3.5l-5 5",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"})})),f=e=>(0,i.jsx)("svg",h(c({viewBox:"0 0 16 16",width:"13",height:"13",fill:"none","aria-hidden":"true"},e),{children:(0,i.jsx)("path",{d:"M8 12.5v-9M4.5 7L8 3.5 11.5 7",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"})})),v=e=>(0,i.jsx)("svg",h(c({viewBox:"0 0 16 16",width:"16",height:"16",fill:"none","aria-hidden":"true"},e),{children:(0,i.jsx)("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})}));function w(e){let{slug:t,label:o,className:s}=e,[a,l]=(0,r.useState)(!1),c=(0,r.useCallback)(()=>{let e="".concat(location.origin).concat(location.pathname,"#").concat(t);history.replaceState&&history.replaceState(null,"","#".concat(t));let o=()=>{l(!0),setTimeout(()=>l(!1),1500)};navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(e).then(o).catch(o):o()},[t]);return(0,i.jsx)("button",{type:"button",className:(0,n.default)(s,a&&d.isCopied),onClick:c,"aria-label":'Copy link to "'.concat(o,'"'),title:"Copy link",children:(0,i.jsx)(u,{})})}function k(e){let t,{media:o,title:s,view:a,onExpand:l}=e,c=(0,r.useRef)(null);if((0,r.useEffect)(()=>{if(!o||"video"!==o.type)return;let e=c.current;if(!e||"list"===a||!("IntersectionObserver"in window)){e&&"list"!==a&&o.src&&!e.getAttribute("src")&&e.setAttribute("src",o.src);return}let t=new IntersectionObserver(e=>{e.forEach(e=>{let t=e.target;if(e.isIntersecting){!t.getAttribute("src")&&o.src&&t.setAttribute("src",o.src);let e=t.play();e&&e.catch&&e.catch(()=>{})}else t.paused||t.pause()})},{rootMargin:"200px 0px",threshold:.1});return t.observe(e),()=>t.disconnect()},[o,a]),o&&"video"===o.type)t=(0,i.jsx)("video",{className:d.mediaEl,muted:!0,loop:!0,playsInline:!0,preload:"none",ref:c});else if(o&&"youtube"===o.type){let e=String(o.src).split("?")[0].split("/").pop();t=(0,i.jsx)("img",{className:d.mediaEl,src:"https://img.youtube.com/vi/".concat(e,"/hqdefault.jpg"),alt:"".concat(s," preview"),loading:"lazy"})}else t=o&&"image"===o.type?(0,i.jsx)("img",{className:(0,n.default)(d.mediaEl,d.mediaContain),src:o.src,alt:"".concat(s," preview"),loading:"lazy"}):(0,i.jsx)("div",{className:d.mediaPlaceholder,children:(0,i.jsx)("span",{children:o&&o.caption||"Walkthrough coming soon"})});return(0,i.jsxs)("div",{className:d.media,children:[t,o&&("video"===o.type||"youtube"===o.type)&&(0,i.jsx)("button",{type:"button",className:d.expand,onClick:()=>l(o.type,o.src,s),"aria-label":'Watch "'.concat(s,'" larger'),title:"Watch larger",children:(0,i.jsx)(y,{})})]})}function x(e){let{media:t,title:o,open:s}=e,[a,n]=(0,r.useState)(!1);return((0,r.useEffect)(()=>{s&&n(!0)},[s]),a&&t)?"video"===t.type?(0,i.jsx)("div",{className:d.watch,children:(0,i.jsx)("video",{className:d.mediaEl,controls:!0,muted:!0,playsInl
1ine:!0,preload:"none",src:t.src})}):"youtube"===t.type?(0,i.jsx)("div",{className:d.watch,children:(0,i.jsx)("iframe",{className:d.mediaEl,src:t.src,title:o,frameBorder:"0",allow:"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowFullScreen:!0,loading:"lazy"})}):null:null}function C(e){let{page:t,view:o,onExpand:s}=e,[a,l]=(0,r.useState)(!1);return(0,i.jsxs)("div",{id:t.slug,className:(0,n.default)(d.card,"bih-card"),children:[(0,i.jsx)(w,{slug:t.slug,label:t.title,className:d.permalink}),(0,i.jsxs)("div",{className:d.body,children:[(0,i.jsxs)("div",{className:d.cardHead,children:[(0,i.jsx)("h3",{className:d.cardTitle,children:t.title}),(0,i.jsx)("p",{className:d.outcome,dangerouslySetInnerHTML:{__html:t.outcome}})]}),(0,i.jsx)(k,{media:t.media,title:t.title,view:o,onExpand:s}),(0,i.jsxs)("div",{className:d.meta,children:[(0,i.jsxs)("span",{className:d.metaItem,children:[(0,i.jsx)(p,{}),t.time]}),(0,i.jsx)("span",{"aria-hidden":"true",children:"\xb7"}),(0,i.jsx)("span",{children:t.audience})]}),(0,i.jsxs)("details",{className:d.steps,onToggle:e=>l(e.currentTarget.open),children:[(0,i.jsxs)("summary",{className:d.summary,children:[(0,i.jsx)("span",{children:"Show the steps"}),(0,i.jsx)(m,{className:d.chevron})]}),(0,i.jsx)("ol",{className:d.stepList,children:t.steps.map((e,t)=>(0,i.jsx)("li",{children:e},t))}),t.note&&(0,i.jsxs)("p",{className:d.note,children:[(0,i.jsx)(g,{className:d.noteIcon}),(0,i.jsx)("span",{dangerouslySetInnerHTML:{__html:t.note}})]}),(0,i.jsx)(x,{media:t.media,title:t.title,open:a})]}),t.docUrl&&(0,i.jsxs)("a",{className:d.guideLink,href:t.docUrl,target:"_blank",rel:"noopener noreferrer",children:["Full guide ",(0,i.jsx)(b,{})]})]})]})}function A(e){let{section:t,view:o,onExpand:s}=e;return(0,i.jsxs)("section",{id:t.slug,className:d.section,children:[(0,i.jsxs)("div",{className:d.sectionHead,children:[(0,i.jsxs)("h2",{className:d.sectionTitle,children:[(0,i.jsx)("span",{children:t.title}),(0,i.jsx)(w,{slug:t.slug,label:t.title,className:d.anchor})]}),(0,i.jsx)("p",{className:d.blurb,children:t.blurb})]}),(0,i.jsx)("div",{className:d.grid,children:t.pages.map(e=>(0,i.jsx)(C,{page:e,view:o,onExpand:s},e.slug))}),(0,i.jsx)("div",{className:d.backTopWrap,children:(0,i.jsxs)("a",{className:d.backTop,href:"#bih-top",children:[(0,i.jsx)(f,{})," Back to top"]})})]})}function j(e){let{state:t,onClose:o}=e,s=(0,r.useRef)(null);return((0,r.useEffect)(()=>{if(!t)return;let e=e=>{"Escape"===e.key&&o()};return document.addEventListener("keydown",e),document.body.style.overflow="hidden",s.current&&s.current.focus(),()=>{document.removeEventListener("keydown",e),document.body.style.overflow=""}},[t,o]),t)?(0,i.jsxs)("div",{className:d.lightbox,children:[(0,i.jsx)("div",{className:d.lightboxBackdrop,onClick:o}),(0,i.jsxs)("div",{className:d.lightboxDialog,role:"dialog","aria-modal":"true","aria-label":"Video player",children:[(0,i.jsx)("button",{type:"button",className:d.lightboxClose,onClick:o,"aria-label":"Close video",ref:s,children:(0,i.jsx)(v,{})}),(0,i.jsx)("div",{className:d.lightboxFrame,children:"youtube"===t.type?(0,i.jsx)("iframe",{src:"".concat(t.src).concat(t.src.indexOf("?")>=0?"&":"?","autoplay=1"),title:t.title||"Walkthrough",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowFullScreen:!0}):(0,i.jsx)("video",{src:t.src,controls:!0,autoPlay:!0,playsInline:!0})})]})]}):null}function S(){let[e,t]=(0,r.useState)("card"),[o,s]=(0,r.useState)(null);(0,r.useEffect)(()=>{try{let e=localStorage.getItem("bih-view");("card"===e||"list"===e)&&t(e)}catch(e){}},[]);let a=(0,r.useCallback)(e=>{t(e);try{localStorage.setItem("bih-view",e)}catch(e){}},[]),c=(0,r.useCallback)((e,t,o)=>s({type:e,src:t,title:o}),[]),h=(0,r.useCallback)(()=>s(null),[]);(0,r.useEffect)(()=>{let e=()=>{let e=location.hash?decodeURIComponent(location.hash.slice(1)):"";if(!e)return;let t=document.getElementById(e);if(t&&t.classList.contains("bih-card")&&(t.classList.add(d.linked),"IntersectionObserver"in window)){let e=!1,o=new IntersectionObserver(s=>
1{s.forEach(s=>{s.isIntersecting?e=!0:e&&(t.classList.remove(d.linked),o.disconnect())})});o.observe(t)}};return e(),window.addEventListener("hashchange",e),()=>window.removeEventListener("hashchange",e)},[]);let u=(0,i.jsxs)("div",{className:d.toggle,role:"group","aria-label":"View",children:[(0,i.jsx)("button",{type:"button",className:(0,n.default)(d.toggleBtn,"card"===e&&d.toggleActive),onClick:()=>a("card"),children:"Cards"}),(0,i.jsx)("button",{type:"button",className:(0,n.default)(d.toggleBtn,"list"===e&&d.toggleActive),onClick:()=>a("list"),children:"List"})]});return(0,i.jsxs)("div",{id:"bih-top",className:d.root,"data-view":e,children:[(0,i.jsx)("p",{className:d.lead,children:"Everything a business user can do in one place. See what each capability is for and how it works, so new users get the full picture and seasoned users find what they've missed."}),(0,i.jsx)("div",{className:d.toolbar,children:u}),(0,i.jsx)("div",{className:d.sections,children:l.map(t=>(0,i.jsx)(A,{section:t,view:e,onExpand:c},t.slug))}),(0,i.jsx)(j,{state:o,onClose:h})]})}let O={title:"End Users Handbook (v1)",sidebar_label:"End Users Handbook (v1)",description:"Everything a business user can do in Holistics: find answers with AI, explore dashboards, build reports, and collaborate with your data team."},I,U={},_=l.flatMap(e=>[{value:e.title,id:e.slug,level:2},...e.pages.map(e=>({value:e.title,id:e.slug,level:3}))]);function N(e){return(0,i.jsxs)(i.Fragment,{children:["\n","\n",(0,i.jsx)(S,{})]})}function E(e={}){let{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(N,{...e})}):N(e)}},20053(e,t,o){function s(){for(var e,t,o=0,s="";o<arguments.length;)(e=arguments[o++])&&(t=function e(t){var o,s,i="";if("string"==typeof t||"number"==typeof t)i+=t;else if("object"==typeof t)if(Array.isArray(t))for(o=0;o<t.length;o++)t[o]&&(s=e(t[o]))&&(i&&(i+=" "),i+=s);else for(o in t)t[o]&&(i&&(i+=" "),i+=o);return i}(e))&&(s&&(s+=" "),s+=t);return s}o.r(t),o.d(t,{clsx:()=>s,default:()=>i});let i=s},28453(e,t,o){o.d(t,{R:()=>r,x:()=>n});var s=o(96540);let i={},a=s.createContext(i);function r(e){let t=s.useContext(a);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function n(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(a.Provider,{value:t},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.