Best Of
Inheriting PDP policies for a given user when querying the dataset?
Hi,
So we're trying to build a user facing app that will be fed DOMO data. In particular its a chatbot that will be able to query and read in DOMO data for user insights and actionable recommendations.
The issue we're facing is, each of our users have particular data policies and these policies are encapsulated in a PDP that is attached to the dataset. When the user requests a view of the data we want that user to be able to only view data that is defined in these policies. The dataset api doesnt appear to restrict the view of the data per user via the parameters but rather when say the pydomo client is instantiated the views are inherited via whatever policy is attached to the client id and client secret.
Is there a way to get a user of our app to only see the data the would see in the DOMO dashboards? Or do we have to reimplement the PDPs on our backend?
Work Smarter, Not Harder - Introducing the Domo Toolkit Chrome Extension
Stop wasting time navigating menus, managing hundreds of identical browser tabs, copying dataset IDs from the URL, and constantly clearing your cookies.
Domo Toolkit is designed for the people who live inside Domo every day—administrators managing hundreds of objects, consultants jumping between client instances, and power users building on the platform. Every feature is built to save clicks, reduce context-switching, and surface information that Domo's native UI buries. Whether you're creating, updating, troubleshooting, auditing, or cleaning, Domo Toolkit puts the tools you need one click away.
Installation
Disclaimer
This extension is an independent, community-developed project. Domo, Inc. has no responsibility for its functionality or performance or for any consequences arising from its use.
Features
Context Detection
Automatically detects the Domo object you're viewing - pages, cards, datasets, dataflows, app studio pages, workflows, alerts, and 100+ other object types. The extension:
- Identifies the object and fetches metadata from the Domo API
- Detects card modals and resolves parent objects for nested types (e.g. app studio pages)
- Detects selected code engine and form actions inside workflow editors
- Updates the tab title with the object's name
- Provides one-click access to the object's full JSON definition, with epoch timestamps annotated as human-readable dates and user IDs annotated with display names
Automatic 431 Error Resolving
Handles Domo's "Request Header Fields Too Large" errors with three cookie clearing modes:
- Auto (default) - Detects 431 errors, clears cookies (preserving your last 2 active instances), and refreshes the page automatically
- Preserve - One-click clearing that keeps your last 2 instances
- All - Clears all Domo cookies while leaving other sites and history intact
One-Click Actions
- Copy ID - Copy the current object's ID. Long-press for related IDs like stream ID (datasets) or app ID (app studio pages). Keyboard shortcut:
Ctrl+Shift+1(Cmd+Shift+1on Mac). - Share With Self - Grant yourself access to pages, studio apps, and custom app designs.
- Activity Log - View activity log records for the current object. Long-press for advanced options: view activity for all cards on the current object, all pages containing those cards, or all child pages.
- Clipboard Navigation - Click this button to read your clipboard, identify the Domo object only by its ID on your clipboard, and navigate directly to it. Works with any Domo object ID copied from anywhere - a card, dataset, spreadsheet, Slack message, etc. For objects that don't support navigation, detailed information is displayed in the side panel instead.
- Delete Current Object - Delete beast modes, appdb collections, workflows, pages/app studio pages and all their cards, and dataflows and all their outputs. Includes confirmation dialog and child page safety checks.
Data Discovery
Opens in the side panel for persistent exploration without losing your place.
- Get Cards - Lists every card on a page, app studio page, worksheet page, report builder page, dataset, or dataflow outputs. For pages, forms and queues are included and separated from cards.
- Get Card Pages - Shows where cards on an object live. For pages, shows all other pages not including the current page that contain cards that also exist on the current page. For datasets and dataflows, shows all pages and app studio pages containing cards that use the dataset or dataflow outputs as a source.
- Get Child Pages - For pages, shows all child and grandchild pages.
- Get DataSets - Shows datasets for an object, including inputs and outputs datasets for dataflows, dependent views for datasets, and all datasets used in cards on a page or app.
- Get DataSets Used in View - For dataset views and datafusions, see the underlying source datasets that feed into the view.
All discovery lists support applicable actions like open all, copy ID, share with self, open lineage, open in views explorer, and remove from page. Items are grouped hierarchically or categorically with expand/collapse, counts, direct links, and IDs on hover.
Card Error Tracking
Card API errors are automatically captured as you browse. Click the Card Errors button to view them in the side panel with full response details. Errors are tracked per tab and cleared when you navigate away from a card. View error count at a glance, expand individual errors to see the full JSON response, and clear all errors with one click.
Object-Specific Actions
- Lineage - Open a full-page lineage graph for datasets and dataflows. Traces upstream and downstream dependencies with dataset previews and dataflow tile operations directly in the graph. Supports dark mode.
- Copy Filtered URL - Copy URL with all applied filters on a card, page, or app studio page (Pfilters).
- Export Data - Export card data in CSV or Excel format, including applied filters (can be done from a card modal!). Export code engine package versions as JavaScript/Python files.
- Data Repair - Open the hidden data repair tab for any dataset.
- Update Owner - Change ownership of alerts and workflows with a searchable user picker and a "Set to Self" shortcut.
- Update DataFlow Details - Edit a dataflow's name and description without creating a new version.
- Update Code Engine Versions - Bulk update workflow code engine actions to the latest version in a single click, without unmapping inputs and outputs.
- Lock Cards - Lock all cards on a page, app studio page, dataset, worksheet, report builder report, or all dataflow outputs.
- Set DataSet Schedule to Manual - Set a dataset's schedule to manual.
- Fix Empty String Filters - Remove empty string default values from "contains" quick filters on cards, so null values display when no value is entered instead of being filtered out.
Custom Favicons
Customize favicons per Domo instance using regex-based rules:
- Instance Logo - Use the instance's own logo as the favicon
- Colored Domo Logo - Custom background color on the Domo logo
- Colored Stripes - Add a colored stripe to the top, right, bottom, or left edge
- Regex Patterns - Match instance subdomains with flexible patterns
- Priority Ordering - Drag-and-drop rule ordering
Side Panel & Popup
- Popup - Click the extension icon for quick access
- Side Panel - Persistent panel alongside the page for data discovery, with collapsible actions. Opens automatically from the popup when displaying discovery results.
Both show the current context (instance, object type, object ID) and update as you navigate.
Settings
- Theme - System, light, or dark mode
- Default Domo Instance - Set your go-to instance for clipboard navigation from non-Domo sites
- Cookie Clearing Behavior - Choose between auto, preserve, or all modes
- Favicon Rules - Rule editor with pattern matching, effect selection, color picker, and drag-and-drop reordering
Supported Object Types
Pages, cards, datasets, dataflows, app studio apps (and their pages), worksheets (and their pages), workspaces, users, groups, alerts, workflows (including versions, executions, triggers, and actions), code engine packages (and versions), pro-code apps, beast modes, variables, access tokens, appdb collections, approvals, approval templates, jupyter workspaces, filesets, files, forms, governance toolkit jobs and dozens more.
Privacy
- Only runs on
.domo.comdomains - Uses Domo's existing authenticated session - no additional login required
- No data leaves the browser; no external servers are contacted
- Settings sync via Chrome's built-in storage
- Domo data is never read, stored, or sent off-device
See the full Privacy Policy for details.
Contributing
Interested in contributing? See CONTRIBUTING for the tech stack, architecture, development setup, code conventions, and key patterns.
Issues & Feedback
Found a bug or have a feature request? Open an issue.
brycec
Announcing the Datasource Swapper: Move your existing Cards, Views, and ETLs to new datasets in bulk
Hi everyone,
I am excited to announce the release of the Datasource Swapper! Whether you are building new datasets because you are moving to a new data provider, transitioning away from materialized datasets in favor of Cloud Amplifier, or dealing with forced changes caused by vendor API deprecations, this tool was created to help save you hours of tedious manual updates to move your existing content to your shiny new datasets.
You can read more about this custom tool and get a step-by-step guide to create and run this in your instance here:
The Datasource Swapper is designed to accelerate large-scale migrations by allowing you to re-map content in bulk. Instead of opening every dataset yourself and updating each piece of content, you can provide a simple mapping dataset to this tool and let it handle the heavy lifting.
Key Functionality & Features:
- Bulk Dataset Swapping: Automatically update the input datasource for Cards, Dataset Views, and Magic ETL Dataflows across your Domo instance.
- Mapping-Driven Automation: Uses DomoStats and a simple "Old ID to New ID" mapping to identify and update all dependent assets for any given dataset in one go.
- Proactive Schema Validation: Before committing changes, the tool checks for missing columns or data type mismatches in the target dataset, allowing you to skip problematic pairs or proceed with full visibility.
- Flexible Deployment: Choose the environment that fits your workflow — deploy it as an integrated Pro-Code App using CodeEngine or utilize the standalone JavaScript-based CLI tool for a local experience.
This tool is perfect for Domo Instance Administrators who are tasked with maintaining instance health during structural data changes. Because it requires the ability to deploy CodeEngine packages, create custom Pro-Code apps, and modify instance-wide content, it is most effective when run by an Administrator or a user with elevated permissions and widespread access to update content.
You can dive into the step-by-step implementation guide and access the code here:
Happy migrating!
Drilldown stopped working on Beast Mode field with HTML (previously worked)
I have a table card where one of the columns is a Beast Mode calculation that outputs HTML (using concat( '<div title=' ,`Internal ID` ,'>',Job Number,'</div>')
Previously, this field worked as both:
- a formatted HTML display column to just show the Job Number, and
- the trigger for a drill path to a specific Internal ID (because just drilling down by the Job Number itself would bring more records than desired - I want to be able to drill down to a specific ID that the row in my table corresponds to. I do NOT want to display that ID in the table as it doesn't mean anything to the user.
Without any intentional changes to the Beast Mode or drill configuration, the drilldown has stopped working when clicking this column.
Current behavior:
- The HTML renders correctly in the table (doesn't show the <div> in the table, just the Job Number that I wanted to display)
- Clicking the cell no longer drills down how it used to - it just shows No Records.
What I’ve checked:
- Drill path is still configured correctly
- Dataset and fields have not changed
- Other (non-HTML) fields still drill as expected
Question:
Has there been a change in how Domo handles click interactions on HTML-rendered Beast Mode fields?
Is it no longer supported to use the same Beast Mode column for both HTML display and drill interaction?
Attach a PDF to an Email
I created a custom function to create a PDF file based on some text being passed to it from an AI agent output. The create file function works correctly (returns a file id) but when I go to attach to an email, I receive a "null" attachment, not the file name or format I was expecting.
Any suggestions?
Pretty-print Error on Android
I've created 3 different apps using App Catalyst. The apps work on desktops and the Domo mobile app when viewing on iOS. However, when trying to use Android devices, it throws a "Pretty-Print status 403" error every time. I tried using VAR at the top level and an IIFE wrapper. Neither of those is working exclusively or independently.
Jessary
Workflow Notifications
I have just finished creating and deploying my first workflow. It's doing what I need it to do. I'm struggling to figure out how to consistently get workflow completion notifications to who I need to get them.
I am one of several admins. We are all in the "Domo Admin" group. I have given the group Admin access to the workflow. The only notification settings I can find for workflows are personal settings (annoying but I can tell others to set them up). But none of the settings will work. It is being started by and alert so the "you started" options won't work. And the "you own" options don't seem to work because there is no "owner". Only creator and contributor set as me and unchangeable.
So next path, setting up and email task in the workflow. Well after digging through a bunch of functions I landed on the Workflow Executions function. Technically I could get everything I needed, but if the workflow fails the Email task would never get triggered. Meaning I would only get the emails on success, not failure.
Pivot again. Found the DomoStats: Workflows dataset. Ok cool. I can just setup and alert for when a new row is added. I can even split things. Completion/Success just to me. Failures to the entire group. Cool. Except I only can run once a day (this is fine for normal days). I need it to update anytime the workflow runs. So add a task to run the dataset. Cool, except once again, if the workflow fails, it just stops. Meaning no trigger for failed workflow except to me.
If this workflow fails I need to know asap so the tasks can be manually triggered. I'm about to leave the country for 11 days. I need other people to be able to get alerts. Is my only option to set up a rule in Outlook to forward any failures?
Pro Code in Apps Mobile Rendering Tips?
Looking for any tips on best functionality for rendering a AppDB Brick via Apps and specifically have it behave smoothly from an iPad via the mobile app. Curently what I'm noticing is when I rotate the screen it "resets". Note: I'm not super fluent in Pro Code writing, however Claude has helped greatly! Any tips would be greatly appreciated!
Re: 🦃 November Community Forum Recap
@GrantStowell , @ArborRose - Challenge accepted. 😈
Also, Congrats @ellibot!





