This checklist covers best practices for keeping your model clean and your environment intuitive to navigate for your entire organization. It draws on experience across many implementations and provides a helpful starting point.
Each section is split into must haves and nice to haves. If you have questions about anything not covered here, reach out to your Omni team.
Housekeeping
Must haves
- There are documented standards for development
- The homepage is curated using labels set to display on the “Homepage”
- The “Verified” label is used to signal to users which content should be trusted
- The Content Validator has no errors
- The Git integration is set up for version control
- There is an internal Slack/Teams channel for analytics questions, or a clear process for getting help around data
Nice to haves
- Users have favorited relevant content
- Unused content is regularly deleted
Topic design
Must haves
- Topics are tidy and intuitive to use, with topic descriptions and
ai_context where applicable
- Topics are generally small to ensure both usability and performance
- Limited views are joined into each topic to keep them focused; use
hidden, ignored, and field parameters to limit displayed fields
- Topics are organized thematically using
group_label on the field or topic level — avoid exposing raw schema naming
- Database columns, tables, and topics use language familiar to users with
label and description
- Field names follow consistent naming conventions (e.g. not mixing
total_sales, sales_sum, and sales)
- Boolean fields are named appropriately (e.g.
Is Returned not Returned)
- No reference to date/time in time dimension groups to avoid “Date Date” field name issues
- Ratios use
measure1 / NULLIF(measure2, 0) to handle zero denominators
- Value formats are used consistently across the model
Nice to haves
Refer to topic best practices for more details on topic design.
Dashboard design
Must haves
- Dashboards are built using curated topics rather than the ungoverned All Views & Fields mode
- Dashboards are intuitive to use with a small number of tiles (
<10 tiles per page)
- AI summaries and Markdown visualizations are used to make insights easier to read
- Axis labels are straightforward
- Filters have default values to limit the size of queries run by default
- Deliveries are scheduled on key dashboards
- The color scheme works with both dark and light modes
Nice to haves
Modeling
Must haves
- There are no model validation errors in the shared model
- Primary keys are unique and defined in all views
- The base table of topics is the most granular, joining out with
many_to_one or one_to_one joins; inner, cross, one_to_many, and many_to_many joins are generally not needed
- All assumed relationships have been validated and replaced with actual relationships (
assumed_many_to_one → many_to_one)
- The relationships defined in the relationships file are correct by checking the cardinality of the tables
- Omni field references (
${field_name}) are used over raw table/column names to prevent duplication in your code
ignored_schemas, included_schemas, and ignored_views are used to include only relevant schemas and tables
- Fields and logic reused across workbooks are added to the shared model; one-off fields live in the workbook model
drill_fields and drill_queries are used to allow users to drill deeper; default_drill_fields are defined for each view
- Shared logic lives in view/relationship files; topic files are reserved for use-case-specific overrides
Nice to haves
- Object names have consistent capitalization; for example: lowercase letters and underscores are used for all object names
- The modeling layer uses view folders and topic group_label to keep the code organized
Must haves
Security
Must haves
Refer to permissions scenarios to determine the most appropriate configuration for your access.
Next steps