Metabase customization

Metabase customization shapes models, metrics, native questions, branding and API-driven automation around your data model, and it needs a plan check before design starts. This page explains what the work includes, what drives cost, and what to decide before you hire a partner or build in-house.

On this page

What Metabase customization involves

Customization in this section means changing how Metabase models data, defines questions and metrics, and presents results on top of the data sources you have already connected. It does not mean installing Metabase, connecting databases or setting up permissions, which are covered elsewhere on this page. The work sits in the content layer: models, metrics, saved questions with custom SQL or native queries, dashboard layout, branding, custom maps and scripted configuration that moves between environments.

Teams usually start customizing for a small set of reasons. Analysts repeat the same joins and filters in every question. Two dashboards report revenue or active customers with different definitions. Leadership asks for logos, colors and wording that match other internal tools. Regional teams need geographic maps with their own boundaries. Engineers want the same collections, models and settings applied to a staging and a production instance without clicking through each one by hand. Each trigger points to a specific object: a model for shared joins, a metric for agreed definitions, a branding setting, a custom map, or the REST API and serialization for repeatable setup.

Many organizations build this in-house, because the people who understand the business definitions are usually inside the company. A partner is worth considering for a design review of the model and metric layer before many questions depend on it, or for a defined build with written deliverables. Before any design starts, confirm which features your paid plan covers. Some capabilities in this area, including SSO-related options and parts of permissions and auditing, depend on Pro or Enterprise, so a design that assumes them on Open Source or Starter will need rework.

What the work includes

Each package ends in a named deliverable that your team can review, version and hand over. Scope them in writing before build starts, and confirm which features your Metabase edition supports.

Models and governed datasets

We design models that define the joins, column names, descriptions and visibility that analysts query. The deliverable is a documented model catalog with owners, refresh expectations and the source tables behind each model. Check that sensitive columns are hidden at the model layer and that owners can name what each model is for.

Metric dictionary and definitions

Metrics encode a business calculation once, so dashboards and questions agree on it. The deliverable is a metric dictionary listing the aggregation, filters, time dimension, owner and approval status for each metric. Have finance or the metric owner sign off each definition against an agreed source before publishing.

Native SQL questions with parameters

Native questions cover logic that the query builder cannot express, and parameters let users filter them safely. The deliverable is a tested set of native questions with documented parameters and expected outputs. Run them under a read-only database role, review how each parameter is bound, and test against known results.

Branding and instance presentation

Branding covers the instance name, logo, colors, landing content and any email or login text your organization wants to standardize. The deliverable is a documented set of presentation settings and a checklist for changes. Confirm which branding options your plan exposes, since some presentation controls depend on the edition.

Custom maps and regional boundaries

Custom maps let questions plot data against your own regions, such as sales territories or service areas. The deliverable is a set of validated GeoJSON files with the map configuration and a note on each region key. Check that region keys match the values in your data, and confirm how the map is served inside your network.

REST API scripts and configuration export

API scripts handle repeatable tasks such as provisioning users and collections or pulling scheduled report data. The deliverable is a runbook for API use with tested scripts, token handling rules and version pinning. Confirm whether your edition supports serialized configuration export, and if it does, keep exports in version control with a review step.

What drives cost and duration

Each row names one factor that moves customization effort on a self-hosted Metabase, why it matters, and how to keep it manageable.

DriverWhy it moves effortHow to keep it down
Number and complexity of source databasesEach connected database adds sync schedules, field type mapping, credentials and models that must be tested separately. Joins across heterogeneous sources need more validation than single-warehouse setups.Start with the warehouse that serves most questions. Confirm which source systems must be connected at launch and defer the rest to a later phase.
Models and metrics that must agree across teamsShared models and metrics need ownership, naming rules and reconciliation against finance or operational reports. Disagreement between teams usually costs more time than the build itself.Agree a short list of certified metrics with named owners before building. Limit the first release to the metrics that appear in executive or regulatory reporting.
Volume of native SQL to maintainNative questions and custom SQL run outside the semantic layer, so every schema change can break them. Each one needs a named owner, a test case and a review when the source changes.Move repeated logic into models. Keep native SQL for cases the visual query builder cannot express, and record the owner and source tables for each query.
Branding and custom map requirementsThemes, logos and custom map files are small in isolation but must be re-checked after each upgrade and copied to every environment. Map regions also need data that matches the geography used in your questions.Limit branding to the settings the application exposes and keep assets in version control. Ask the team to confirm the map file format and source before design starts.
Number of environments that need the same configurationCollections, permissions, models, settings and custom assets must match across development, test and production. Manual copies drift quickly, and every drift becomes a support question.Export configuration through serialization or the REST API where your edition supports it, and script the promotion steps. Confirm which settings serialize in your version.
Edition and permissions-dependent designsRow-level and column-level permissions, SSO and auditing are Pro or Enterprise features according to Metabase's pricing page. A design that depends on them cannot be built on Open Source or Starter, and retrofitting a plan change adds licensing and testing work.Decide the edition before designing permissions. Ask Metabase to confirm current plan inclusions, and list which requirements the chosen edition cannot meet.
Upgrade cadence that tests each customizationEvery upgrade re-tests models, native SQL, themes, API scripts and permission rules. Custom work that was not documented or automated is re-verified by hand. Metabase 64 is an LTS release with end of life on 1 December 2027, per Metabase's version support page.Keep a regression checklist for each customization. Automate API checks where possible, and plan upgrade windows around the LTS and non-LTS support dates on Metabase's version support page.

Project phases and outputs

The sequence moves from understanding your existing Metabase content to a tested, documented customization that your team can maintain after handover.

  1. Discover the data model and existing questions

    DeployOpen reviews the connected databases, current saved questions, dashboards, collections and any existing models, with your analysts and data owners. The output is an inventory of the content in scope, the tables and fields it depends on, and the gaps the customization must close. The step is complete when the inventory has been reviewed and signed off by your team.

  2. Confirm editions and features against current pricing

    Before design starts, DeployOpen checks each requested feature against the current Metabase pricing page and documentation, including which capabilities need Pro or Enterprise. The output is a feature matrix listing each requirement, the edition that supports it, and the source checked on the date of review. Your procurement or licensing owner confirms the matrix before any build work begins.

  3. Design models and metric definitions with owners

    Working with named business owners, DeployOpen defines the models, metrics, filters and naming conventions that the questions and dashboards will rely on. Each metric gets a written definition, a source table, and an accountable owner. The output is a design document that your owners approve, and the step closes when every metric in scope has a signed definition.

  4. Build native questions, branding, maps and API scripts

    DeployOpen builds the native questions and SQL queries, applies branding settings, configures custom maps where needed, and writes any REST API scripts agreed in scope. Changes are tracked in version control where practical, and the output is the set of built artifacts with a build log that maps each item to its design entry. The step is complete when each artifact matches its approved design.

  5. Test in a non-production instance

    All customizations are deployed to a non-production Metabase instance connected to test data, then checked against the agreed definitions, permissions and rendering on the target browsers. The output is a test record listing each case, the expected result, the actual result and the owner who accepted it. Production deployment waits until your team accepts the test record.

  6. Hand over with a maintenance plan

    DeployOpen transfers the customized content and scripts to your team, with documentation of models, metrics, serialization or export steps, and the process for upgrades and changes. The handover includes a maintenance plan that names owners for each customized item and the review cadence. The step is complete when your team has run a walkthrough and accepted the documentation and plan in writing.

What stays in-house and what goes to a partner

This table compares each part of Metabase customization by the skills it needs and who typically owns it after handover, so you can split the work between your team and a partner.

Work areaSkills it needsWho typically owns it after handover
Metric definitions and business logicBusiness domain knowledge, SQL and data modeling, agreement on definitions with finance or operations leadsIn-house. Business owners approve each metric and keep definitions current as the business changes.
Data modeling and SQL tuningSQL, data modeling, query plan reading, knowledge of your source databases and their indexesShared. A partner often builds models and tunes slow native questions, and your data team maintains them.
API scripting and configuration exportREST API and JSON, scripting in a language your team already runs, serialization and version control practiceOften outsourced at first when no one in-house has the skill, then moved in-house once scripts are documented and stored in Git.
Branding and custom map workFront-end skills, design assets and brand guidelines, familiarity with the Metabase theme and map configurationDepends on design resources. Partners usually build the first version, and in-house design or front-end staff own later changes.
Source build changes (if required)Clojure or Java familiarity and a working knowledge of the Metabase build, plus a plan to rebuild on each upgradeAvoid where possible. If a source build is needed, the team that maintains it owns the rebuild and upgrade work.
Plan and permissions validationUnderstanding of collections, data permissions and the features each Metabase plan includes, plus test accounts for each groupShared. Your security or BI lead signs off the results, and a partner can run the test matrix before go-live.
Upgrade regression checks for customizationsREST API and JSON, test scripts, knowledge of which customizations depend on which Metabase featuresShared at first. Your team should own the checklist, and a partner can run it during each planned upgrade.
Documentation and handoverTechnical writing, knowledge of the custom SQL, scripts and branding assets deliveredIn-house after handover. Ask the partner for a written record of every customization and where it is stored.

What usually goes wrong

Most Metabase customization problems come from a small set of decisions made early and not revisited. The cards below name each failure point and the check that prevents it.

Metric definitions that diverge

A metric defined in a model may be recalculated differently in a native question or a dashboard filter, so two reports show different numbers for the same measure. Before go-live, list each governed metric, record where it is defined, and compare results from a model-based question and a native SQL question on the same test data.

Native SQL that breaks on schema change

Native questions reference tables and columns directly, so a renamed column or dropped table fails silently in some dashboards and loudly in others. Assign an owner to each native question, keep SQL in version control where possible, and rerun the collection's questions against a test database after every schema change.

Features missing from the chosen edition

Some customizations depend on capabilities that exist only in paid plans, such as SSO, row and column level permissions, or auditing. Confirm each required feature against the current pricing and plan documentation before design starts, because building on Open Source and then needing Pro or Enterprise changes the architecture.

Scripts with hard-coded IDs

API scripts that reference question, dashboard, collection or database IDs work in one instance and fail in another, because IDs differ between environments. Look up objects by name or a stored mapping at run time, and store environment-specific values in configuration rather than in the script body.

Configuration drift between environments

Settings changed by hand in production, such as permissions, branding, or embedding options, gradually diverge from development and staging. Export configuration through serialization or the API on a schedule, compare exports between environments, and require changes to go through the same review path as code.

Customizations not retested after upgrades

A custom query, script, or embedding setup may behave differently after a Metabase version change, and an upgrade does not confirm that your customizations still work. Check the release notes and version support status before planning an upgrade, keep a test instance on the target version, and run a fixed set of customization checks there before touching production.

How the work changes by starting point

A new Metabase with no saved content is mostly a design exercise. The work centers on defining the collection structure, the permission groups, and the first set of models and metrics before anyone builds dashboards.

  • Design collections and permission groups before anyone saves a question, so ownership is clear from the start.
  • Build a small set of governed models and metrics that the first dashboards depend on.
  • Decide the application database early. Metabase ships with an embedded H2 database for demos and recommends PostgreSQL for production, so confirm that choice against the current installation docs.
  • Confirm which identity method your plan supports (see the people and groups docs for your version) before you add users.
  • Agree on a naming convention and a starter dashboard set that the first users will copy.

What you need to provide

Start by naming an owner for every metric and dataset you plan to customize. A metric in Metabase is shared logic that many questions and dashboards depend on, so one accountable person must approve its wording, its source tables and its change requests. Give the implementation team read access to each source database along with a schema document that describes tables, keys and fields in plain language. Without that document, models and native SQL questions must be reverse engineered, and the build waits on owners who may be busy elsewhere.

Provide a current inventory of saved questions and dashboards, with usage, collection placement and a list of items to retire. This sets the scope of the rebuild and prevents duplicate models. Confirm the Metabase version and edition in writing before design starts. Long-term support releases are supported for 14 months, so the version you choose sets your upgrade calendar. SSO and row and column permissions depend on the edition, which changes the permissions design. Also supply a non-production instance connected to copies of the source databases so changes can be reviewed before users see them.

Supply branding assets such as logo files, color values and any licensed fonts, plus written approval rules that name who signs off on look-and-feel changes and on new models or metrics before they go live. For custom maps, decide which map data you will use, such as region boundaries or GeoJSON files, and who owns its license terms. The source determines whether you can host the file and show it to external viewers. Confirm these licensing decisions with your legal team before the design assumes public data can be embedded or redistributed.

Define an API service account policy before any build calls the Metabase REST API. State which account types are allowed, who approves them, where credentials are stored, how they are rotated and which permission group each account belongs to. Automated provisioning, scripted dashboard updates and serialization tests cannot be validated until these approvals exist. If any decision in this list is missing at kickoff, the affected work moves later in the plan, and the schedule is re-baselined in writing before the team continues.

Frequently asked questions

What does a Metabase customization project cost, and what drives the price?

The price follows from the written scope, and DeployOpen does not publish a price list. The main drivers are the number of models, metrics and native questions to build, how many data sources and permission rules are involved, whether custom branding or custom maps are included, and whether the work includes REST API integration or serialization. Licensing is a separate line item. Metabase's pricing page lists Starter at $100 per month or $90 per month billed yearly with 5 users included, and Pro at $575 per month or $517.50 per month billed yearly with 10 users included. Ask the quote to separate the one-time build fee from any recurring support fee.

How long does a Metabase customization take to complete?

Duration depends on scope, not on a fixed period. Timing is driven by how many models, metrics and custom SQL questions must be designed and reviewed, how many people must approve them, how many data sources need access, and whether any feature depends on a plan your organization has not yet bought. Engagements are fixed-scope, so the timeline is agreed in writing before work starts. Ask for the milestones, what your team must review at each one, and what happens if a dependency such as a database account or identity provider is delayed.

Can our internal team customize Metabase without an implementation partner?

Yes, a team with SQL skills, a Metabase administrator and a named owner for data definitions can handle much of this in-house. The harder areas are permission design, safe use of custom SQL against production databases, embedding and branding changes that touch the application, and keeping customizations working through upgrades. Check whether you can run a staging instance, document metric definitions and carry out a major upgrade with a verified backup and a rollback plan. A partner is most useful where those skills are missing or where a deadline depends on them.

What do we need to provide before a Metabase customization project starts?

Expect to provide named business owners for each metric and dataset, read-only database accounts for each source, a staging environment that mirrors production, and access to the existing Metabase instance and its application database. You also need an agreed list of users, groups and collections, and a decision on how people sign in, such as Google sign-in, LDAP, or an SSO method that requires Pro or Enterprise. Confirm the access model, the reviewers and the approver for go-live in the written scope.

Do Metabase customizations survive upgrades to new versions?

Customizations kept in the application database, such as models, metrics, collections and permissions, are carried through upgrades, because Metabase runs its application database migrations automatically during an upgrade. Custom JAR changes, modified frontend code and custom embedding code must be retested against each release. Metabase LTS versions are supported for 14 months, and non-LTS versions usually reach end of life after 2 months, so plan a release-by-release path. Back up the application database before every upgrade and confirm the rollback method in advance.

Which Metabase customization features need a paid plan?

Customizations that depend on identity or governance need Pro or Enterprise. According to Metabase's pricing page, SSO, row and column level permissions, multi-tenant data segregation and usage analytics and auditing are included only in Pro and Enterprise. Advanced LDAP group and attribute sync, JWT, OIDC, SAML and SCIM provisioning also require Pro or Enterprise, while Google sign-in and LDAP work on Open Source and Starter. All SSO-based embedding requires Pro or Enterprise, and guest embedding authentication works on every plan. The pricing page lists Enterprise by quote starting at $20,000 per year.

How DeployOpen delivers Metabase customization

DeployOpen scopes Metabase customization in writing before any build starts, then builds and tests each change inside infrastructure you control. Engagements are fixed-scope, and ongoing support is available as a retainer.

How we scope

  • Inventory the models, metrics, native questions and branding changes the written scope covers, and name each one.
  • Confirm which customizations work on your current edition, since SSO, row and column permissions and auditing need Pro or Enterprise.
  • Agree the data sources, database credentials and REST API or serialization use in writing before work starts.

How we build

  • Build models and metrics against a staging copy of the application database and the connected data sources.
  • Test custom SQL and native questions for correct results, permissions and performance before they reach collections.
  • Apply branding, custom map and API changes through version-controlled configuration where the chosen Metabase version supports it.

How we hand over

  • Deliver a document that lists each model, metric, question, setting and API integration, with its owner and purpose.
  • Walk your administrators through how to add, change and retire models and metrics without breaking saved questions.
  • Provide serialization exports or configuration records so your team can review changes and restore a known state.

How we support

  • Offer ongoing support, upgrades and testing of custom content as a retainer, scoped separately from the build.
  • Retest models, metrics and API integrations against each Metabase upgrade before they move to production.
  • Confirm with your team which support window, response expectations and change process apply to your environment.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.