Five tracking services loaded and sent data to external servers before the user interacted with the consent banner. This is a direct violation of Section 6(1), which requires free, specific, informed, and unambiguous consent before any personal data is processed. Pre-consent tracking is the single highest-penalty finding a DPDPA scan can surface — the Data Protection Board has signalled this as a priority enforcement area.
consent_granted is pushed to the data layer. This is the standard GDPR/DPDPA pattern — no tracking library needs to change, only the firing logic.analytics_storage: 'denied' as the default state on page load, and update to 'granted' only after the user accepts. GA4 will model conversion data for the consent-denied window, so you will not lose attribution entirely.fbq('init', ...) call until post-consent. The Conversions API (server-side) is a compliant alternative that processes data only after consent is logged.hj('optOut') / hj('optIn'). Call optOut on page load as the default; call optIn only on consent acceptance.A consent banner is present, but it displays only an "Accept All" button. No "Reject All" or "Manage Preferences" option is visible without additional clicks. Section 6(4) of the DPDP Act requires that withdrawing consent be as easy as giving it — a single-click "Accept" with a multi-step or hidden "Reject" path is a dark pattern that invalidates any consent obtained through it. DPDPA consent obtained via a dark pattern is legally equivalent to no consent.
The privacy notice contains no mention of a breach notification procedure. Rule 7 requires every Data Fiduciary to notify both affected Data Principals and the Data Protection Board of India within 72 hours of becoming aware of a personal data breach. The 72-hour breach notification obligation applies from Day 1 of the DPDPA — it is already in force. Failure to disclose this obligation in the privacy notice, and failure to notify within 72 hours when a breach occurs, both attract separate penalties.
The privacy notice was found and is accessible, but fails 4 of the 15 DPDPA-specific checks. Section 5(1) requires the notice to contain specific elements before or at the time of data collection. Each missing element is a separate gap — regulators typically assess notice compliance holistically, but each omission independently contributes to penalty exposure.
The HTTP response headers were checked against Rule 6's requirement for "reasonable security safeguards". Two headers are absent or configured below minimum standards, leaving the site vulnerable to script injection and clickjacking attacks — both of which can directly result in personal data exfiltration, creating compounded liability under Section 8(5).
default-src 'self'; script-src 'self' https://www.googletagmanager.com https://checkout.razorpay.com; img-src 'self' data: https:; connect-src 'self' https://www.google-analytics.com;. Use report-only mode first to catch violations without breaking the site.max-age=31536000; includeSubDomains (365 days). The current 60-day max-age means users are only protected for 2 months after their last visit. For Nginx: add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;Free summary in minutes. Full report with all findings, legal citations, remediation steps, phased roadmap, and PDF export — ₹4,499 + GST.
Scan your site now →