Feature ownership

Last updated:

|Edit this page

Each feature at PostHog has an Engineering owner. This owner is responsible for maintaining the feature (keep the lights on) and championing any efforts to improve it (e.g. by bringing up improvements in sprint planning).

When a bug or feature request comes in, we tag it with the relevant label (see labels below). The owner is responsible for then prioritizing any bug/request that comes in for each feature. This does not mean working on every bug/request, an owner can make the deliberate decision that working on something is not the best thing to work on, but every request should be looked at.

💡 The Team Platform works a bit differently. Each subteam owns certain parts of PostHog. Among other things, this helps reduce any lead time when critical fixes are needed. Please review the Team Platform page for further details.

Feature list

You can also view the list directly in GitHub and filter issues there.

FeatureOwnerLabel
ActionsTeam Product Analyticsfeature/actions
AnnotationsTeam Product Analyticsfeature/annotations
API StructureShared responsibility. Features owned by the relevant Small Team.feature/api-structure
Async migrationsTeam CDPfeature/async-migrations
Batch exportsTeam Batch Exportsfeature/batch-exports
BITeam Data Warehousefeature/dashboards
BillingTeam Growthfeature/billing
Client libraries and SDKsShared responsibility with features owned by the relevant Small Team, or try #feature-client-libraries. There is an engineer assigned to SDK support on a rotating schedule. Check the (private) pager duty schedulefeature/pipeline
CohortsTeam Product Analyticsfeature/cohorts
DashboardsTeam Product Analyticsfeature/dashboards
Data ManagementTeam Product Analyticsfeature/data-management
Data WarehouseTeam Data Warehousefeature/data-warehouse
Error trackingTeam Error Trackingfeature/error-tracking
Sentry integrationTeam Error Trackingfeature/error-tracking
EventsTeam Product Analyticsfeature/events
ExperimentationTeam Experimentsfeature/experimentation
Feature FlagsTeam Feature Flagsfeature/feature-flags
Group AnalyticsTeam Product Analyticsfeature/group-analytics
HogQLTeam Product Analyticsfeature/dashboards
HeatmapsTeam Replayfeature/heatmaps
IngestionTeam CDPfeature/pipeline
InsightsTeam Product Analyticsfeature/insights
Live EventsTeam ClickHousefeature/live-events
Messaging (Email, Notifications)Team Growthfeature/messaging
Notebooks@daibhinfeature/notebooks
OnboardingTeam Growthfeature/onboarding
PermissionsTeam Growthfeature/permissions
PersonsTeam CDPfeature/persons
Pipeline TransformationsTeam CDPfeature/pipelines
Pipeline DestinationsTeam CDPfeature/cdp
Platform (US + EU)Team Infrastructurefeature/platform
Project Home PageTeam Product Analyticsfeature/home
Property FiltersTeam Product Analyticsfeature/filters
ReplayTeam Replayfeature/replay
SecurityTeam Infrastructure though it is every teams job to consider and react to security issuesfeature/security
Self-hostingTeam Infrastructurefeature/self-hosting
Session AnalyticsTeam Product Analyticsfeature/sessions
Settings (personal & project)@benjackwhitefeature/settings
SSOTeam Growthfeature/sso
SurveysTeam Surveysfeature/surveys
ToolbarTeam Replayfeature/toolbar
Web AnalyticsTeam Web Analyticsfeature/web-analytics
Webhook delivery serviceTeam CDPfeature/pipelines

Don't just copy other products

Some of the features we are building may exist in other products already. It is fine for us to be inspired by them - there's no need to reinvent the wheel when there is already a standard way our users expect things to work. However, it is not ok for us to say 'let's copy how X does it', or to ship something with the exact same look and feel as another product. This is bad for two reasons:

  • We're highly unlikely to overtake everyone else if we just build the open source version of everything that is already out there.
  • We may expose ourselves to legal risk/challenges from those companies, especially if they can point to a public issue where we have said 'let's copy X'.

Questions?

Was this page useful?

Next article

Handling an incident

Incidents are going to happen. When to raise an incident When in doubt, raise an incident. We'd much rather have declared an incident which turned out not to be an incident. Many incidents take too long to get called, or are missed completely because someone didn't ring the alarm when they had a suspicion something was wrong. To declare an incident, type /incident anywhere in Slack. This will create a new channel and send updates. Anyone can declare an incident, including non-engineers. If in…

Read next article