Comply DP

Consent Notice - Standalone

DPDP Act 2023 compliant consent mechanism. Independent from Privacy Policy.

Standalone Consent Notice

Under DPDP Act, this consent notice must be provided independently before requesting consent - separate from the Privacy Policy. It includes itemised data, specific purposes, withdrawal methods, and requires clear affirmative action.

Section 5: Notice RequirementsSection 6: Valid ConsentRule 3: Notice FormatRule 4: Consent Mechanism
Interactive Demo
Try the consent notice for different contexts. Select a context and click "Show Consent Notice".

Purposes for "signup" context:

RequiredAccount Management & Authentication
RequiredService Delivery & Support
RequiredSecurity & Fraud Prevention
RequiredLegal Compliance & Records
OptionalMarketing Communications & Updates
OptionalWebsite Analytics & Performance
✅ DPDP Compliance Features
  • Standalone notice - Independent from privacy policy
  • Itemised data - Each purpose lists specific data categories
  • Specified purposes - Clear purpose for each data type
  • Withdrawal methods - Dashboard, email, portal links
  • Rights summary - Access, correction, erasure, etc.
  • Grievance link - Direct contact to officer
  • Clear affirmative action - Explicit checkboxes
  • No pre-ticked boxes - Optional purposes unchecked
  • Language options - 22 scheduled languages available
  • Timestamp tracking - Records when consent given
🎯 Implementation Points
  • Sign-up flows: Show before account creation
  • Login flows: When consent needs refresh (365 days)
  • Feature activation: Before enabling new features
  • Cookie banner: On first visit or after expiry
  • Profile settings: For managing existing consent
  • Data collection: Forms, surveys, uploads
  • API integration: Consent logged to Supabase
  • Withdrawal tracking: Honors withdrawal immediately
Integration Guide
How to use the consent notice in your application
import { ConsentNotice } from "@/components/consent-notice"
import { useConsent } from "@/hooks/use-consent"

function SignupPage() {
  const { isOpen, show, purposes, handleConsent, handleReject } = useConsent({
    context: "signup",
    onConsentGiven: async (consents) => {
      // Save consent and proceed with signup
      await createAccount({ consents })
    },
    autoShow: true // Show immediately
  })

  return (
    <>
      <ConsentNotice
        open={isOpen}
        onOpenChange={show}
        context="signup"
        purposes={purposes}
        onConsent={handleConsent}
        onReject={handleReject}
      />
      {/* Rest of signup form */}
    </>
  )
}