Overview
Our client, an insurance organization with field teams spread across every US state, partnered with NeenOpal to replace a manual, spreadsheet-driven reporting process with a consolidated Tableau dashboard environment governed by row-level security. Operational data lived in four separate systems covering Airtable, Salesforce, Google Analytics 4, and Google Search Console, and bringing them together meant exporting and stitching the data by hand, which left leadership without a single reliable view of performance. NeenOpal consolidated all four sources into an Azure SQL Server layer, reviewed and corrected the data quality issues that surfaced along the way, and delivered three Tableau dashboards across seven screens that refresh automatically every day. Row-level security was implemented across all fifty states and the independent districts, driven by an entitlement model the client maintains through a single Google Sheet, so every representative sees the states they are responsible for and nothing more.
4
Source Systems Consolidated into One Tableau Environment
50
States and Independent Districts Covered by Row-Level Security
<1
Month From Build Start to Go-Live
Customer Challenges
Before engaging NeenOpal, the client's reporting depended on manual extraction from several unconnected platforms, and there was no mechanism to control which parts of the data a given regional user could see.
Four Sources Consolidated in Azure SQL, Secured in Tableau
Data from Airtable, Salesforce, Google Analytics 4, and Google Search Console is consolidated into Azure SQL Server, where an entitlement table fed by a client-maintained Google Sheet maps each user to their states, and Tableau reads from that layer to serve three dashboards that refresh every day.
Manual Extraction and Consolidation Across Four Systems
Operational data was spread across Airtable, Salesforce, Google Analytics 4, and Google Search Console, with no automation connecting them. Reports from Salesforce in particular were extracted by hand and reviewed manually, and combining that output with the other sources was slow and difficult to repeat. Without a consolidation layer there was no single place to understand performance across the business.
Incomplete and Inconsistent Source Data
The Airtable records were not properly segregated, carried gaps in several areas, and contained discrepancies that only became visible once the data was joined with Salesforce. Any reporting built directly on top of that data would have carried the same errors forward, so the quality problem had to be resolved before a dashboard could be trusted.
No Regional Access Control Across a Nationwide Field Team
The client's teams were divided by region, and without row-level security a representative responsible for one state would have been able to see every other state's data. That was not acceptable to the business, which needed a state-level user to see only their own territory while managers higher in the hierarchy retained visibility across all states.
Access Rules That Had to Change Without Developer Involvement
Representatives change territory, join, and leave, and some cover more than one state, so a fixed access configuration would have needed constant rework. The final user count was also still unconfirmed when the build began, which meant the client needed a way to add and reassign users themselves rather than raising a request each time.
Solutions
NeenOpal delivered the engagement as a consolidation and governance build rather than a dashboard exercise alone, combining data engineering, quality remediation, dashboard development, and row-level security into a single pipeline the client could operate without support.
01.
01. Consolidating Four Source Systems into Azure SQL Server
NeenOpal built the pipeline that fetches data from Airtable, Salesforce, Google Analytics 4, and Google Search Console and lands it in Azure SQL Server as a single consolidated source. Tableau then reads from that layer rather than connecting to each platform separately, which removed the manual extraction and stitching the client had been doing and gave every dashboard one consistent version of the data.
02.
02. Data Quality Review and Correction at the Source
While fetching and quality-checking the incoming data, the team identified the gaps and discrepancies in the Airtable records that had been invisible while the systems sat apart, including the mismatches that appeared when Airtable was joined with Salesforce. NeenOpal reported those findings back to the client, who corrected them at source, so the dashboards were built on data that had already been reconciled rather than on figures that would have needed caveats.
03.
03. Three Tableau Dashboards Across Seven Screens
The team delivered three Tableau dashboards covering seven screens in total. The first dashboard spans three screens built on the combined Airtable and Salesforce data, the second covers three screens powered by Google Analytics 4, and the third provides a single screen built on Google Search Console data. Together they replaced the separate, manually assembled reports the executive and operational leadership had been working from.
04.
04. Tableau Row-Level Security Across All Fifty States
Tableau row-level security was implemented using the state column already present in the consolidated data, extended to cover all fifty states along with the independent districts. An entitlement table in Azure SQL Server holds the mapping of each username to the states they are entitled to see, and that table is joined to the reporting tables so the dashboard filters itself to the viewer. A state-level representative sees only their own territory, while users higher in the hierarchy retain access across every state.
05.
05. A Google Sheet Entitlement Model the Client Controls
Rather than hard-coding the mapping, NeenOpal gave the client a Google Sheet holding the entitlement structure of region, state, and username, connected directly to the pipeline. Any change the client makes in that sheet flows through automatically into the entitlement table and is reflected in the dashboard, so territory changes, joiners, and leavers are handled without development work. The same structure maps one representative to several states, so multi-state coverage needed no additional configuration.
06.
06. Automated Daily Refresh
The pipeline runs on an automated schedule that refreshes the dashboards once every day, replacing the manual export cycle the client had relied on. Leadership opens the dashboards to current figures each day rather than waiting for someone to assemble them, and the delivery from the start of the build to go-live took approximately twenty to twenty-five days.
Services
Benefits
One Consolidated View Across Four Systems
Bringing Airtable, Salesforce, Google Analytics 4, and Google Search Console into a single Azure SQL Server layer gave the client one place to see operational, sales, and web performance together. The consolidation work that had previously been done by hand across four platforms disappeared entirely.
Access Changes the Client Makes Themselves
Territory changes, new joiners, leavers, and representatives covering several states are all handled by editing one Google Sheet, with the change flowing through the pipeline automatically. The client can onboard users and adjust entitlements without raising a request, which was essential given the user count was still growing at go-live.
Current Figures Every Day
The automated daily refresh replaced a manual extraction cycle, so the dashboards are current whenever someone opens them. Executives and operational leaders can act on what they see rather than questioning how old the numbers are.
Reporting Built on Corrected Data
Because the quality review happened before the dashboards were built and the findings were fixed at source, leadership works from figures that have already been reconciled across systems. The discrepancies that had sat unnoticed while the platforms were separate were resolved rather than carried into the reporting.
State-Level Access Enforced Automatically
Every representative sees only the states they are responsible for, enforced by the dashboard itself rather than by restricting who receives which file. Managers above the state level keep visibility across all fifty states and the independent districts, so the hierarchy the business already worked to is reflected in what each person can open.
Conclusion
With NeenOpal's support, the client replaced a manual, four-system reporting process with a consolidated Tableau environment that is governed, current, and secure by region. By landing Airtable, Salesforce, Google Analytics 4, and Google Search Console data in Azure SQL Server, correcting the quality issues that surfaced on the way, and delivering three dashboards across seven screens with row-level security spanning all fifty states and the independent districts, NeenOpal gave leadership a single trusted view while giving every representative exactly the territory they own. Because the entitlement model sits in a Google Sheet the client controls, the solution scales with the field team as it grows, without further development.
FAQ
Common questions about Tableau row-level security and multi-source dashboard consolidation
1. What is row-level security in a Tableau dashboard, and why use it instead of separate dashboards per region?
Row-level security filters the data a user sees inside a single dashboard based on who they are, rather than restricting access to whole reports. A user table maps each person to the records they are entitled to, and that mapping is joined to the reporting data so the dashboard filters itself on open. This avoids maintaining a separate dashboard or extract for every region, which multiplies the build and leaves every copy needing the same update whenever the underlying report changes.
3. Why consolidate several sources into a SQL database before building the dashboard?
Connecting a dashboard directly to each platform leaves the joining, reconciling, and filtering to be repeated every time a report runs, and it makes row-level security far harder to apply consistently. Landing the sources in a single database first creates one modeled version of the data that every dashboard reads from, gives a natural place for the entitlement table to be joined, and allows quality issues to be identified and corrected once rather than in every report.
4. How is access maintained when a representative changes territory, leaves, or covers more than one state?
Because entitlements are held in a Google Sheet connected to the pipeline rather than hard-coded into the dashboard, the client makes the change themselves and it flows through automatically on the next refresh. Adding a joiner, reassigning a territory, or removing someone who has left is a row edit rather than a development request. The same structure maps one representative to several states, so multi-state coverage needs no additional configuration.
2. How is a user mapped to the states they are allowed to see?
An entitlement table holds each username against the states they cover, and that table is joined to the main reporting tables in the database so the dashboard returns only matching rows. In this project the entitlement data lives in a Google Sheet connected to the pipeline, so the client updates region, state, and username there and the change flows into the entitlement table automatically. A state-level representative sees only their own territory, while users higher in the hierarchy retain visibility across all fifty states.
Contact Us
We’d love to hear from you.
Lets discuss how we can transform your business with AI. Talk to our AI expert team. Lets do AI journey together.