Your data is sitting across two brilliant but stubborn systems. Metabase wants to visualize everything, Neo4j wants to connect everything, and you just want your dashboard to stop timing out while fetching relationships. Getting that handshake right is the difference between a living graph and a pile of orphaned nodes.
Metabase is built for questions, not storage. Neo4j is built for relationships, not charts. Together, they turn networked data into clean analytics if you wire them well. The trick is convincing one to speak to the other without losing query performance or access control.
With Metabase Neo4j integration, Metabase acts as the front-end query runner connecting through JDBC or via a Bolt driver proxy. Metabase sends Cypher queries to Neo4j, Neo4j returns structured data, and Metabase renders insights from graph traversal paths. You orchestrate this flow through secure credentials, controlled permissions, and careful query abstraction. Think of it like a translator standing between two geniuses who refuse to speak the same language.
A clean setup starts with identity. Use your organization’s IdP, such as Okta or AWS IAM, to manage access tokens that Metabase can use to authenticate against a Neo4j endpoint. Avoid static credentials. Rotate secrets like you rotate logs. Access policies should mirror role-based graph visibility—what you can see in Neo4j should be what you can query in Metabase.
How do I connect Metabase and Neo4j?
Use Metabase’s database connection settings to specify Neo4j’s connection string and driver. Provide credentials through a managed secret vault. Then configure Cypher queries as cards or models. Once linked, schedules and alerts run against Neo4j graphs the same way they run against SQL sources.