Privacy Audit Checklist for SaaS Companies: Guide with Templates 2026
Running a privacy audit for your SaaS product requires systematic evaluation across data handling, security controls, and regulatory compliance. This guide provides an actionable checklist with templates you can adapt for your organization.
1. Data Inventory and Classification
Before implementing any privacy controls, document what data flows through your systems.
Create a Data Asset Register
# Data asset register template
data_assets = [
{
"name": "Customer Email Addresses",
"category": "Contact Information",
"pii": True,
"sensitivity": "low",
"retention_period": "7_years",
"legal_basis": "contract",
"storage_location": "US-east-1",
"encryption_at_rest": True,
"encryption_in_transit": True
},
{
"name": "Payment Card Information",
"category": "Financial Data",
"pii": True,
"sensitivity": "high",
"retention_period": "7_years",
"legal_basis": "contract",
"storage_location": "US-east-1",
"encryption_at_rest": True,
"encryption_in_transit": True,
"pci_compliant": True
}
]
Audit each data field in your database. Classify items as public, internal, confidential, or restricted based on sensitivity. This classification drives access controls and retention policies.
Map Data Flows
Document how data moves through your system:
| Stage | Data Type | Source | Destination | Protection |
|---|---|---|---|---|
| Collection | User input | Web form | API Gateway | TLS 1.3 |
| Processing | PII | API | Application Server | AES-256 |
| Storage | Credentials | App Server | Database | Salted hashes |
| Transmission | Analytics | App Server | Analytics Service | Anonymized |
2. Consent and Legal Basis
Verify you have proper legal basis for each processing activity.
Consent Management Checklist
- Display clear privacy notice before data collection
- Provide opt-in for marketing communications
- Document consent timestamp and version
- Implement consent withdrawal mechanism
- Refresh consent for material changes
// Consent tracking implementation
const storeConsent = async (userId, consentType, granted) => {
await db.consent_log.insert({
user_id: userId,
consent_type: consentType,
granted: granted,
timestamp: new Date(),
ip_address: request.ip,
user_agent: request.headers['user-agent'],
policy_version: '2026.1'
});
await redis.setex(
`consent:${userId}:${consentType}`,
86400 * 365, // 1 year
granted ? '1' : '0'
);
};
3. Data Subject Rights Implementation
GDPR and CCPA require you to respond to user requests within specific timeframes.
Automated Response Templates
# Data subject request handler
class DataSubjectRequest:
RESPONSE_DEADLINE = 30 # days
def handle_deletion_request(self, user_id):
user = self.db.get_user(user_id)
# Identify all data stores containing user data
tables_to_clean = [
'users', 'user_profiles', 'user_sessions',
'audit_logs', 'analytics_events'
]
for table in tables_to_clean:
self.db.execute(
f"DELETE FROM {table} WHERE user_id = ?",
[user_id]
)
# Handle third-party data sharing
for vendor in self.integrations.list():
vendor.schedule_deletion(user_id)
# Send confirmation
self.email.send(
user.email,
"Data Deletion Complete",
f"Your data deletion request has been processed. Request ID: {uuid4()}"
)
Rights Checklist
| Right | Response Time | Implementation |
|---|---|---|
| Access | 30 days | Export in machine-readable format |
| Rectification | 30 days | Self-service profile editing |
| Erasure | 30 days | Cascade delete across all systems |
| Portability | 30 days | JSON/CSV export in standard format |
| Objection | 72 hours | Disable processing immediately |
4. Security Controls Assessment
Evaluate your technical security measures.
Authentication and Authorization
# Security configuration audit checklist
authentication:
mfa_required: true
mfa_methods: [totp, hardware_key]
password_policy:
min_length: 14
complexity: true
breach_check: true
session_timeout: 3600
authorization:
rbac_implemented: true
principle_of_least_privilege: true
api_keys_rotated: 90 # days
service_accounts_reviewed: quarterly
Encryption Standards
- TLS 1.3 for all external connections
- AES-256 for data at rest
- Customer-managed encryption keys available
- Key rotation schedule documented
- Certificate expiration monitoring active
5. Third-Party Vendor Assessment
Your vendors directly impact your privacy compliance.
Vendor Privacy Questionnaire
## Vendor Security Assessment
1. Do you encrypt data at rest? (AES-256 required)
2. What is your incident response timeline?
3. Where is data stored? (Must match our data residency requirements)
4. Do you maintain SOC 2 Type II certification?
5. What is your data deletion process?
6. Who has access to our data?
7. Do you sub-process data? If so, with whom?
8. What is your SLA for security patches?
Vendor Risk Matrix
| Vendor | Data Shared | Risk Level | Contract Status | Last Review |
|---|---|---|---|---|
| AWS | All customer data | Critical | Current | 2026-01 |
| Stripe | Payment data | Critical | Current | 2026-02 |
| SendGrid | Email addresses | High | Current | 2025-11 |
| Analytics | Usage data | Medium | Current | 2025-12 |
6. Incident Response Preparation
Document your breach notification procedures.
Breach Response Workflow
async def handle_suspected_breach():
# Step 1: Contain
isolate_affected_systems()
revoke_compromised_credentials()
# Step 2: Assess
scope = determine_breach_scope()
affected_records = count_affected_users()
# Step 3: Notify (within required timeframe)
if affected_records > 500:
notify_regulator(72) # GDPR requirement
for user in affected_users:
notify_user(user, breach_details)
# Step 4: Document
await incident_db.create({
'type': 'data_breach',
'discovery_date': now(),
'affected_count': affected_records,
'notification_date': now(),
'root_cause': investigation_result
})
Incident Response Checklist
- Designated incident response team
- 24/7 breach detection capability
- Documented escalation procedures
- Regulator notification templates ready
- User notification templates prepared
- Post-incident review process defined
7. Documentation Requirements
Maintain evidence of compliance efforts.
Required Documentation
| Document | Update Frequency | Retention |
|---|---|---|
| Data Processing Agreement | On contract change | Contract duration + 6 years |
| Privacy Impact Assessment | On significant change | 5 years |
| Consent Records | Continuous | 7 years |
| Security Logs | Continuous | 1 year minimum |
| Incident Reports | Per incident | 7 years |
| Training Records | Annual | 3 years |
8. Regular Review Cadence
Privacy compliance is not an one-time effort.
Audit Calendar
## Quarterly Reviews
- [ ] Access control audit
- [ ] Vendor compliance verification
- [ ] Data retention policy enforcement
- [ ] Consent rate analysis
## Annual Reviews
- [ ] Complete privacy impact assessment
- [ ] Security controls penetration testing
- [ ] Policy updates for regulatory changes
- [ ] Staff privacy training refresh
- [ ] Data mapping refresh
## Event-Triggered Reviews
- [ ] New data processing activity
- [ ] Vendor change
- [ ] Security incident
- [ ] Regulatory inquiry
- [ ] Significant product changes
Related Articles
- Privacy Audit Checklist for Web Applications: A Developer
- Privacy Audit Checklist for Small Businesses
- Encrypt Your Entire Digital Life: A Checklist
- How To Create Vendor Privacy Scorecard For Evaluating Saas T
- Privacy Setup For Stalking Victim Digital Prot
Built by theluckystrike — More at zovo.one