cleanpd_requests table doesn't exist yet in your Supabase project. Create it to track request history and statuses.
create table if not exists cleanpd_requests ( id uuid primary key default gen_random_uuid(), user_id uuid, broker_id text not null, broker_name text, broker_url text, method text, email_to text, status text default 'pending', sent_at timestamptz default now(), updated_at timestamptz default now(), notes text ); -- If the table already exists, run this to add the user_id column: -- alter table cleanpd_requests add column if not exists user_id uuid;After creating the table, reload this page.
Data brokers collect and sell personal information. You have legal rights to opt out and request deletion under CCPA (California), GDPR (Europe), and general privacy principles. This tool emails opt-out requests on your behalf to 750+ data brokers — free, no API fees. Brokers re-add data over time; re-run every 3–6 months.
Enter your email address or phone number to generate a list of data broker sites that likely have your information, get an AI-powered risk assessment, and send opt-out requests in one click.
| Site | Category | Priority | Method | Last Sent | Actions |
|---|
Choose the legal framework to use in opt-out emails. CCPA and GDPR templates cite specific laws and carry more legal weight. Use Generic for brokers outside the US/EU or when unsure.
| Broker | Method | Categories | Status | Action | |
|---|---|---|---|---|---|
| Loading broker database… | |||||
user_id empty in cleanpd_requests. They do not appear in History until linked. Site admins only: you can run a targeted UPDATE … SET user_id = … WHERE user_id IS NULL AND … in the Supabase SQL editor; do not assign all null rows to one user if multiple people use Clean PD.| Broker | Method | Sent | Status | Notes | Set status |
|---|---|---|---|---|---|
| Loading history… | |||||
cleanpd_profiles table doesn't exist yet. Run this SQL in your Supabase SQL editor:
create table if not exists cleanpd_profiles ( id uuid primary key default gen_random_uuid(), owner_user_id uuid references auth.users (id) on delete cascade, name text, email text, phone text, dob text, address text, aliases text, notes text, created_at timestamptz default now(), updated_at timestamptz default now() ); create index if not exists cleanpd_profiles_owner_user_id_idx on cleanpd_profiles (owner_user_id);
Existing projects: run sql/cleanpd_profiles_add_owner.sql in Supabase to add owner_user_id if the table already exists without it.
| Name | Phone | Date Added | Remove | |
|---|---|---|---|---|
| Loading profiles… | ||||
Checks every broker URL in the database and flags ones that return errors or are unreachable. Runs in the background — checks 10 brokers at a time with 1-second pauses. Takes ~10–15 minutes for 750 brokers. You can navigate away and come back.
| Broker | URL Checked | Result | Remove |
|---|