+150 XP

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.

The three datasets every SaaS company governs

Customer data: account records, contacts, CRM (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, API 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 CRM, a data warehouse, and a payment processor.

Why this data is legally sensitive

Two regulations set the baseline for most SaaS companies with any US or EU customer base:

  • GDPR (General Data Protection Regulation, EU law effective 2018): governs personal data of EU residents. Requires a lawful basis for processing, gives individuals rights to access, correct, and delete their data ("right to erasure"), and mandates breach notification within 72 hours to the relevant Data Protection Authority.
  • CCPA/CPRA (California Consumer Privacy Act, amended by the California Privacy Rights Act): gives California residents rights to know what data is collected, opt out of its sale, and request deletion. Enforced by the California Privacy Protection Agency.

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.

Access control: RBAC as the working model

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:

RoleCustomer PIIUsage eventsBilling/payment data
Support agentRead (own queue)Read (aggregated)Read (status only)
Product analystNoRead (full)No
FinanceRead (billing contact)NoRead/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 True

This is illustrative, not production code, but it shows the logic every real access system encodes somewhere: role, dataset, sensitivity level, decision.

Lineage: knowing where data came from and where it goes

Data lineage is the traceable record of a data field's origin, transformations, and destinations. In practice: a "customer lifetime value" 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:

  • Deletion requests: if a customer invokes GDPR's right to erasure, you need lineage to find every copy of their data, including the ones synced into a marketing tool or a BI (business intelligence) dashboard cache.
  • Audit defense: regulators and enterprise customers (via security questionnaires) ask "show me how this metric was calculated." Lineage answers that in minutes instead of days.
  • Breach scoping: if one table is compromised, lineage tells you which downstream reports and exports are also affected.

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 ETL (extract, transform, load) pipelines, which is workable at small scale but breaks down past a few dozen pipelines.

Audit trails: the evidence layer

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.

Knowledge check

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?

MULTIPLE CHOICE

4. Select ALL correct answers about the three data domains SaaS companies commonly govern.

Select all the correct answers.

MULTIPLE CHOICE

5. Select ALL correct answers about why GDPR and CCPA/CPRA are relevant baselines for SaaS companies handling customer and usage data.

Select all the correct answers.

Data-quality and governance metrics that matter

Governance isn't just policy, it's measurable. SaaS data teams typically track:

  • Access review completion rate: percentage of role-based access grants reviewed on schedule (commonly quarterly). A healthy target is close to 100 percent; anything materially below signals stale permissions accumulating, sometimes called "access creep."
  • Time to fulfill a data subject access request (DSAR): GDPR requires a response within one month, extendable to three for complex requests. Mature teams aim to fulfill routine DSARs in days, not weeks, using automated lineage-backed search.
  • PII field coverage in the data catalog: percentage of tables/fields tagged for sensitivity level. Below full coverage means you have ungoverned personal data somewhere, by definition.
  • Audit log completeness: percentage of access events actually captured versus total access events, ideally at or near 100 percent for regulated datasets.
  • Data minimization ratio: proportion of collected usage fields actually used downstream. Low usage of collected fields is a signal to stop collecting them, both a cost and risk reducer.

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).

A worked example: DSAR turnaround

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 CRM, 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 map already exists before the request arrives.

GDPR Explained in 5 Minutes

Watch on YouTube

Key Takeaways

  • Customer, usage, and billing data usually live in separate systems (CRM, product analytics tool, billing platform), so governance must work across seams, not just within one database.
  • RBAC (role-based access control) applied on the principle of least privilege is the standard mechanism for limiting who sees personal and financial data, and should be reviewed on a fixed cadence, not set once.
  • Data lineage, tracing a field from raw source to dashboard, is what makes deletion requests, audits, and breach response fast instead of manual and slow.
  • Audit trails (actor, action, object, timestamp, justification) are the evidence that turns a stated policy into something you can prove to a regulator or enterprise buyer.
  • Track governance health with concrete metrics: DSAR turnaround time, access review completion, PII catalog coverage, and audit log completeness, each owned by a named accountable role.