0
0
mirror of https://github.com/PostHog/posthog.git synced 2024-11-27 16:26:50 +01:00
posthog/CHANGELOG.md
Michael Matloka daac875e05
Clean CHANGELOG.md up (#4380)
* Clean up old releases

* Clean Cloud pricing note up
2021-05-18 12:11:41 +00:00

127 KiB
Raw Permalink Blame History

Changelog

1.25.0 - Thursday 13 May 2021

  • 100x more, for free

We have increased our free volume on PostHog Cloud to 1 million events per month for free, instead of the previous 10k.

That means your next PostHog Cloud bill will be up to 225$/month cheaper!

It's important to us that you have enough room to determine if PostHog is the right fit for you, before committing to the platform.

This change is also retroactive, so existing PostHog users have already had this change applied to their accounts.

Enjoy!

Legends

This feature isn't new to all of you, because we've been testing it out with a feature flag. However, legends for charts in 'Trends' are now enabled for everyone!

With legends, you're able to determine with more clarity the different sections/lines you see on a graph, see the exact values for each datapoint, and disable sections with one click. You can find them under your graph in 'Trends'.

Plugin Logs

Plugins are now able to use the JavaScript console API to specify errors that will be shown to users in the PostHog UI. This makes it easier to both debug your own plugins as a developer, and understand what's wrong about your configuration as a plugin user.

Lifecycle Toggles

Li joined us this cycle and started making an impact from day 1!

As a result of her work, you can now toggle different sections of lifecycle graphs on and off, in order to dig into the metrics that matter most to you.

This change also came with an addition of more in-product hints about the lifecycle functionality.

Resizable Columns

Sam is another one of our new team members who's been smashing it from the moment he joined!

This cycle, in addition to picking up a variety of product fixes and improvements, he also shipped resizable columns for our tables, allowing you to easily get more details from an event, session, or feature flag without having to click on it.

Plugins keep getting more and more powerful every new release, and this cycle was no exception.

Plugin developers can now leverage job queues to implement a variety of asynchronous tasks, including retry mechanisms.

In addition, plugins can now leverage have two more functions: onEvent and onSnapshot.

These are read-only functions that run on processed events and are particularly useful for export plugins. onSnapshot handles session recording events while onEvent handles all other events.

For more information about this, check our Building Your Own Plugin page.

In addition to making significant changes to improve the experience of users with massive amounts of event names and properties, we have also implemented fuzzy search for properties.

This means that to find a property on a filter, you no longer have to type an exact subset of its name, as our search mechanism will still be able to identify what you mean even if you have a few typos or forgot the exact name of the property.

1.24.0 - Wednesday 14 April 2021

GeoIP

Plugins are now live on PostHog Cloud, and, as a bonus, we have now added out-of-the-box support for the PostHog GeoIP plugin, which adds location properties to your events, such as country and city, as well as a dozen other values!

The plugin works on both cloud and self-hosted installations (1.24.0 minimum).

Cohorts tab

When viewing a person's page in PostHog, you can now toggle between a view of their properties and a view of the cohorts this person is in, giving you a lot more context on the user you're looking at.

Data attr

To make the experience of using the PostHog toolbar better, we have recommended that you set data-attr on your elements, so that the toolbar can leverage it for finding elements. However, since a lot of our users already used their own data attributes, we now support adding a list of your own data attributes for the toolbar to look for.

You can configure this in 'Project Settings'.

Dashboard collab

Our dashboards keep getting better with every new release, and this one is no different!

Dashboards now support descriptions and tags, making it easier for teams to collaborate when creating internal analytics reports.

These are enterprise features available to our paying Cloud customers, and to enterprise self-hosted users.

If you're interested in having these features on your self-hosted PostHog instance, contact us on sales@posthog.com.

We have a new plugin that sends PostHog events to an S3 bucket.

The plugin works on both PostHog Cloud and self-hosted installations (1.24.0 minimum) - check it out here.

If you tell Karl you found an issue with session recording, he will fix it.

Such was the case with session recording for heavy websites (e.g. those with a lot of images/CSS). We were failing to process large snapshots, leading users of these websites unable to get many session recordings.

This is now fixed - expect a lot more recordings available to you from now on!

Following user requests, there are now 10 new config options for posthog-js, allowing you to use autocapture with greater privacy for your users, as well as tailor session recording configuration.

The new options are:

  • mask_all_text: Specifies if PostHog should capture the textContent of autocaptured elements
  • mask_all_element_attributes: Specifies if PostHog should capture the attributes of autocaptured elements
  • session_recording: Accepts an object that lets you configure the following rrweb options:
    • blockClass
    • blockSelector
    • ignoreClass
    • maskAllInputs
    • maskInputOptions
    • maskInputFn
    • slimDOMOptions
    • collectFonts

See our JS Integration page for more details.

Our First Time Event Tracker plugin now also tracks session starts. By enabling it you will get session_started events in PostHog, as well as events that started a session will be tagged with property is_first_event_in_session set to true.

1.23.1 - Monday 22 March 2021

We've made the interval between background action calculations configurable, with a default of 5 minutes. Previously the interval was set in stone at 30 seconds, which could cause unmanageable database load in some conditions.

1.23.0 - Thursday 18 March 2021

Toolbar Date Filter

Following a fierce battle with Webpack, Marius brought us the heatmap date filters.

Our heatmaps are now on a whole new level as they are no longer set to show only the last 7 days but allow you to pick any date range. You can now see heatmaps of yesterday, the last 30 days, or any range you like!

Filter test accounts

If you've ever found yourself looking at a graph and wondering: "how much do events from me and my team affect this data?", well, your days of wondering are over.

We now provide you with a toggle in 'Insights' to automatically filter out test accounts and your team's accounts your team from your graphs. Out of the box we provide you with some basic relevant filters, but you can also configure this yourself in 'Settings'.

Webhooks

Members of our community pointed out to us that our latest release caused some issues with webhooks on self-hosted FOSS installations. Largley with help from various community members who provided us with context and feedback, we have now addressed these issues and webhooks should work as normal on 1.23.0.

However, we made sure to throw in a little treat to make up for it. You can now access all event properties in your webhook messages, which opens up a whole new realm of possibilities for creating useful alerts and notifications for when certain actions are triggered in PostHog.

Gravatars

PostHog now has an 'Organization Settings' page that lets you rename and delete your organization, as well as manage invites.

Oh, and don't we all love gravatars?

Well, if you have one set for your email, PostHog will now display it on your profile and the 'Organization Settings' page.

Based on user requests, we have now built a plugin that adds two boolean properties to your events:

  • is_event_first_ever: tells you if the event if the first event of its kind
  • is_event_first_for_user: tells you if the event is the first event of its kind for the user

By enabling it you are then able to add a filter for those properties on all your analytics, to determine things like conversion rates from first touch.

Important: This plugin will only work on events ingested after the plugin was enabled. This means it will register events as being the first if there were events that occurred before it was enabled.

1.22.0 - Wednesday 3 March 2021

Important Announcement for Self-Hosted Users

If you're self hosting PostHog, make sure you have your plugin server up and running correctly. You can check that this is the case by looking at the color of the middle circle on the top left of the PostHog UI.

If your plugin server is running, this will be a green checkmark, and hovering over it will give the message "All systems operational", like so:

Plugin server

From this version (1.22.0) onwards, if your plugin server is not running, this circle will turn orange/yellow. You can click on the server to verify if your plugin server is indeed the problem.

This is important because from the next release onwards we will move our event ingestion to the plugin server, meaning that you will not be able to ingest events if your plugin server isn't running.

Bar chart by values

Before this change, our bar charts would always be time-based, meaning that if you had multiple graph series (values), these would just all be stacked into one bar for each time period.

However, we now support two different types of bar charts! When selecting a chart type, you will see the options 'Time' and 'Value' under 'Bar Chart'. Selecting 'Value' will give you the view from the image above, where each graph series is represented in a separate bar, with the value consisting of the aggregate value for the time period specified.

UTM Tags

PostHot now automatically sets user properties from UTM tags. You can now filter and create cohorts of users much more easily based on what campaign, source, or medium brought them to your product or landing page. This is a big feature for us as it gives our users an automatic way of connecting marketing and product to have a more complete view of your business. We're very excited for our community to start using this feature and extending it through plugins.

Multiple equality selector

Writing complex filters is now easier than ever before. You can now select multiple values for Equality Filters instead of just one - this will simplify filter creation and debugging and just save people a lot of time!

Dashboards New UX

It's now easier to work through your key metrics in Dashboards:

  • All dashboard panels can be refreshed at the same time to ensure you're not seeing cached results

  • Time ranges for all dashboard panels can be changed at the same time

  • The dashboard author and creation time are displayed below the title

  • A Much Better UI for Person Pages

Persons New UX

The UI of our person pages just got a whole lot better! As is often the case with our larger features, this isn't news to all of you. We had this behind a feature flag and have now decided to roll it out for everyone.

Now you can visualize user properties alongside a user's events, and most of the context you need on a person is available to you in a sleek UI without you needing to scroll.

Oh, and the code got much better as a result too...

Set properties on any event

The event properties $set and $set_once can now be used on any event to set properties directly to the user associated with that event.

Previously, this would only work on $identify events, making it so that you needed to call multiple methods in order to send an event and set user properties based on the same data. But now, you can do it all in one, as shown in the image above.

Event Sequence Timer Plugin

Our users requested a way to measure the time passed between certain events, and this is it!

By installing the Event Sequence Timer Plugin, you can specify as many sets of events as you want and the plugin will track the time between them, either using a first touch or last touch mechanism.

It will then add a property to your events that allows you to easily build visualizations in PostHog of the average, minimum, and maximum time between events, as well as all the other mathematical operations we support.

Property Flattener Plugin

The new Property Flattener Plugin allows you to convert event properties contained in a nested structure into a flat structure, allowing you to set filters based on the nested properties.

Docs Token Autofill

If you're a user of PostHog Cloud, we now autofill your Project API Key and API Host automatically in the Docs for you, meaning you can copy-paste snippets and use them directly with no manual changes!

This key will be based on the last project you used in PostHog, and you can check what project that is by simply hovering your cursor over the highlighted key.

1.21.0 - Wednesday 17 February 2021

New Nav

While this might not be news to all of you, we have now released our new navigation to everyone.

We had this behind a feature flag, but now all our users have access to our fresh spaceship-like navigation. What do you think? 🚀

Refreshing Insights

To provide a smooth user experience, we cache query results so that you don't have to wait for a query to run every time you go back to a chart you've recently looked at.

However, this might mean you're sometimes looking at slightly outdated results. As such, we now clearly indicate to you if you're looking at a cached result, how long ago this result was computed, and allow you to refresh it any time you want to see an updated result.

Session filters

Our session recording filters just got so much more powerful.

Filter by session duration, user properties, unseen recordings, actions performed in a session, and so much more.

You can now get a lot more out of your session recording sessions by tailoring the recordings to specific areas of your product you're looking into.

For a start, how about integrating PostHog with Sentry and watching all recordings with an $exception event in them?

Feature Flag Multiple Groups

Feature flags can now be rolled out to multiple different groups that use distinct settings, unlocking a whole new world of opportunities for your A/B testing and feature rollout processes.

For example, you can now determine a feature flag to be rolled out to all of the following:

  • 100% of users in the 'Beta Testers' cohort
  • 40% of all your users
  • All users in a specific team that requested the feature from you

You can then adjust the filters and rollout percentage for each individually, giving you an even greater degree of flexibility with how you leverage our flags in your workflows.

Plugins UI

A lot has happened to our plugins feature since the last release, including:

  • An improved UI
  • The ability to reorder plugins
  • The ability to upgrade plugins (and see exactly what changed between plugin versions)
  • Autofill on commonly used plugin configuration fields
  • A new plugin configuration field type, letting plugin builders specify pre-determined choices for the user to select from
  • A ton of performance improvements

Taxonomy Plugin

Standardize your event names into a single naming pattern by converting the names of your events that don't match your desired pattern into the chosen format, such as camelCase or snake_case.

Bitbucket Plugin

Get your Bitbucket release tags into PostHog as annotations on your graphs, so you can track the impact of releases on your metrics.

1.20.0 - Tuesday 19 January 2021

Plugin Library Screenshot

A lot has been happening on our Plugins front.

Besides a whole bunch work to deliver performance improvements and mature the PostHog Plugins ecosystem, we have two major changes being introduced with this new PostHog version:

A shiny new plugin library

We have released a plugin library where you can browse through all the plugins built by our core team and community, and made sure the library is populated with plugins! Thus, we now have integrations that support getting data from GitHub and GitLab, or sending data over to BigQuery and Hubspot, for example.

We're working to make plugins available on Cloud, but, in the meanwhile, if you're self-hosting, do check out our plugins and let us know what you think!

Plugins can now access persistent storage

Up until now, plugin builders would have noticed that the cache could have been used to store data in-memory using Redis, but we now also support storage, which allows plugins to store data in a persistent form, opening up a lot of new use cases for you to explore.

Static Cohorts Screenshot

In addition to our standard dynamic cohorts (periodically updated based on the definition), PostHog now support static cohorts - groups of users that don't update.

To create a static cohort, head over to 'People' -> 'Cohorts' and, when creating a new cohort, select 'Upload CSV'. This CSV file should have a single column with either the user's distinct_id or email.

This way, you can import data from outside sources into a PostHog cohort more easily, as well as turn your dynamic cohorts into static ones by first exporting them. You could, for example, add your Mailchimp subscribers list as a static cohort.

Sortable Funnels Screenshot

As of this new release, when you head over to Funnels in PostHog, you will see 3 dots next to each funnel step. By dragging these 3 dots up and down you can now re-order your funnel's steps, for example if you made a mistake, or want to explore different funnel structures.

This was a feature that was consistently requested by the PostHog community, and we'd like to also shoutout @glmaljkovich for helping us build it!

Bookmarklet Gif

To try out the PostHog snippet without having to update anything on your codebase, you can make use of our bookmarklet, which you can find over in 'Project Settings'.

This lets you capture events in your website without any code, and we've been using it actively during our demos!

Since joining us, Karl has been submitting performance improvement after performance improvement.

This time, as session recordings are being used more and more by our users, it was time to speed up the loading of the sessions list, which now loads 10x faster!

1.19.0 - Tuesday 15 December 2020

Plugin Editor Screenshot

We now support scheduled plugins that run periodically on a specified time cycle (e.g. minute, hour, day), as well as have a built-in code editor for plugins right into the PostHog UI.

With the ability to run tasks in specified time intervals, you can now setup plugins that, for example, keep track of external metrics and add this data to PostHog via new events. This is possible because we now support posthog.capture calls inside plugins as well.

Some metrics you might want to keep track of are, for example, server performance, GitHub activities (e.g. stars ), engagement with your project's social media profiles, and anything else you can think of!

You can learn more about scheduled plugins on the PR that created them, as well as our docs for building your own plugin.

Note: Plugins are a Beta feature currently only available on self-hosted instances. We are working to make it available on PostHog Cloud soon.

Lifecycle Screenshot

Our 'Trends' tab just got an awesome new feature: lifecycle graphs!

Lifecycle analysis digs deeper into your events and shows you a breakdown of the users who performed the event into new, returning, and resurrecting users. In addition, it also shows you the churn on for the specified time period.

To use it, select 'Shown As' -> 'Lifecycle' when in the 'Trends' tab.

Gzip Session Recording Screenshot

See the image above? That's our event processing time before and after the new compression scheme!

By using gzip-based compression, we have now significantly improved performance both on the client and server, making event processing faster, as well as decreasing the number of session recordings that are lost. Be on the lookout for more green play buttons on your 'Sessions' page now.

If you installed posthog-js via npm, you should update to version 1.8.0 to get access to this update. Snippet users have access to the latest version by default.

New Actions UX Screenshot

This might not be news to all of you, since we have been experimenting with our actions UX using feature flags. However, we're now rolling out a new UX for creating actions to all PostHog users, so try it out let us know what you think!

In addition to the average, sum, maximum, and minimum operations available to numerical properties in trends, we now also support median, and 90th, 95th, and 99th percentiles.

Full Release Notes

1.18.0 - Monday 30 November 2020

Our primary goals for this release were to iron out bugs and improve the user experience of our Beta features.

As a result, we fixed a whole lot of stuff. We merged dozens of PRs with session recording fixes and improvements, and a dozen more with updates to our plugins functionality. We also improved things like event ingestion, the UX for feature flags, and our settings for both organizations and projects. You can read through the entire list of fixes on our website, but beware: it's quite long.

Events Box Screenshot

We upgraded our event selection box to include actions and events in one, as well as provide smarter recommendations of events and actions you might want to use of based frequently used in queries by you or your team.

A new version of posthog-js is available and we recommend you to update if you've installed it via npm. Snippet users have access to the latest version by default.

The new version includes a lot of bugfixes that improve our session recording feature, as well as is significantly lighter, having had a lot of legacy code removed.

R.I.P. to the hundreds of lines of JavaScript that were removed - you will not be missed.

Following feedback from a user, we have now added support for PostHog Plugins to our Helm chart.

If you're using the chart to deploy PostHog, upgrading to the latest version will give you access to the new plugin server (Beta).

Out of the many improvements to session recording, there are some worth mentioning specifically:

  • Keyboard shortcuts for the session recording player (spacebar to pause/play, f to open player in full screen)
  • Ability to jump back/forward 8 seconds with the keyboard arrows (or player button)
  • Full-screen support for the session recording player without losing the controls bar
  • Pause/Play recording when clicking on the video
  • Skipping inactivity made clearer with an overlay over the player
  • The session recording player is now responsive to the client's screen size
  • Incomplete session recordings (i.e. "blank screens") are now hidden from the list

1.17.0 - Tuesday 17 November 2020

Sentry Screenshot

An important part of developing a great user experience is identifying, tracking, and fixing bugs.

With our new Sentry integration, you can (i) leverage PostHog data to help your debugging (ie to see the user's event history or to watch a session recording), and (ii) use Sentry exception data to quickly spot if errors are affecting your product metrics (ie to see if errors are causing churned users).

As a two-way integration, it:

  • Adds a direct link in Sentry to the profile of the person affected in PostHog
  • Sends an $exception event to PostHog with a direct link to Sentry

If you're unfamiliar with Sentry, we highly recommend you to check it out - it is an awesome application monitoring platform of which we're avid users at PostHog.

To set up the integration you can read the step-by-step instructions on the dedicated Sentry Integration page.

RudderStack is an open-source, warehouse-first, customer data platform for developers. It allows you to collect and deliver customer event data to a variety of destinations such as data warehouses and analytics platforms.

As of last week, PostHog is now available as a destination on RudderStack, allowing you to send your event data from various sources into PostHog for performing product analytics.

You can read more about RudderStack on their website, and learn how to integrate PostHog through their comprehensive integration docs.

MaxMind Plugin Page Screenshot

Over the past two weeks, our Plugins feature was extensively worked on to improve the experience of using and developing plugins for PostHog.

One of the main changes was the addition of plugin attachments, which allow you to upload files that are used in the configuration of the plugin, vastly expanding the realm of possibilities of what plugins can do.

As a result of this, we built the PostHog MaxMind Plugin, leveraging attachments to allow GeoIP data to be used for enriching your events. Once configured, the plugin adds IP-based location information as properties on your events, such as what country and city your users are located in, making it possible to create charts and tables filtered based on the location of your users.

Note: Plugins are currently only available on self-hosted instances. If you're self-hosting and want to use the PostHog MaxMind Plugin, please follow these instructions. If you want to build your own plugin, check out our fresh new guide on how to do so.

Retention Panel Screenshot

Dashboards are a key part of PostHog, so it's important to us that you can have an overview of as many as possible of your metrics in them.

As such, the user paths graph and the retention table can now be added as panels on dashboards, making it so that every single chart, table, funnel, and graph you create in PostHog can make it to your dashboards now.

First Time Retention Screenshot

Following some feedback from our own Growth Engineer on what functionality we need for ourselves at PostHog, we have now extended the functionality of our 'Retention' view, adding first time retention and differentiating between 'Cohortizing' and 'Retaining' events.

In short, first time retention cohortizes users based on when they did an event for the first time, rather than adding a user to each cohort they had the event in. Additionally, by being able to have different target events for the cohort and the retention, you are able to track the impact of 'Event A' on the retention of 'Event B', exploring hypotheses such as how users who read your documentation retain on product pageviews when compared to other users.

Manage Events View Screenshot

In an effort to make it easier to filter through your events in PostHog and tag events that you find useful, we have now consolidated 'Events' and 'Actions' into one single view, found on the left sidebar as 'Events & Actions'.

On this page, you'll be able to manage everything related to your events, from inspecting their properties, to tagging them as actions. In addition, we have also added stats for your event and property volumes, so you can dig deeper into your analytics data collection, and optimize it to your needs.

Following a lot of great user feedback, we have now significantly improved our AWS CloudFormation Deployment.

We have now added configuration for relevant alerts and RDS disk size, as well as improved the setup flow and added automatic SECRET_KEY generation. If you're happy with the standard config, deploying with AWS is now just a matter of "click, click, click", as described by Karl, one of our engineers.

1.16.0 - Wednesday 4 November 2020

Session Recording Page Screenshot

Given that our mission at PostHog is to increase the number of successful projects in the world, session recording felt like a feature that fits in perfectly with that goal.

PostHog already provides various features to help you understand and improve your UX - but watching real users use your product is a whole other ball game.

With PostHog's session recording, you are able to truly feel the pain points of your users first-hand, seeing where they get stuck, debugging exceptions faster, and making your UX smoother.

Session Recording Screenshot

Additionally, you can do so while still preserving the privacy of your users, by determining what shouldn't be captured, as well as being able to turn session recording on and off as you wish.

However, please note that our session recording feature is in Beta at the moment. This means that it can be unstable and have bugs. To report bugs you find while using it, please open an issue for us on GitHub.

If you have posthog-js installed via npm you will need to update to latest version.

Plugins Screenshot

Plugins is another Beta feature that we're extremely excited for. Currently only available for self-hosted instances, plugins allow you to add additional logic to your event processing pipeline, in order to do things like enrich your data or send it somewhere else, for instance to a data warehouse.

At the moment, we have created a few example plugins for you to test out the functionality, and have the intention of launching more for the next release. We will also be launching tutorials on how to make your own plugins, so stay tuned for that.

As of right now, if you're on a self-hosted instance, you should head over to 'Project' -> 'Plugins' to enable the functionality. You can start testing it out with our "Hello World" plugin, which adds a property to your events called foo with a value that is up to you to decide in setup.

We also have built plugins for currency normalization and GeoIP data, allowing you to convert currency values in events according to up-to-date exchange rates and determine the location of an event based on the user's IP.

Our overall vision for plugins is to enable seamless integration with other relevant data analytics platforms, as well as allow users to more easily customize PostHog's functionality by adding their own logic and data to the event pipeline.

Finally, as is the case with session recording, please report any bugs in the functionality on GitHub.

Multiple Projects Screenshot

You asked and we delivered!

As per feedback from many in our community, PostHog now offers support for managing multiple projects under one "umbrella" organization.

This allows you to segregate concerns, such as keeping tracking for your dev and prod environments separately, as well as track multiple domains and apps without mixing data.

In addition, we also enhanced our invite and permissioning system as a by-product of this feature.

As this is an Enterprise Edition feature, please contact us at sales@posthog.com if you are interested in using it.

Dashboard Templates Screenshot

In order to make it easier to create valuable dashboards to keep track of your business metrics, PostHog now offers the option to create new dashboards based on a template. We will be expanding the power of dashboard templates, but, as of right now, you can already create a dashboard using our web app dashboard template, which provides you with a good starting point for determining and tracking relevant metrics.

Google Login Screenshot

In addition to GitHub and GitLab authentication, PostHog now supports signup and login with Google accounts!

We also improved our setup process by better structuring our settings pages, allowing you to change your project's token, and enhancing the UX for empty states on dashboards.

Docs Screenshot

We have been working hard to improve our product documentation and had a few big upgrades recently:

  • Our Docs now have a Dark Mode option
  • You can search our entire documentation without ever using your mouse
  • We are actively releasing new tutorials on how to use PostHog to track key metrics and improve your product
  • Our Docs pages now load faster
  • New screenshots have been added throughout the Docs, as well as functionality walkthrough videos

…and a lot more!

If you have any suggestions for new tutorials or improvements to our documentation, do not hesitate to let us know!

Were working hard to improve PostHog and would love to talk to you about your experience with the product. If you're interested in helping us out, you can schedule a quick 30-min call with us on Calendly.

Oh, and we're giving away some awesome PostHog merch as a thank you!

Bug Fixes and Performance Improvements

1.15.1 - Thursday 22 October 2020

  • Fixed issue where 100s of emails would be sent. (oops!)
  • Fixed performance issues with Redis caches filling up.

1.15.0 - Thursday 15 October 2020

Clickhouse Screenshot

If you've followed our progress on GitHub over the past months, you'll know that ClickHouse has been the talk of the town.

In their own words, ClickHouse is "a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP)".

Or, in simple terms: it's a very fast database.

As you may know, we have been using the well-established and reliable PostgreSQL until now, but from here on out our Enterprise Edition will be using ClickHouse instead. PostgreSQL remains a great option for lower volumes, but, for companies that handle huge event volumes, ClickHouse is a much better choice.

On our cloud version we handle event numbers in the nine figures, and implementing ClickHouse has drastically reduced the execution time for all of our queries.

If you're interested in using PostHog with ClickHouse, send us an email at sales@posthog.com.

Command Palette Screenshot


We're super excited about this.

Last week we did an internal hackathon and the command palette was one of the awesome projects to come out of it.

Now, when using PostHog, you can press ⌘K (Mac) or Ctrl + K (Windows) to reveal a Spotlight or Superhuman-like command palette that lets you navigate around PostHog mouse-less. In addition to navigation, the command palette also has page-specific commands that let you, for example, change the time range on charts, as well as a way to quickly share feedback with the PostHog team, create an API key, or even do some math with the built-in calculator.

Eric, Michael, and Paolo got this done in just a few days, and we love it.

Stay tuned for more exciting features that were built during the hackathon.

Backend Feature Flags Code

Based on community feedback, we made it easier for feature flags to be integrated with your backend, in addition to our frontend JavaScript implementation.

We've added feature flag support to our Python Integration, as well as improved the /decide endpoint used by feature flags to make the API experience better.

We have ourselves been using feature flags with the Python integration to slowly roll out some exciting new features.

Weekly Email Screenshot

To help users keep up with their key metrics in a simple way, we have introduced a weekly email that gives you an overview of your active and churned users over the previous week.

This is in Beta mode and we're expanding its capabilities, but it already gives you a good sense of your performance in terms of users.

Have you gotten your weekly report yet?

Were working hard to improve PostHog and would love to talk to you about your experience with the product.

If you're interested in helping us out, you can schedule a quick 30-min call with us on Calendly.

Oh, and we're giving away some awesome PostHog merch as a thank you!

Bug Fixes and Performance Improvements

1.14.0 - Thursday 03 September

Insight History Screenshot

Eric really killed this one with a massive pull request where 55 files were modified.

As a result, PostHog now allows you to look through a history of the charts you've made on 'Insights', so that you don't have to worry about forgetting the exact filters you used to reach a certain conclusion, or feeling bad about not having saved that perfect chart from a week ago.

Experiment with insights all you want, now without the fear of losing your work.

Personal API Keys Screenshot

We also merged another huge PR (58 files changed!) from Michael that's been a long time in the making because we wanted to get this just right.

To facilitate integrations with external services, as well as make the experience of using our API simpler and safer, we have now introduced Personal API Keys. They can be generated and deleted on the PostHog setup page. It's worth noting that this is a private API Key, compared to your public 'Team API Key' used in the snippet.

Lastly, because of this change, we have deprecated authentication with username and password for API endpoints.

Public Roadmap Screenshot

At PostHog, one of our core values is transparency. As a result, we try to make as much information public as we can, from what we're working on to how we operate.

As such, it felt important to us to release a public roadmap where our entire community can view what we're up to, what we'll work on next, and what our objectives are for the future. For a long time we have had a rough roadmap available in our Handbook, but, by now having our roadmap on GitHub, we can directly link issues to the board, and community members can also vote (with emojis 👍) on issues they believe to be important.

Furthermore, we have always encouraged members of our community to open issues for bugs, feature requests, or just anything at all they want to see changed. Now, issues opened by the community can be incorporated on the roadmap, so you can have an idea of how your suggestions fit in with our development process.

Keep the tickets coming!

As an open core company, we have to conciliate our open source efforts with our ability to generate revenue. Generating revenue is how we're able to continue to sustain our extensive work in the open source space.

Thus, after a lot of brainstorming and calls with the likes of Sid Sijbrandij, CEO of multibillion dollar open core company GitLab, we settled on a business model that allows PostHog to be a sustainable company in the open source space. c This led to the creation of two key things: an ee subdirectory on our main repo, and a new repository called posthog-foss. We'll be explaining these in more detail in the future, but, for now, you should know that to run fully MIT-licensed software, you can either clone the main repo and delete the ee subdirectory (without any consequences), or clone our posthog-foss repo, which is a mirror of the main repository without proprietary code.

In addition, if you're an enterprise customer looking for added functionality and improved performance, contact us at sales@posthog.com to discuss the license for using our proprietary features.

To ensure the security of your PostHog instance, it's important that you use a randomly-generated unique SECRET_KEY. This key is used by Django to encrypt cookies, calculate hashes, and generate tokens, making it of high importance.

Prior to this version, we denoted the importance of this in our Docs, but did not enforce it in our software. Now, to enhance security, PostHog will not allow you to run the server without setting it.

Many of our deployments generate and set this key by default, so that you will not need to worry about it. This is the case with our Heroku One-Click deployment, for example. However, other methods may not automatically do this (we're working on it!). As such, if you run into any issues when updating PostHog, make sure you have a unique SECRET_KEY set.

You can find more information about this on our 'Securing PostHog' page and should always feel welcome to ask any questions on our community Slack group.

Bug Fixes and Performance Improvements

1.13.0 Thursday 13 August

We're happy to announce that PostHog is now available as a destination on Segment.

Our friends at Segment have built a platform that works as an integrated data pipeline to pull in all your customer data. It's a cool way to combine PostHog with ie Google Analytics or Salesforce data.

If you're already a Segment user, check us out on their Destination Catalog. Otherwise, if you're dealing with multiple tools for data collection and analysis, consider using Segment! They have a generous startup scheme too, like us.

We consolidated trends, sessions, funnels, retention, and user paths into one page for much faster answers to the questions you may have!

PostHog has a feature where Actions can be posted to Slack or Microsoft Teams. This helps you notify your team in real time of the user actions that really matter. Just got a new user? Ping your sales team. Did a user try out a new feature? Get an alert!

The integration used to be very basic - but now you can edit the message format directly in the UI.

PostHog provides an irrefutably awesome toolbar. This lets you interact with your site or app and understand who is doing what. We've been in Beta for a few weeks, and spent a lot of time interviewing early users - thank you to everyone that took part!

We have now eliminated many bugs and improved the UX, so this feature will be on by default for all new PostHog users.

You can annotate graphs in PostHog - mention big releases, new features, or changes to your UX.

Now, it's quicker and easier to get a quick read on what happened that caused something funky in your graphs.

We've also made all annotations default to being global. That means if you create an annotation in one graph (or in the annotations page), it is visible across any dashboard graph that covers that date range. No need to fear losing your annotations.

Bug Fixes and Performance Improvements

1.12.0 - Friday 29 July

  • Shared Dashboards

Dashboard on a TV in your office? Want to have a public stats page? Share a dashboard with someone who doesn't have a PostHog account? You can now publicly share a dashboard. Just click "Share Dashboard" and enable sharing. You'll get a link that's publicly accesible.

Changed your mind? You can always disable sharing.

  • Aggregate Functions

Want to know the average revenue per user? Want to know the lowest browser version anyone is using? You can now do Sum, Max, Min and Avg calculations on any event property and graph them in trends!

  • Global Annotations

Digging through git commits to find out what changed to make the graphs go hay-wire? No more! You can now annotate when something happened (a big release, a bugfix or a launch) and make it super easy for your team-mates to figure out what's going on. Now global.

As part of this, you can now also manage, add and delete annotations from a central screen.

  • Funnel Step Time

You can now see how long it takes users on average to get through steps in a funnel.

  • Regex Filtering

Regex master? Put those skills to use on any property with regex filtering

  • Retention Table Improvements

Previously the retention table was hardcoded to only recognize the $pageview event as a retention event. Now, you can select any action or event to measure retention on.

Clicking on any section in the retention table will tell you exactly what users fall in that item.

Bug Fixes and Performance Improvements

1.11.0 - Friday 17 July

  • Annotations

  • Cohort filters

  • Retention table filtering

  • Many toolbar fixes.

heatmap

Bug fixes and performance improvements

1.10.1 - Thursday 2 July 2020

Bugfixes

  • Actually include the version bump when you push a release! 🐛
  • Add flutter docs and reorder flow #1134
  • Black all the things! #1136

1.10.0 - Wednesday 1 July 2020

Toolbar

  • It's like inspect element, but for user data.

inspect

  • Easily see the ranking of which parts of the page your users are interacting with the most:

heatmap

  • We learned a ton about our product and website within minutes of trying this out.

toolbar dance

Feature flags

  • Feature flags let you roll out changes to users with a certain property, or to a percentage of users, or some combo of the two.

feature flags

Other exciting, enthralling and invigorating features

  • Flutter Integration. You asked for it and now it's here!
  • Retention page. PostHog already had stickiness, but now there is a table that demonstrates perhaps more clearly how your users are coming back (or not!)

retention view

  • Better onboarding. We've had a go at redoing how our set up flow works, and will be tracking if it helps more people get through PostHog's own funnel!
  • Platform.sh deployment. A very simple, new and trendy way to get up and running!
  • Porter development. Join the cool kids and do web development in the cloud. Thank you so much to porter-dev for creating this PR.
  • Event name filtering. By popular demand, you can now filter the events table by the event name. Happy debugging your implementations!

filter by event name

Bug fixes and performance improvements

1.9.0 - Thursday 18 June 2020

  • Sessions view sessions overview
  • You can then see exactly how a user interacted with your app: sessions more detail This should really help with debugging, or just trying to get a detailed view of what users are up to.

Better testing

Develop PostHog with Porter

Management command for millions of events

Set properties to anonymous users

Bug fixes and performance improvements

1.8.0 - Wednesday 3 June 2020

cumulative graphs

Paths start point

Paths filtering by properties

Actions property filter

1.7.0 - Wednesday 27 May 2020

Comparison charts

Hover breakdown

property keys with explanations

automatic domain detection

1.6.0 - Wednesday 20 May 2020

1.5.0 - Wednesday 13 May 2020

1.4.0 - Wednesday 6 May 2020

  • Added filtering of properties individually. For both trends and funnels, you can now add filters for each event/action individually events

  • Added Breakdown by properties in graph. graph

  • Session time series, you can now see how time spend in your app changes over time session time series

  • Export cohorts as CSV export cohorts

  • Edit frontend selector for actions in PostHog frontend selector

  • Setup page redesign setup page redesign

  • Restrict access to instance by IP address (#679, #682)

  • Fix today + hourly filtering not working (#700)

  • Fix timestamps if users had wrong dates set locally (#693, #697, #699)

  • Add $screen to events table (#681)

  • Add noindex to login/signup screens (#702)

  • Speed up cohorts page and use antd (#706)

1.3.0 - Wednesday 29 April 2020

  • We have added an Android library so you can now capture events in your Android app and send them to PostHog, we can automatically capture screen changes, and send any other events that you like

android events

  • There is now, also a PostHog Gatsby plugin

  • We have added URL wildcards so you can use % as a wildcard when setting up an action

url wildcards

  • We have also updated the Trends page design as well as adding trends info hints. Trends is the default homepage when logging into PostHog.

trend layout

trend hints

  • The Events table can now be sorted by timestamp.

timestamp reverse

  • Added a more strict flake8 setup and improvements
  • Upgraded Kea to 2.0.0-beta.5
  • Implemented AntD into Setup page
  • You can now allow access to your PostHog instance by IP address for more security. this does not apply to the JS snippet or the event capture API
  • Added model for typing of filters
  • Added copy code to clipboard changes
  • Use forward for header in middleware if applicable
  • Move get_ip_address to utils
  • Fixed redirect to be explicit for /Trends
  • Moved models to separate files
  • Added link to docs for local deployment
  • Warn instead of crash on invalid selector when using the front-end toolbar

Bug Fixes

  • Fixed issue with default trends route
  • Fixed Setup page operations not working
  • Fixed crash when hovering over events
  • Fixed issues with $create_alias when users have multiple distinct_ids attached to them
  • Fixed trends save to dashboard issue
  • Fixed adding dashboarditem with set dates

1.2.0 - Wednesday 22 Aptil 2020

  • We have added an iOS library so you can now capture events in your iOS app and send them to PostHog, we can automatically capture screen changes, and send any other events that you like

Click here for instructions on how to install it on your app.

  • We have added Sessions to /trends with two modes: “Average session length”, which shows you how long sessions are and how many, and “distribution” which makes it super easy to spot whether sessions are uniformly distributed or whether there are outliers

sessions gif

  • Funnels can be filtered by properties

Funnel properties

  • Added indexes so loading /trends is super fast, even with millions of events
  • We have offloaded storing events to workers, so that calls to our events API are non-blocking, and you can scale insertion of events independently from the rest of PostHog
  • Removed drf-yasg in favor of our own hosted docs
  • Added layout/header components of Ant design
  • Updated property filters to be "tokenized"
  • Updated the way we display actions/events in trend graphs if those action/events have no data in a given timeframe
  • Updated property filters so that they 'AND' rather than 'OR' if you filter multiples

Bug Fixes

  • Fixed unable to sign up to teams
  • Fixed stickniess not loading
  • Fixed property filter bug that would break when multiples were applied in some circumstances
  • Fixed setting event name in action
  • Fixzed event filtering with teams

1.1.0.1 - Thursday 16 April 2020

  • Fix issues with custom events while creating actions

1.1.0 - Wednesday 15 April 2020

Important! We've added Celery workers. We'll move tasks to workers to speed up a lot of actions in PostHog. See update instructions on how to enable workers.

  • Users can integrate PostHog with Slack to send push notifications when events are triggered

Slack action

  • Funnels can now be filtered by Events not just Actions
  • Funnels can be filtered by time intervals as well

funnel intervals funnel with events

  • Added Ant Design to PostHog

ant design sidebar ant design buttons

  • Trends can now be filtered by different time intervals

time intervals

  • Added dotted lines to represent data yet to be determined

Dotted line example

  • Trends graphs have fixed the X axis at 0

x axis 0

  • Daily Active Users (DAUs) added as a default dashboard

DAU dahsboard

  • Changed the way we rendered urls in Paths to reflect better on different screen sizes

paths

  • Updated UX when saving actions to be clearer

actions save

  • Changed the way we store events properties, we now store all event names and property names against the Team
  • Refactored PropertyFilters into a function
  • Added filter by event name to event properties
  • Added mypy rules
  • Using dateutil for datetime
  • Added timestamp index to allow event tables to load at large volumes
  • Updated helm charts to work with redis and workers
  • Added a Babel plugin to reduce antd module load
  • We now use offset instead of timestamp of posthog-js to avoid the wrong user time - previously if your local machine had a time set different to your location (or if the time was just off) we would have displayed that time.
  • Using npm instead of yarn in copy command as Heroku doesn't have yarn
  • We now use posthog-js to get array.js
  • Removed unused indexes from migrations
  • Updated PostHog snippet

Bug Fixes

  • Removed unused future import to prevent Heroku deployments breaking
  • Fixed dupliucated users in Cohorts
  • Type Migration to prevent /trend bug when navigating to a url from a dashboard
  • Added missing type in initial dahsboard element creattion to fix the same bug as above
  • Fixed collectstatic on fresh Heroku updates
  • Fixed network timeout yarn for antd
  • Fixed npm command to copy array.js
  • Fixed date filter not detecting moment
  • Fixed redis error when upgrading Heroku
  • Stopped throwing an error if a user doesn't have a distinct id
  • Fixed a trends people bug that ignored the time interval selected
  • Fixed site_url pass to slack from request

1.0.11 - Wednesday 8 April 2020

Important! We've added Celery workers. We'll move tasks to workers to speed up a lot of actions in PostHog. See update instructions on how to enable workers.

  • Users can filter the trends view by any event rather than just actions

events in trends

  • Users can now change password in /setup

password change

  • Users can also reset password at login screen
  • Added a logout button

logout button

  • Added GitHub / GitLab Social Authorization

social auth

  • Added Stickiness explanation in /trends > Shown As > Stickiness

Stickiness explanation

  • Precalculated events that matched actions, this massively speeds up anything that uses actions
  • Added Celery background workers
  • Added gunicorn workers in docker-server script
  • Added email opt in for PostHog Security and Feature updates
  • Removed yarn cache in production image
  • Cleaned docker yarcn cache
  • Reduced size of Docker images by ~80MB
  • Set default password for postgres in docker-compose.yml
  • Sped up the event insert by only loading actions that were really necessary
  • Migrated ip field to event property
  • Updated all links to point to new docs domain
  • Added GitLab API url
  • Added Async JS snippet
  • Docker and server updates for helm

Bug Fixes

  • Fixed some instances of Cohort page hangs
  • Fixed demo actions not being recalculated
  • Fixed breakdown error on DAUs where tables could not be filtered
  • Fixed array.js
  • Fixied ActionStep.url_ so that it can be null

1.0.10.2 - Friday 3 April 2020

  • Precalculate Actions to speed up everything (dashboards/actions overview etcetera)
  • Fix error running Docker file

1.0.10.1 - Wednesday 1 April 2020

  • Fixes for Helm charts

1.0.10 - Wednesday 1 April 2020

  • Users can now be identified directly from Trend Graphs

users in trend graph

  • Added demo data to new instances of /demo

demo data copy

  • Built a Helm Chart for PostHog

  • Ordering is now by timestamp instead of id

  • Fixed typing errors

  • Fixed funnels not working if order was set incorrectly

  • Avoided team leakage of person properties

  • Fixed live actions error that resulted in opening multiple events

1.0.9 - Wednesday 25 March 2020

  • Stickiness now shown on Trend Graph

stickiness

  • Funnel builder changes

funnel builder

  • Changed 'Add event property filter' to 'Filter events by property'.

  • Added drop down to all filters for event properties

filters

  • Added '_isnot' and 'does not contain' to properties filters

doesnotcontain

  • Moved API key to it's own box

  • Various performance updates

  • Bug fixes

1.0.8.2 - Wednesday 18 March 2020

  • Fixes bug where events wouldn't be filtered under /person or /action.

1.0.8 - Wednesday 18 March 2020

  • Moved actions into /event submenu

moved action

  • Improved Actions Creation

improved actions creation

  • Delete user data

delete user data

  • Various performance improvements

  • Bug fixes

  • Turbolinks: Support for navigating between pages with the toolbar open

1.0.7 - Wednesday 10 March 2020

  • Added changelog and reminder to update to app.
  • Filtering action trends graphs

filtering action trends gif

  • Exact/contains matching for URLs in actions

exact/contains matching gif

  • Filtering paths by date

Filtering paths by date

  • Graphs show numbers

graph show numbers

  • Allow multiple URLS when creating actions

Multiple urls when creating actions

  • Better property filters

image

  • API change If you're using the trends api, filtering by action ID is deprecated in favour of api/action/trends?action=[{"id":1}]