Project Configuration and Settings
Projects (also called “teams” internally) are isolated data environments within an organization. Each project has its own API keys, event data, and configuration.Understanding Projects
Projects provide data isolation:- Separate event streams and analytics data
- Unique API keys for ingestion
- Independent feature flags and experiments
- Isolated dashboards and insights
In the codebase, projects and teams are interchangeable concepts. The
Project model wraps a Team model for backward compatibility (posthog/api/project.py:73-80).Creating a Project
Project Limits: Organizations on paid plans can create up to 1,500 projects (
MAX_ALLOWED_PROJECTS_PER_ORG in posthog/api/project.py:70). Free plans are limited to one non-demo project.Project API Keys
Project API Token
The primary key for ingesting events:- Read-only field:
api_token(auto-generated) - Used for event ingestion, feature flags, and session recording
- Cannot be manually changed; use token rotation instead
Rotating API Tokens
To rotate your project API token (posthog/api/project.py:695-700):
- Go to Project settings → Danger zone
- Click Reset project API key
- Update your application code with the new token
- Old token is immediately invalidated
Secret API Tokens
For server-side evaluation and sensitive operations:- Primary secret token (
secret_api_token) - Current active secret - Backup secret token (
secret_api_token_backup) - Previous secret during rotation
posthog/api/project.py:708-713):
Project Settings
General Configuration
Key settings fromposthog/api/project.py:120-184:
Basic Information
Basic Information
- Name - Project display name
- Product description - Optional description
- Timezone - Data display timezone (affects date grouping)
- Week start day -
0(Sunday) or1(Monday), auto-detected from IP location
Data Collection
Data Collection
- Autocapture opt-out - Disable automatic event capture
- Autocapture exceptions - Enable JavaScript error tracking
- Autocapture web vitals - Track Core Web Vitals metrics
- Capture console logs - Record browser console output
- Capture performance - Network and performance monitoring
- Anonymize IPs - Hash IP addresses before storage
Session Recording
Session Recording
Core settings:
session_recording_opt_in- Enable session recordingssession_recording_sample_rate- Percentage to record (0.0-1.0)session_recording_minimum_duration_milliseconds- Minimum length to save
Data Management
Test Account Filters
Exclude internal traffic from analytics:default_checked is true.
Path Cleaning Filters
Normalize URL paths for cleaner analytics:Person Display Configuration
Customize how persons appear in the interface:Data Attributes
Control which attributes are captured:Feature Configuration
Surveys
Global survey appearance settings (posthog/api/project.py:391-420):
Heatmaps and Other Products
heatmaps_opt_in- Enable heatmap recordingsurveys_opt_in- Allow survey creationinject_web_apps- Enable web app injectionconversations_enabled- Activate conversations widget
App URLs Configuration
Define authorized domains for your application:- Toolbar authorization
- CORS validation
- Session recording domain matching
Recording Domains
Limit which domains can send session recordings:Group Types
Define custom group types for group analytics:posthog/api/project.py:266-272.
Project Deletion
Deletion process (posthog/api/project.py:634-688):
Moving Projects Between Organizations
Admins can transfer projects to another organization (posthog/api/project.py:844-923):
Activity logs record the organization change with both old and new organization details.
Advanced Settings
Correlation Analysis
Configure feature correlation settings:Query Modifiers
Customize query behavior:posthog/api/project.py:450-454).