Back
PhishGuard

Privacy & Data Handling

How PhishGuard handles your email data — built for enterprise privacy compliance.

Your email is never stored. Not the body, not the subject, not the sender's address, not attachments. Personal details are masked inside your browser before anything is transmitted.

What happens on each scan:

  • Sender, subject and body text are read from the mail client by the content script
  • URLs are extracted from links and plain text in the message body, then stripped of tracking parameters, login credentials and anything that identifies you — an email address or an opaque per-recipient token in a link is replaced before the link leaves your browser
  • Personal data is masked locally — addresses, card numbers, bank account and IBAN numbers, phone numbers, SSN/SIN and postal codes. Links inside the message text get the same treatment as extracted links
  • Account or IBAN numbers in the message are never sent; only a one-way hash is, so a payment change can be checked against your organisation's vendor registry
  • Outlook add-in only: the receiving server's authentication verdicts (SPF/DKIM/DMARC) are sent with the sender's address and relay IPs masked
  • Attachments: only file types the engine can read (PDF, Word, Excel, images) are sent, up to 500 KB each; other types send name and size only. Extracted text is PII-masked and never stored
  • The masked remainder is analysed, and the verdict is returned to your browser

We do keep three things, none of which contain your email:

  • An audit recordonly when your organisation uses a PhishGuard organisation key, and only on a fresh scan (a cached result writes nothing). It holds the timestamp, the sender's registered domain (acme.com, never the full address), the risk score and the organisation name. Used to detect abuse and to bill. Anonymous and bring-your-own-key users generate no audit record at all.
  • Feedback you choose to send — if you press "this was wrong": the verdict, the names of the signals that fired, the sender's domain and the extension version.
  • A verdict cache, for 24 hours — keyed by a one-way hash of the message, so reopening the same email does not re-scan it. The hash cannot be reversed into the email. The stored copy has the sender's display name removed and replaced with their domain, so no personal name is held at rest. It is deleted after 24 hours.

Your API keys (if using BYOK) are stored in chrome.storage.session — held in memory only, cleared when your browser closes, and never sent to our servers as a stored credential.

Email data follows this path:

Gmail DOM Content Script Background Worker PhishGuard API
└── CyberSense Rule Engine (always — no data leaves server)
└── Cloudflare DNS (domain name only — no email content)
└── RDAP Registry (domain name only — no email content)
└── Anthropic Claude (only when AI is enabled — see FAQ below)

Your email is not stored at any point on this path. The verdict is returned straight to your browser and shown in the sidebar.

The infrastructure this runs on, which processes data on our behalf:

  • Vercel (United States) — hosting and compute. Requests pass through it; nothing is retained there.
  • Supabase (United States) — the database holding audit records, feedback and organisation keys.
  • Cloudflare — DNS lookups for SPF/DMARC. Receives a domain name only.
  • RDAP registries — domain age lookups. Receives a domain name only.
  • Anthropic (United States) — only when AI is enabled, and only the masked text.

PhishGuard is operated from Canada and these providers are in the United States, so data is processed outside Canada and may be subject to the laws of that country. We will give notice before adding a provider that handles your data.

When you toggle AI off in the extension settings, the scan pipeline is fully deterministic:

  • CyberSense Rule Engine — pattern-matches against known phishing/scam templates (no external API call)
  • SPF/DMARC Check — DNS lookup via Cloudflare (domain only, no email content)
  • Domain Age Check — RDAP lookup (domain only, no email content)
  • First Contact Detection — local storage check in your browser
  • Gmail Spam Context — checks if Gmail already flagged the email

With AI off, zero email data is sent to any AI provider. The scan runs entirely on the server-side rule engine + DNS checks.

When AI analysis is enabled, PhishGuard sends the following to Anthropic (Claude), our AI sub-processor, over HTTPS — and only this:

  • The email subject and the sender's domain — never the display name or address
  • Up to the first ~2,000 characters of the body, PII-masked — email addresses, phone numbers, card numbers, and SIN/SSN patterns are redacted first
  • Up to 10 link URLs, with tracking parameters, credentials and recipient identifiers already removed in your browser
  • For readable attachments, the file name and up to 200 characters of extracted text, PII-masked

Anthropic processes this solely to return a risk verdict. Under Anthropic's commercial API terms, API inputs are not used to train their models. PhishGuard does not store what was sent; the verdict that comes back is cached for up to 24 hours against a one-way hash of the message, then deleted.

If your organisation cannot send any email content to a third party, use deterministic-only mode (AI off, see above) — then zero content leaves for AI analysis. A signable Data Processing Addendum naming Anthropic as sub-processor is available for enterprise clients.

No. If you use Bring Your Own Key (BYOK):

  • Your Anthropic or OpenAI API key is stored in chrome.storage.session — memory only, cleared when your browser closes, never written to disk
  • When you scan an email, the key is sent over HTTPS in the request body to the PhishGuard API
  • The server uses it immediately to call the AI provider and then discards it — it is never logged, stored in a database, or cached
  • The key never appears in any response, error message, or log

If you don't provide your own key, the server uses the environment-level ANTHROPIC_API_KEY configured by your admin. This key is never exposed to your browser or the extension.

PhishGuard is designed for PIPEDA compliance (Canada's private-sector privacy law):

  • Client-side masking: Email addresses in the body text are stripped before anything leaves your browser
  • Server-side masking: A second PII masker runs on the server as a defense-in-depth measure
  • No storage: PII is never persisted — scan results exist only in memory during the request
  • Data minimization: Only the minimum data needed for phishing detection is extracted and processed
  • Purpose specification: Email data is used exclusively for phishing detection — nothing else

The PII masking functions are open source and available for audit in the extension source code (public/extension/content.js).

Yes. PhishGuard follows PIPEDA's 10 Fair Information Principles:

Accountability
Admin dashboard tracks all actions
Identifying Purposes
Used only for phishing detection
Consent
User controls AI toggle + BYOK keys
Limiting Collection
Minimum data for detection
Limiting Use
Never sold or used for training
Accuracy
All signals are verifiable
Safeguards
HTTPS + PII masking + no server storage
Openness
Source code available for audit
Individual Access
Users can see all scan data in sidebar
Challenging Compliance
Contact via support channel

For enterprise compliance audits, contact your security team for a full data processing assessment.

After a scan completes, click Report to Security Team in the result card. This sends the scan result (risk score, signals, sender, subject, and a 500-character body snippet) to your organisation's PhishGuard admin dashboard.

REPORTED DATA
  • Your employee email and name (from extension settings)
  • Email subject, sender, risk score, and classification
  • All detected signals with severity levels
  • Up to 500 characters of body text
  • URLs found in the email

Reporting requires your work email to be set in the extension settings. The report is stored in your organization's Supabase database and visible only to admin users.

Yes. PhishGuard works fully without any AI provider:

  • The CyberSense rule engine detects phishing patterns using deterministic rules — no AI needed
  • SPF/DMARC checks verify sender domain authentication via DNS — no AI needed
  • Domain age checks flag newly registered domains via RDAP — no AI needed
  • First-contact detection tracks new senders locally — no AI needed
  • URL analysis expands shorteners and inspects cloud document links — no AI needed

Turn AI off in extension settings and the scan is fully deterministic. No data is sent to any AI provider, yet you still get domain checks, SPF/DMARC, URL enrichment, and CyberSense pattern matching.