# Governance for customer and usage data in SaaS
A support engineer at a mid-size SaaS company opens a customer's account to debug a billing issue. They can see the customer's payment history, every feature they've clicked in the last two years, and the email addresses of everyone on their team. Nobody logged why they opened the record. Six months later, a regulator asks: who accessed this data, and why. If the company can't answer in minutes, it has a governance problem, not just a compliance problem.
This lesson covers how SaaS companies structure access, lineage, and privacy controls for the three data domains they can't avoid: customer data, usage data, and billing data.
Customer data: account records, contacts, CRMCRMCustomer Relationship Management: software and strategy to manage and analyse customer interactions throughout their lifecycle.Voir la définition complète → (customer relationship management) fields, support tickets. Often lives in Salesforce, HubSpot, or a custom database.
Usage data (product analytics): clickstream events, feature adoption, session logs, APIAPIApplication Programming Interface: a standardised interface that lets applications communicate and exchange data without knowing each other's internal workings.Voir la définition complète → calls. Typically captured via tools like Amplitude, Mixpanel, or Segment, and piped into a warehouse (Snowflake, BigQuery, Databricks).
Billing data: subscription state, invoices, payment methods, tax records. Usually held in Stripe, Chargebee, or an internal billing engine, and it overlaps with financial reporting.
These three datasets rarely live in one system. Governance has to work across the seams, because a single customer's record is scattered across a CRMCRMCustomer Relationship Management: software and strategy to manage and analyse customer interactions throughout their lifecycle.Voir la définition complète →, a data warehousedata warehouseA central repository that consolidates data from many source systems into a structured, query-optimized store designed for analytics, reporting, and business intelligence.Voir la définition complète →, and a payment processor.
Two regulations set the baseline for most SaaS companies with any US or EU customer base:
Usage data counts as personal data under both laws if it can be tied to an identifiable person, which it almost always can via user ID, IP address, or device fingerprint. Billing data adds a second layer: payment card data falls under PCI DSS (Payment Card Industry Data Security Standard), a private-sector security standard, not a law, enforced through card network contracts.
RBAC (role-based access control) assigns data permissions to roles, not individuals. A support agent role sees ticket history and account status. A finance role sees invoices and payment status. An engineer debugging production sees anonymized logs by default, with a documented escalation path to identified data.
A simple RBAC table for a SaaS company:
| Role | Customer PII | Usage events | Billing/payment data |
|---|---|---|---|
| Support agent | Read (own queue) | Read (aggregated) | Read (status only) |
| Product analyst | No | Read (full) | No |
| Finance | Read (billing contact) | No | Read/write |
| Engineer (prod) | No (masked by default) | Read (with audit flag) | No |
The design principle underneath this is least privilege: grant the minimum access needed to do the job, nothing more. This is the same logic banks use for account data, applied to product telemetry.
A basic access policy check, expressed simply:
def can_access(role, dataset, field_sensitivity):
if field_sensitivity == "PII" and role not in ["support", "finance", "dpo"]:
return False
if dataset == "billing" and role not in ["finance", "billing_admin"]:
return False
return TrueThis is illustrative, not production code, but it shows the logic every real access system encodes somewhere: role, dataset, sensitivity level, decision.
Data lineageData lineageData lineage maps how data moves and transforms across systems, from origin to consumption, showing where it came from, what changed it, and where it goes.Voir la définition complète → is the traceable record of a data field's origin, transformations, and destinations. In practice: a "customer lifetime valuecustomer lifetime valueLifetime Value: the total revenue (or profit) a customer generates throughout their entire relationship with your business.Voir la définition complète →" number on a dashboard should be traceable back to the raw billing events and usage rows that fed it.
Why it matters for governance specifically:
Modern data catalogs (Atlan, Collibra, or the open-source OpenLineage project) automate lineage capture across warehouse transformations. Many mid-size SaaS teams still do this manually via documented ETLETLETL (Extract, Transform, Load) is a data integration process that pulls data from sources, reshapes it into a consistent format, and writes it into a target system.Voir la définition complète → (extract, transform, loadextract, transform, loadETL (Extract, Transform, Load) is a data integration process that pulls data from sources, reshapes it into a consistent format, and writes it into a target system.Voir la définition complète →) pipelines, which is workable at small scale but breaks down past a few dozen pipelines.
An audit trail logs who accessed what data, when, and (ideally) why. For the three datasets in this lesson, a minimal audit log captures:
1. Actor (user ID or service account)
2. Action (read, export, delete, modify)
3. Object (which customer record, which table)
4. Timestamp
5. Justification or ticket reference, where policy requires it
This is what turns "we think we're compliant" into "we can prove it." GDPR Article 30 requires records of processing activities; a working audit trail is how that requirement gets satisfied in practice, not just in a policy document.
Vérification des acquis
1. A regulator asks a SaaS company to justify why a support engineer accessed a customer's usage and billing data six months ago. What does this scenario primarily illustrate?
2. Why does governance for customer, usage, and billing data in SaaS companies have to work 'across the seams' between systems?
3. A SaaS company receives a GDPR 'right to erasure' request from an EU customer. What makes fulfilling this request operationally difficult given how SaaS data is typically structured?
4. Select ALL correct answers about the three data domains SaaS companies commonly govern.
Sélectionnez toutes les réponses correctes.
5. Select ALL correct answers about why GDPR and CCPA/CPRA are relevant baselines for SaaS companies handling customer and usage data.
Sélectionnez toutes les réponses correctes.
Governance isn't just policy, it's measurable. SaaS data teams typically track:
None of these have a single universal benchmark number publicly established across the industry; treat any specific percentage a vendor quotes as a claim to verify, not a standard. What's consistent across mature SaaS data organizations is that these metrics are tracked at all, reviewed on a cadence, and tied to an accountable owner (often a DPO, Data Protection Officer, required under GDPR for certain organizations processing data at scale).
Say a customer emails asking what data you hold on them (a GDPR Article 15 access request). Without lineage tooling: an engineer manually queries the CRMCRMCustomer Relationship Management: software and strategy to manage and analyse customer interactions throughout their lifecycle.Voir la définition complète →, the warehouse, and the billing system, taking an estimated 3 to 5 business days for a company with fragmented systems. With a lineage-backed catalog and a pre-built query template mapped to "customer_id": the same request can often be resolved in under a day. The gap isn't the law changing, it's whether the underlying data mapmapUsing software to automate repetitive marketing tasks and campaigns, enabling personalisation at scale across channels like email, web, and social.Voir la définition complète → already exists before the request arrives.
GDPR Explained in 5 Minutes