Why Privacy-Preserving Analytics?
Traditional analytics (Google Analytics) pose serious risks for immigrant communities:
| Risk | Impact |
|---|---|
| IP address logging | Location tracking |
| Device fingerprinting | User identification |
| Cookie tracking | Cross-site surveillance |
| Third-party data sharing | Corporate/government access |
| Subpoena vulnerability | Legal exposure |
An advocacy site claiming to protect immigrants must not feed user data into surveillance ecosystems.
Cookieless Analytics Options
Recommended Platforms
| Platform | Cost | Privacy Features | Hosting |
|---|---|---|---|
| Plausible | $9/mo+ | No cookies, IP hashing, EU servers | Cloud or self-hosted |
| Fathom | $14/mo+ | No cookies, EU data isolation | Cloud only |
| Simple Analytics | $19/mo+ | No cookies, no fingerprinting | Cloud only |
| Umami | Free | Open source, self-hosted | Self-hosted only |
Why Not Google Analytics?
| Issue | Problem |
|---|---|
| Cookies required | GDPR consent banner needed |
| IP logging | Location surveillance |
| Data sharing | Google advertising ecosystem |
| Complex | Overwhelming for simple needs |
| Legal risk | Data subpoena concerns |
Plausible Implementation
Cloud Setup
- Create account at plausible.io
- Add your domain
- Add script to site
Add to _includes/layouts/base.njk:
<script defer data-domain="yourdomain.org" src="https://plausible.io/js/script.js"></script>
Self-Hosted Setup
For maximum privacy, self-host Plausible:
# docker-compose.yml
version: '3.3'
services:
plausible:
image: plausible/analytics:latest
restart: always
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
ports:
- 8000:8000
environment:
- DATABASE_URL=postgres://plausible:plausible@db:5432/plausible_db
- SECRET_KEY_BASE=your-secret-key
- DISABLE_REGISTRATION=true
Key Metrics Available
| Metric | SEO Value |
|---|---|
| Page views | Content performance |
| Unique visitors | Reach estimation |
| Referrers | Backlink tracking |
| Top pages | Popular content identification |
| Countries | Geographic reach |
| Devices | Mobile vs desktop split |
Google Search Console
Setup
- Go to Search Console
- Add property (your domain)
- Verify ownership (HTML file, DNS, or Google Tag)
Key Reports for SEO
Performance Report
| Metric | What It Shows | Action |
|---|---|---|
| Impressions | How often you appear in search | Track visibility growth |
| Clicks | Actual traffic from search | Measure success |
| CTR | Click-through rate | Optimize titles/descriptions |
| Position | Average ranking | Track optimization impact |
Filter by:
- Query (keyword analysis)
- Page (content performance)
- Country (geographic targeting)
- Device (mobile vs desktop)
Index Coverage
Monitor for issues:
| Status | Meaning | Action |
|---|---|---|
| Valid | Indexed and working | Good |
| Warning | Indexed with issues | Review and fix |
| Error | Not indexed | Fix immediately |
| Excluded | Intentionally not indexed | Verify correct |
Core Web Vitals
Track performance metrics:
- LCP, INP, CLS over time
- Mobile vs Desktop comparison
- URL-level issues
Query Analysis
Find optimization opportunities:
Filter: Impressions > 100, CTR < 3%
These are queries where you appear but don't get clicks.
Opportunities:
1. Improve title tag
2. Improve meta description
3. Target featured snippet
Event Tracking
Privacy-Preserving Event Tracking
Track key interactions without cookies:
Plausible custom events:
// Track hotline clicks
document.querySelectorAll('a[href^="tel:"]').forEach(link => {
link.addEventListener('click', () => {
plausible('Hotline Click');
});
});
// Track resource downloads
document.querySelectorAll('a[href$=".pdf"]').forEach(link => {
link.addEventListener('click', () => {
plausible('PDF Download', {props: {file: link.href}});
});
});
Goals to Track
| Goal | Trigger | SEO Value |
|---|---|---|
| Hotline clicks | Click on tel: link | Crisis engagement |
| PDF downloads | Click on .pdf link | Resource usage |
| Legal aid clicks | Click to external legal aid | User journey completion |
| Language switches | Language selector use | Multilingual usage |
Privacy-First Configuration
No Personal Data Collection
Ensure analytics configuration:
// Plausible - already privacy-first by default
// If using any custom tracking:
const trackEvent = (name, props = {}) => {
// Never include:
// - IP addresses
// - User identifiers
// - Form input values
// - Geographic coordinates
// - Device fingerprints
// Safe to include:
// - Page path
// - Event name
// - Aggregated categories
plausible(name, {props});
};
Data Retention
| Setting | Recommendation |
|---|---|
| Retention period | Minimum needed (30-90 days) |
| IP logging | Disabled or hashed |
| User identifiers | None |
| Cross-site tracking | Disabled |
No Cookie Consent Required
Because cookieless analytics don't use:
- Cookies
- Local storage
- Device fingerprinting
- Cross-site tracking
You don't need a cookie consent banner - improving user experience and Core Web Vitals.
Dashboard Setup
Key SEO Dashboard Widgets
| Widget | Data Source | Frequency |
|---|---|---|
| Organic traffic trend | Plausible | Daily |
| Top landing pages | Plausible | Weekly |
| Search queries | Search Console | Weekly |
| Index coverage | Search Console | Weekly |
| Core Web Vitals | Search Console | Monthly |
| Top referrers | Plausible | Weekly |
Weekly SEO Review
- Traffic check - Any significant changes?
- Query analysis - New opportunities?
- Index errors - Any pages dropped?
- Top content - What's performing?
- Referrers - New backlinks?
Compliance Documentation
Privacy Policy Language
## Analytics
We use privacy-preserving analytics that:
- Do NOT use cookies
- Do NOT track IP addresses
- Do NOT create user profiles
- Do NOT share data with third parties
- Do NOT allow cross-site tracking
We collect only aggregate, anonymous data:
- Page views (not tied to individuals)
- General geographic region (country level)
- Device type (mobile/desktop)
- Referral sources
No personal information is collected, stored, or shared.
For Legal Review
Document that your analytics:
- Comply with GDPR (no personal data processing)
- Comply with CCPA (no sale of personal information)
- Do not require consent under ePrivacy Directive
- Cannot be subpoenaed for individual user data
Analytics Checklist
Setup
- [ ] Privacy-preserving analytics installed (Plausible/Fathom)
- [ ] Search Console verified
- [ ] Sitemap submitted to Search Console
- [ ] Goal/event tracking configured
- [ ] Team access configured
Monitoring
- [ ] Weekly traffic review scheduled
- [ ] Search Console alerts enabled
- [ ] Index coverage monitored
- [ ] Core Web Vitals tracked
Privacy
- [ ] No cookies used
- [ ] No IP logging
- [ ] No cross-site tracking
- [ ] Privacy policy updated
- [ ] No consent banner needed
Next Steps
- Review keyword research - Use query data for optimization
- Check technical SEO - Verify Core Web Vitals
- Optimize featured snippets - Use CTR data for improvements