Blog
103 articles
Downstream Lineage in Domo: Why It Matters and How We Made It Programmable
After 9 months of use, our Snowflake engineers declared Domo 'very expensive' — multiple queries pulling the same fact tables, no way to know what could be consolidated. Here's why lineage is table stakes, how we wired the APIs, and why the technical exercise is only the beginning.
Jun 5, 2026
How to Trigger App Studio Report Builder Distributions from Domo Workflows
Trey Hoffman asked in the Domo User Group whether you can trigger a Report Builder distribution from Workflows. There's no tile for it — but if you know how to decompose the problem, the solution is obvious. Here's the framework and the implementation.
Jun 4, 2026

From Chatbot to Intelligence Network — with Marcus Wilkins (InformData)
Why do chatbots feel bad? Marcus Wilkins (InformData, Lead Data Scientist) built DAISY — the most visible agentic AI chatbot in the Domo ecosystem — and evolved it from a simple Q&A tool into a self-reviewing intelligence network. Jae Wilson brings the context engineering perspective.
May 27, 2026

Tutorial: Automate Your Customer Outreach Pipeline with Claude Code
I hate fishing for work. So I built a runbook that automates my entire pre-sales outreach pipeline — discovering prospects, researching companies, creating dossiers, and syncing contacts. Here's how.
May 6, 2026
DataCrew Digest #1 — AI in Domo, MCP Servers, and What I've Been Building
First issue. If you're a Domo practitioner who wants to stay sharp, this one's for you.
May 1, 2026

Tutorial: Automate Your Daily SOPs with Claude Code
Stop redoing the same multi-step tasks every week. Here's how to break them into scripts, teach Claude your voice, and stitch it all together with runbooks.
Apr 30, 2026

MCPs vs Skills — The Debate (with Jon Tiritilli, Domo Principal Engineer)
Live debate on MCPs vs Skills with Jon Tiritilli (Principal Engineer, Domo) and community members. Security, context rot, authentication, and when each approach actually makes sense.
Apr 29, 2026

Skills and Runbooks: AI for People Who Don't Think of Themselves as Developers
You don't need to be a developer to get value from AI agents. Skills and runbooks are just markdown documents — write down what you know, and your agent handles the rest.
Apr 23, 2026

Stop QA-ing in Prod: Use Domo Publish for Dev/Prod Separation
If you're on Domo's consumption model and not using multiple instances with Publish, you're leaving money on the table. Here's how to separate dev from prod — and automate the cleanup.
Apr 23, 2026

Trace Domo Publish Lineage: Know What's Production Before You Delete It
In the previous video I made the case for using Domo Publish to separate dev from prod. Here's how I built the tooling to actually enforce that policy — publish lineage reports, tag-based scheduling, and the architecture behind it.
Apr 23, 2026

Automating YouTube Metadata with Claude Code Skills and Runbooks
The worst part of posting a video is the metadata. Here's how to automate title and description generation using Claude Code skills, runbooks, and the YouTube Data API.
Apr 15, 2026

Back to Freelancing: DataCrew Updates, Stripe MCP & What's Coming
After four years building a Domo Center of Excellence at a Fortune 500, Jae Wilson is back to independent consulting — and here's what he's been building.
Apr 15, 2026

Building Apps with AI: Best Practices w/ Jon Tiritilli
Jon Tiritilli walks through how to use Claude Code skills and Domo's developer tooling to build and publish Domo apps faster — and why the skill/context distinction matters more than the model.
Apr 15, 2026
How to Build an MCP Server with Domo
Domo exposes a powerful API — here's how to wrap it in an MCP server so your AI agents can query datasets, refresh dataflows, and publish cards without leaving your terminal.
Apr 9, 2026

The right way to set up Domo Workflows - Infrastructure as Code + GitHub Actions
Stop running Domo config scripts blindly every day — use drift detection and GitHub PRs to review every change before it touches production.
Apr 7, 2026

Automating a Domo Digest in Slack with GitHub Actions
Build a GitHub Actions workflow that scrapes Domo's Knowledge Base and Community Forums daily and posts a formatted digest to a Slack canvas — no server required.
Apr 5, 2026

Implement Sudo with Domo CodeEngine (automate actions across multiple instances using Python)
A Python pattern for Domo CodeEngine that centralizes authentication so you can automate actions across multiple Domo instances without rewriting credential logic for every function.
Oct 8, 2025

Build an MCP Server using DomoLibrary, FastMCP and Domolibrary
Learn how to turn a Postman collection of Domo API endpoints into auto-generated Python functions and expose them as an MCP server with FastMCP and DomoLibrary.
May 19, 2025

From Postman Collection to Python API Client with Domo
Stop writing Postman-to-Python wrappers by hand — this code generator reads your Postman collection JSON and emits typed, callable Python functions for every endpoint automatically.
Apr 8, 2025

Convert Postman Collections into Functions using a little AI, dataclasses and a tone of Python
Instead of asking an LLM to guess your API's behavior, feed it your Postman collection and your own code samples — and watch it generate a full Python function library in your exact style.
Apr 8, 2025

Generating Mermaid Diagrams of Domo Processes using DomoKbs
How to load Mermaid.js docs into a Supabase RAG pipeline so a Pydantic AI agent can generate accurate, renderable flowchart diagrams from plain-language process descriptions.
Apr 5, 2025

HelpdeskMafia - a Domo AI powered Chatbot built in Python hosted on Replit
Build a 24/7 RAG-powered Slack chatbot using Domo AI Workflows for vector search and Replit for zero-ops cloud hosting — no server required.
Mar 29, 2025

NEW FEATURE - Update all Magic ETLs to use Canvas Grids using Python and DomoLibrary
Use Python and DomoLibrary to bulk-enable canvas grid lines across every Magic ETL in your Domo instance — no clicking required.
Mar 27, 2025

Update Domo Dataset Schema via Jupyter Notebooks using domolibrary
Use domolibrary and a Jupyter Notebook to programmatically update Domo dataset column descriptions at scale — no clicking required.
Mar 25, 2025

Domo - Month over Month Date Comparison using ETL - Old School Hack
Before Domo had Variables or FIXED functions, analysts used an ETL Union trick to embed shifted date copies into a dataset — here's exactly how it worked and why.
Mar 3, 2025

use Domo AI to write code (Python Chatbot - Part 4)
LLMs don't know your Domo SDK — but you can make them write code that looks like yours by feeding them examples of your own functions at prompt time.
Feb 9, 2025

Domo Automation with an LLM - Chatbot Part 5
Generating LLM descriptions for Domo ETL dataflows is the easy part — this tutorial shows how to extract the right inputs, keep the LLM call narrow, and write results back at scale.
Feb 9, 2025

Building a Chatbot in Domo AI (Part 1) - that speaks like a pirate
Learn the auth, message history, and endpoint handler pattern needed to build a stateful, personality-driven chatbot on Domo's text generation API.
Feb 8, 2025

Build chatbots in Domo AI (Part 2) - Setting up an Endpoint (FAIL)
Domo's text generation API works — but the Endpoint class abstraction built on top of it doesn't, and understanding exactly why saves you from hitting the same wall.
Feb 8, 2025

Automagically Describe a Domo Magic ETL Dataflow using Domo AI (Part 3)
Wire the Domo Dataflow API to an LLM to auto-generate plain-English descriptions of your Magic ETL transformations — no manual documentation required.
Feb 8, 2025

DomoLibrary_Extensions - Google Drive APIs Class - using Inheritance
Learn how to wrap Google's API client library using Python inheritance so every tool your team builds shares the same authentication pattern and interface.
Jan 15, 2025

Sync Google Drive and Google Docs to your computer and split tabs into Markdown Files
Google Drive's export API can't split tabs — this Python library uses BeautifulSoup to do it for you, turning a multi-tab Google Doc into individual Markdown files.
Jan 15, 2025

Domo CodeEngine functions - adding graceful error handling
Domo CodeEngine functions fail silently by default — learn how to add input validation and structured error handling so failures surface something actually useful.
Nov 29, 2024

Using Inheritance + methods in Python to reduce code duplication
When two SSO config classes share the same fields and boilerplate, inheritance pulls the duplication into one parent — here's exactly how that refactor works in Python.
Nov 15, 2024

Generate a dataset of support tickets -- Webscraping Domo using Selenium + Python tutorial
Domo's support portal hides comment history behind a login wall with no API — here's how to scrape it in ~30 lines of Python and route the data to where your team actually works.
Jun 14, 2024

Domo + Row Level PDP (API Requests) and Columnar PDP Beta Sneak Peek
Domo's 'All Rows' PDP entry isn't just a UI label — it's a real policy object with an ID you can target directly via the Data Control API.
Jun 11, 2024

Domo + CodeEngine + Python - Error handling
Returning False and raising an exception are not the same thing — here's how to build Domo CodeEngine functions that fail loudly, carry useful context, and stop cascading automation failures before they start.
Jun 4, 2024

Domo + CodeEngine - getting started (adding impersonation)
CodeEngine is the only tool in Domo that lets you impersonate an admin user without exposing credentials — here's how to wire it up in Python.
Jun 3, 2024

Build a Documentation tool in Google Drive with autogenerated documents and a table of contents
Build a Google Drive documentation system that autogenerates documents and keeps a table of contents current — no manual updates required.
May 3, 2024

Use Git Subtree Filtering to pull a subfolder out of a GitHub repository (and still receive updates)
Git subtree filtering lets you extract a single subfolder into its own repository and still pull upstream changes — here's the three-branch strategy that makes it work.
May 2, 2024

My first Domo CodeEngine function -- handling loops and pagination (Part 2)
Domo APIs cap responses at 50 records by default — here's how to build a reusable CodeEngine looper that handles both URL and body pagination patterns so you never silently miss data.
Apr 26, 2024

My first Domo CodeEngine function -- handling API authentication with Accounts (Part 1)
Domo CodeEngine silently swallows async Python and stdout — here's what actually works and why authentication through Accounts is the right pattern.
Apr 25, 2024

Domo+Datacrew || What's new with MagicETL w Andrea Henderson (Spring 2024)
Domo's Spring 2024 MagicETL updates — SQL-in-Magic, JOIN improvements, and UPSERT — explained with real guidance on row limits, Adrenaline tradeoffs, and debugging.
Apr 25, 2024

Domo - Personalization with Domo Bricks (DDX)
Use `domo.env` variables in a DDX Brick to serve each user a personalized dashboard navigation page driven entirely by a dataset — no hardcoding required.
Apr 23, 2024

Domo + Python & domolibrary - sync a connector with GitHub via API
Domo separates dataset schema from connector configuration — and once you understand that split, you can drive connector settings from GitHub using Python and the Domo Stream API.
Apr 18, 2024

Domo+DataCrew - Unlocking Automation with Domo Workflows
Domo Workflows can replace manual approval chains and email handoffs with automated, trackable processes built directly inside your existing Domo environment.
Apr 18, 2024

Domo - Extract CodeEngine Functions to upload to GitHub
Extract every Domo CodeEngine package and function to version-controllable files using domolibrary — and get a window into which APIs Domo itself is calling internally.
Apr 4, 2024

Domo - Extract CodeEngine Functions to upload to GitHub part 2
A practical regex-based approach to extracting API call patterns from Domo CodeEngine functions and versioning them in GitHub.
Apr 4, 2024

Python - building configurable scripts with a factory process
Stop rewriting integration chains: a factory pattern that lets a config document drive multi-step Python automation without touching your core classes.
Mar 21, 2024

DomoLibrary + Python || create Custom Attributes and Users in Domo via API
If your Domo user attributes need to stay in sync with a dataset — franchise names, store numbers, training completions — here's the Python pattern to automate it via API.
Jan 5, 2024

Domo Governance with Python | Delete duplicate Accouns
Automate Domo group deduplication with Python and DomoLibrary — one script replaces a recurring manual cleanup task.
Dec 18, 2023

DomoStats + Python - How much do parent tiles impact tile Performance?
Parent tiles in Magic ETL can silently tank dataflow performance — here's how to use Python and DomoLibrary to expose exactly which tile is the real culprit.
Dec 11, 2023

Build a DomoStats connector with Python + DomoLibrary and Jupyter
Learn how to hit Domo's undocumented APIs safely with DomoLibrary and Python to build a custom dataset exposing Magic ETL action-type metadata.
Dec 4, 2023

Query Domo Jupyter using Python 1 of 4 || extending dataclasses using inheritance and composition
Domo Jupyter workspaces use a different auth mechanism than standard Domo APIs — here's how to reverse-engineer it and model the difference cleanly in Python.
Sep 14, 2023

Query Domo Jupyter using Python 4 of 4 || building class functions
Learn how to build a two-layer Python class hierarchy that normalizes Domo's inconsistent API field names and handles authentication once so every script stays clean.
Sep 14, 2023

Query Domo Jupyter using Python 2 of 4 || constructing route functions
Learn how to structure reusable Python route functions that wrap Domo API endpoints cleanly — so your Jupyter notebooks stay readable and your request logic lives in one place.
Sep 14, 2023

Query Domo Jupyter using Python 3 of 4 || recursive functions
Domo Jupyter's API only returns top-level content — here's how to build a recursive Python wrapper that traverses the full folder tree without touching your base route.
Sep 14, 2023

Intermediate Python Code Review - Domo Data Dictionary API
Domo's Wrangle API enables automated Data Dictionaries — here's how to refactor the Python that drives it from notebook prototype to production-ready code.
Aug 16, 2023

Domo Sandbox + Publish || manage code promotion, QA workflows, and content distribution
Linked Repositories let you merge new DEV components into live PROD Domo pipelines without redeploying from scratch — here's how the pattern works.
Jun 15, 2023

Domo Sandbox - for implementing Version Control and DEV/PROD workflows
Domo Sandbox brings Git-style version control to your Domo environment — here's how to use Linked Repositories to build a real DEV/PROD promotion workflow without breaking production.
Jun 9, 2023

Domo + DDX Bricks || Landing Page Navigation based on User Page Access
Build a DDX Brick landing page that reads each user's actual Domo page permissions at runtime and renders only the navigation links they can access.
May 19, 2023
Build a DDX Brick for a User Landing Page
Here's a project I worked on for a customer to build a DDX Brick that acts as a Landing Page that only shows pages the user has access to.
May 18, 2023

Domo IDEA Exchange on Dashboard Design
Four Domo practitioners share their frameworks for designing dashboards that actually get used — from user interviews and the 5 Whys to color hierarchy and KPI formatting.
May 17, 2023

Domo IDEA Exchange Conversations - Foster your Domo Community (Session Notes)
- Building community IS a job!
Apr 14, 2023

Domopalooza 2023 + Python || Automate Dataset Tagging
Use Python and the open-source domolibrary to bulk-apply dataset tags in Domo programmatically — no UI clicking required.
Apr 4, 2023
Things I heard at Domopalooza 2023
Domo hinted at unveiling of a ton of new features at Domopalooza 23. Here are some of my thoughts as well as resources I've coalesced during the event.
Apr 3, 2023
Window Functions in Domo
Ultimate Guide to Window FunctionsNote: in mid 2021, Domo silently made changes under the covers to window functions so that they would not allow you to use calculated row-level columns in the OVER()…
Dec 12, 2022
How does UPSERT work
Courtesy of Gordon P in the Dojo Community
Dec 8, 2022

[Webinar Recording] 🎥 on Domo Governance Toolkit with Karl Altern
🎉Thank you to everyone who attended. This webinar was hosted on 11/16/2022 by the DataCrew team in an effort to bring more Governance Toolkit awareness to the Domo Community.
Nov 26, 2022

[Webinar Recording] - On DDX Bricks with Noah Finberg & Elliott Leonard
🎉Thank you to everyone who attended. This webinar was hosted on 11/2/2022 by the DataCrew team in an effort to bring more DDX Bricks awareness to the Domo Community.
Nov 2, 2022

[Advanced Video Tutorial] Manage Credentials in Domo Jupyter Notebooks with Accounts Integration and Python DataClasses
Printing and storing credentials in plain text is a big faux pas in the developer world. Domo has new functionality that allows us to access the Accounts Object within Jupyter Notebooks (kb link).
Oct 21, 2022

🧪🚀 Basic Forecasting in Magic ETL 🚀🧪
Why do we do Forecasting? To predict the future.
Oct 3, 2022
Cool Stuff Digest 5/23
Python Article I wish I'd read before I started learning to program.
May 24, 2022
Hashing and Encrypting Data in Domo / Columnar PDP [as of 5/5/2022]
Based on encryption as described here:
May 13, 2022

Domo Customer Interviews
I'll try to keep this up to date with customer interviews related to the Domo platform.
Oct 28, 2021
Cool Stuff Digest 10/11/21 - Making Data More Discoverable
Links to slides from Video
Oct 11, 2021

9/20/21 - Cool Stuff Digest
In the May 24 Cool Stuff Digest, I posed the question of whether Kimball's Dimensional Model was falling out of date. I mean, he wrote the first drafts of his book back in the 70s and 80s before colu…
Sep 20, 2021

Cool Stuff Digest 6/21
Domo quietly expanded the list of available DomoStats datasets. It's unclear to me if this is a Beta Feature or a Feature Switch, contact your CSM.
Jun 23, 2021

Cool Stuff Digest 6/14
ARTICLE: How to Create a Thriving Data Viz Culture"Promote the importance of dataviz, when it bridges design, communication, and data science."
Jun 14, 2021

A Burrito Bar of Services
Not every consulting engagement has to be a Domo-styled "Momentum" implementation.
Jun 2, 2021
💡 Becoming a Better Consultant 📆 May 25 & Jun 1, 2021
9AM - 10AM MST - May 25 & Jun 1
Jun 2, 2021

5/31 Cool Stuff Digest
This week I'm focused on Data Governance and Security in Domo so I have a handful of articles I'm working on updating and expanding.
Jun 1, 2021
Data Governance Tools & Program Best Practices
Domo Governance and Stats datasets
Jun 1, 2021

5/24 - Cool Stuff Digest
1. In the era of GCP, Azure, and Datalake infrastructure, processing power has trivialized the performance benefits Ralph Kimball laid out in his Data Warehouse Toolkit.
May 25, 2021

BC Template // Metric Mapping Template
I am not married to HOW you document your metrics so much as that you think and define what you need/want in a tangible way that can be converted into a data model.
May 19, 2021

5/17 - Cool Stuff Digest
Current Release Notes, New Product Features, and Domo Status so you know if there's an outage.
May 18, 2021

Create a Culture of Learning
The author posits that reading one hour a day is the key to becoming a millionaire.
May 18, 2021

Onboarding New Hires // Domo Platform Training
Each consultant's answer to this question will change over time, but it's important to frequently revist, explore and expand our understanding what the platform offers the client
May 18, 2021

Domo TC // Data Pipeline Best Practices // SAG Guidelines
The SAG aims to drive strategies that appropriately leverage each component of Domo’s architecture to help solve the unique business problems facing Domo’s customers.
May 17, 2021
How to describe a Problem // Consulting vs. Support
When asking for help (from support@domo.com, from a fellow consultant, or in any technical community), be aware of the distinction between asking for help and asking for consultation.
May 17, 2021

Integration Cloud || Connector Selection Flowchart
Andy Beier, VP of Domo Integration Cloud shares some hidden gems and under-utilized features in the Connector framework
May 17, 2021

Build a Custom Connector
Read the full article.
May 14, 2021

CSM - Plan your Domo Rollout
"You only get one shot to make a good impression." We heard it from our mothers, and it still holds true as we deploy new initiatives into our user base. Join our open Q&A after we review some of th…
May 14, 2021

DEVELOPER // Domo SDKs
The SDK helps developers create custom data pipelines, automation utilities like PDP management, user creation, connector management & controlling the mobile home page. Think of it kind of like the pl…
May 14, 2021

Domo API // Export to S3
Export a dataset to an S3 bucket.
May 14, 2021

DOMO TC // How to Structure your Data Center
"How do I scale my Domo implementation and not duplicate the ETL in my Data Warehouse?" Let's discuss.
May 14, 2021

Full Authentication with Domo APIs
send a POST to https://{your-instance}.domo.com/api/content/v2/authentication
May 14, 2021

7-ish Lessons I Learned as a Freelancer
This is my 6th year as a freelancer (2x with Domo clients and partners, and 4x with Jet Reports) and my 10th year as a technical consultant. It's been one heck of a journey as I've seen projects and…
May 13, 2021
PRODUCT DOCUMENTATION -- Supported Functions in Adrenaline Dataflows (Views and Beast Modes)
Note this is not a comprehensive list nor is it 'official'.
May 13, 2021

A few tips for new consultants
- divide the workday into 2-hour chunks. Fill your calendar the preceeding week into those chunks to avoid context switching. (context switching is forcing your brain to remember the state of a prev…
May 12, 2021
DOMO BC - Card Building - Checklist Pt 1
- Box Plots and Histograms have a limit of 100,000 rows of data. Other chart types have a limit of 25,000 rows (although the charting engine may limit the data further depending on how many series are…
May 12, 2021
How To Use Create-React-App + Domo proxy
Sample Tutorial by Justin Pumford // Github Repo
May 12, 2021
TUTORIAL -- Domo + MySQL 5.6 - Removing non alphanumeric characters from strings
Sometimes when you upload data to Domo the space, new line, or carriage return comes in 'weird' making them difficult to excise from your data
May 11, 2021