Skip to content

Data Minimization

Collect only what you need. The data minimization principle is foundational to GDPR compliance and a smart engineering choice. For web analytics, it shapes what you store and how long.

GDPR Requirements

Article 5(1)(c) GDPR requires personal data to be "adequate, relevant and limited to what is necessary in relation to the purposes for which they are processed."

Three Components

Adequate:

  • Sufficient to fulfill the purpose
  • Lack of data should not block the goal

Relevant:

  • Rational link between data and purpose
  • Data must apply to the task

Limited:

  • No more data than required
  • Exclude "just in case" information

Enforcement Examples

European regulators apply this principle aggressively.

Case: Company shared sensitive employee data with colleagues without need.

Violation: Transfer wasn't required for the work task.

Result: Official warning.

Case: Insurer requested full medical records for claim handling.

Violation: Excessive medical information unrelated to specific claims.

Result: €52,000 fine.

Case: Excessive scanner-based monitoring of warehouse staff.

Violation: Surveillance beyond work necessity.

Result: €32 million fine from CNIL.

In Web Analytics

Traditional vs Minimalist

The "more is better" trap:

  • Larger attack surface in breaches
  • Harder regulatory compliance
  • Higher storage and processing costs
  • Lower user trust

Minimalist payoff:

graph TD
    A[Data Minimization] --> B[Reduced Security Risks]
    A --> C[Simplified GDPR Compliance]
    A --> D[Cost Reduction]
    A --> E[Increased User Trust]
    A --> F[Improved Data Quality]

Practical Application

Minimal:

  • Anonymized session ID
  • Start/end timestamps
  • Page count
  • Referrer (domain only)

Excessive:

  • Full URLs with personal parameters
  • Millisecond timestamps
  • Full browser details
  • Previous session history

Necessary:

  • Country and region
  • Time zone
  • Browser language

Excessive:

  • GPS coordinates
  • Full IP addresses
  • ISP information
  • Movement history

E-commerce Analytics

Goal: Marketing campaign effectiveness.

Minimal data:

{
    "session_id": "anonymous_hash_123",
    "campaign_source": "social_media",
    "campaign_medium": "organic",
    "conversion": true,
    "conversion_value": 99.99,
    "timestamp": "2025-08-28T14:00:00Z"
}

Excluded:

{
    // Personal information
    "user_email": "user@example.com",
    "user_name": "John Smith",
    "phone_number": "+31234567890",

    // Excessive technical information
    "full_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)...",
    "screen_resolution": "1920x1080",
    "installed_plugins": ["flash", "java", "silverlight"],

    // Detailed behavioral information
    "mouse_movements": [...],
    "scroll_depth_by_second": [...],
    "time_spent_on_each_element": {...}
}

Implementation Strategies

Privacy by Design

Build minimization into the system from day one:

  • Define minimal datasets per purpose
  • Auto-exclude excess data
  • Review data regularly

Purpose-driven flow:

graph LR
    A[Define Analysis Purpose] --> B[Identify Minimal Data]
    B --> C[Configure Data Collection]
    C --> D[Automatic Filtering]
    D --> E[Validate Purpose Alignment]

Technical Methods

Principle: Save aggregated metrics, not individual events.

Example:

// Instead of saving each click
const individualClick = {
    user_id: 'user123',
    timestamp: '2025-08-28T14:30:15.123Z',
    page: '/products/item-456',
    coordinates: {x: 245, y: 678}
};

// Save aggregated data
const aggregatedData = {
    hour: '2025-08-28T14:00:00Z',
    page_clicks: 15,
    unique_sessions: 8,
    avg_time_on_page: 45.6
};

Decreasing-detail strategy:

  • 0-30 days: full data for ops
  • 30-90 days: hourly aggregates
  • 90-365 days: daily aggregates
  • Over a year: monthly aggregates

Adaptive system:

  • Detailed data only with consent
  • Auto-switch to minimal mode for opted-out users
  • Context-driven tracking depth

Automatic Minimization

Algorithmic filtering:

  • Strip query parameters with PII
  • Mask IP addresses (drop last octet)
  • Generalize user agents
  • Round timestamps to the hour

Rules:

  • Unused for 6 months, delete
  • Removing field doesn't change accuracy, exclude it
  • Aggregates suffice, drop detail

Business Benefits

Economic

Lower infrastructure costs:

  • Less storage required
  • Cheaper backups
  • Faster processing
  • Lower cloud spend

Easier compliance:

  • Less data to audit
  • Simpler subject request handling
  • Lower fine exposure

Operational

Better data quality:

  • Higher signal density
  • Less noise
  • More accurate models
  • Faster insights

System performance:

graph TD
    A[Less Data] --> B[Faster Queries]
    A --> C[Reduced CPU Load]
    A --> D[More Efficient Indexing]
    B --> E[Improved User Experience]
    C --> E
    D --> E

Trust and Reputation

User trust:

86% of users support minimizing collected data types. Collecting only what's needed:

  • Demonstrates respect for privacy
  • Reduces concerns about misuse
  • Improves brand perception

Competitive edge:

  • Reputation as a responsible processor
  • Privacy-first marketing position
  • Ready for stricter regulation

Industry Applications

E-commerce

Minimal data:

  • Anonymized cart ID
  • Product categories (no exact names)
  • Total amount
  • Payment method (category)

Goal: Optimize assortment and pricing.

Excluded:

  • Buyer PII
  • Exact product names
  • Purchase history
  • Detailed delivery info

Balance:

  • Behavioral signals over demographics
  • Client-side processing
  • Federated learning for recommendations

Healthcare

Strict requirements:

  • Strict adherence to necessity
  • Separation by specialization
  • Time-limited access
  • Pseudonymization as default

Financial Services

Specifics:

  • Balance AML/KYC with minimization
  • Risk-based collection
  • Auto-deletion after retention periods

Regulated Industries

In finance, healthcare, telecom, minimization must coexist with:

  • Industry-specific laws
  • Mandatory retention periods
  • Audit and reporting
  • Cross-border transfer rules

Recommendations

Implementation Plan

Stage 1: Audit

  • Inventory collected data
  • Map data to purposes
  • Identify excess
  • Assess risks and costs

Stage 2: Policy

  • Build "purpose to minimal data" matrix
  • Define filtering rules
  • Set review procedures
  • Train staff

Stage 3: Technical

// Automatic minimization system example
class DataMinimizer {
    constructor(purposes) {
        this.purposes = purposes;
        this.minimizationRules = this.buildRules();
    }

    collectData(rawData, purpose) {
        const allowedFields = this.purposes[purpose].requiredFields;
        const minimizedData = {};

        allowedFields.forEach(field => {
            if (rawData[field] !== undefined) {
                minimizedData[field] = this.applyFieldMinimization(
                    rawData[field],
                    field,
                    purpose
                );
            }
        });

        return minimizedData;
    }

    applyFieldMinimization(value, field, purpose) {
        const rules = this.minimizationRules[field];
        if (rules && rules[purpose]) {
            return rules[purpose](value);
        }
        return value;
    }
}

// Configuration for different purposes
const analyticsMinimizer = new DataMinimizer({
    'traffic_analysis': {
        requiredFields: ['session_id', 'page_category', 'timestamp_hour', 'referrer_domain']
    },
    'conversion_tracking': {
        requiredFields: ['campaign_source', 'conversion_type', 'value_range', 'timestamp_day']
    }
});

Stage 4: Monitor

  • Assess effectiveness
  • Track impact on analytics quality
  • Adjust rules from feedback
  • Watch regulatory changes

Common Obstacles

Issue: Teams used to maximalist collection.

Fix:

  • Show business benefits
  • Pilot first
  • Train and inform
  • Build tools that simplify minimized workflows

Issue: Legacy systems lack flexibility.

Fix:

  • Phase modernization
  • Add a filtering layer
  • Move to microservices
  • Automate

Issue: Fear of losing analytical depth.

Fix:

  • Synthetic data to fill gaps
  • Federated learning for accuracy
  • New analysis methods for limited data

Minimisation in Statable

This is the principle the product is built on, so it is worth being specific rather than congratulatory.

Never collected. No cookies, no localStorage, no sessionStorage. No screen size, timezone, font list or canvas fingerprint: the script does not read them. The IP address and user agent go into a hash and are discarded on the same path, so neither is stored in any form. Query strings are dropped at ingest, leaving the path.

Collected but expiring. The visitor identifier is rebuilt daily and never spans two sites, so nothing accumulates into a history of a person even in principle.

Your choice to collect at all. The tracking script ships as modules, and each can be switched off under Site settings → General → Tracking Code. Scroll depth, engagement time, outbound clicks, downloads and form interactions are all optional. Turning off what you will not read is minimisation in the plainest sense, and it makes the script smaller as a side effect.

Still on you. Two things are stored exactly as they arrive: page paths, and custom event properties. If a path or a property carries an identifier, minimisation there is a decision made in your application, not in ours.

graph TD
    A[Business Goals] --> B[Define Minimal Data]
    B --> C[Configure Collection]
    C --> D[Automatic Filtering]
    D --> E[Analytics Based on Minimized Data]
    E --> F[GDPR Compliance + Enhanced Performance]
    F --> G[Increased User Trust]

Data minimization is not a constraint. It is the cleanest path to safer, faster, cheaper analytics. Early adopters earn reputation, lower risk, and operational gains.

About AI participation in writing articles

This article, like many others on our site, was created, written and proofread by a team of developers. Of course, not without the participation of AI assistants. We don't hide this and believe that modern systems are already quite good at handling simple tasks and, relatively speaking, writing an article about Viewport yourself is quite strange. It won't come out significantly better and will take a lot of time. But providing basic understanding to beginner webmasters is necessary. Of course, after the article is written by assistants - there's always proofreading, and this is where not one or two people participate, and only after that the article is published.


Ready to take control of your web analytics? Try Statable free for 30 days. No credit card required, full feature access, built for GDPR. Start your free trial or view a live demo.