Release Notes: April

New Backend System, Count by Distinct, Revenue Properties, and More

1) Important: New Backend System

This morning, we released a new backend system powering the Events Segmentation tab and the Segmentation Sidebar. This is a part of an ongoing project to revamp our query architecture in order to provide the most scalable and reliable analytics for you. We’ve been working on this for the last few months and are excited to roll this part out today.

We expect to have all queries fully pushed to the new system by early May. This should generate faster queries, especially those with more complex filters. These changes will also impact how we calculate certain queries which are outlined below.

Changes to Events Segmentation
As of today, you can expect queries to run faster than before. In addition, as a result of the new backend system:

  1. When you perform a Group By on a property, the Group By distribution will now additionally show you null or (none) values/segments.
  2. You can now perform an event property Group By on a formula that uses the PROPSUM or PROPAVG functions. The image below shows the average duration of songs played, in seconds, grouped by gender.

2-new-backend

Changes to Segmentation Sidebar
As part of the Events Segmentation change, we are consolidating a confusing part of segmentation, which is the difference between segmenting in the body of the query (using WHERE) and the Segmentation Sidebar. Specifically, the Segmentation Sidebar will now segment users at the event-level (ie. the user must have had the property value at the time of the specified event).

The previous sidebar behavior would look at a user’s user property values within a daily set. As a brief example, given a daily interval, if a user fired 30 total events on a particular day:

  • 15 of the events had the property “Country = Germany”
  • 15 of the other events had the property “Country = United States”

then previously, when you used the sidebar to segment the total events data by Country, that user would appear to have fired 30 events in Germany and 30 events in the United States. With the sidebar change, that user will only be counted in the United States when the event fired has the property “Country = United States” and same for Germany. So, with the change, the user would appear to have fired 15 events in Germany and 15 events in the United States.

In practice, we haven’t observed any significant effect that this segmentation change will have on your data, and based on customer feedback and use cases, determined that it would be best to modify the sidebar to be consistent with the segmentation in the body of the Events Segmentation tab. However, if you are sending data via our HTTP API, this change could affect segmentation charts where the user properties are not included on the event.

Changes to Funnels
Note: these changes are expected to be pushed by early May.

  1. Loose Mode will be renamed to “Unordered Mode” and its computation will change, such that funnel steps can always be performed out of order. Previously, steps could only be performed out of order if they were performed within the same day.For example, if your funnel is defined as, Step A -> Step B: a user can perform Step B on Monday and Step A on Tuesday, and be counted as converted in the new Unordered Mode.
  2. Strict Mode will be renamed “Ordered Mode” and will become the new default mode option. No computation changes will be made.
  3. As a result of the above change, when the new system is pushed on May 1st, all funnels that are saved in Loose Mode will be modified to Ordered Mode (formerly known as Strict Mode), as the new Unordered Mode computation could change your funnel metrics significantly.

Changes to Retention
Note: these changes are expected to be pushed by early May

  1. You will no longer be able to segment data based on a custom date range (refer to the image below).

3-changes-to-retention

  1. For Retention charts, where the starting action is set to “[Amplitude] New User,” the segmentation will only apply to the first hour the user is new.For example, suppose you had a user who is new on April 1st at 15:00, if you segment/filter your data on users with the property, “City = San Francisco,” the user must have the property value at some point between April 1st 15:30 – April 1st 16:30, in order to be returned in the query.

Changes to Stickiness & Lifetime Value
Note: these changes are expected to be pushed by early May.

  1. You will no longer be able to segment data based on a custom date range (refer to the image above).

Changes to Pathfinder
Note: these changes are expected to be pushed by early May.

  1. User property segmentation will only apply to the root event node. Previously, the segmentation would filter on the user with day-level granularity, where a user would appear in a filtered path if the user had the property value at any point that day. So, this change will primarily affect users that had properties change over the course of a path.

2) Count by Distinct (Account-level Reporting)

Note: Count by Distinct is only available on the Business and Enterprise plans.

In the Segmentation Sidebar, the new “Count By” function allows you to process data by a distinct user property. This helps when you want to group users by a particular user property and perform analyses on those groups, such as the user’s company. In the below image, we’ve processed the data by “Company Name,” to view the count of unique companies (or company names) that were active in the last 7 days. On April 14th, there were 650 different companies active that day.

4-account-level-reporting

Note: setup for the Count by Distinct functionality is currently only available via our SDKs, and you will only see the “Count By” function in the sidebar if you’ve already setup user groups.

Read more about Count by Distinct here.


3) New Revenue Properties

You can now send additional revenue properties when logging a revenue event. Here’s a table of all the revenue properties you can now send (highlighted in green are new properties):

5-revenue-properties-table

You can also now segment on those properties in the Revenue tab, except eventProperties, which you can segment on in the Events Segmentation tab. In the image below, we’ve grouped total revenue by $productId.

6-new-revenue-prop

Read more about how to send revenue in our SDK Readme’s and more about the tab here.


4) Hide Event Properties

You can hide event properties in your app’s settings page, under the Manage Events section. This is helpful for certain event properties that you no longer want to see in the UI. For example, the event property may not be in use anymore or might be a result of an instrumentation error.

Important Notes:

  • Data will still be collected for hidden event properties.
  • Event properties marked as hidden will be hidden globally (it’ll be hidden to everyone in the organization).

7-hide-event-prop

Read more about managing your event settings here.


5) Event Frequency Distribution

You can now view the distribution of the event frequency per unique user, over a selected time period, in the Events Segmentation tab. This helps you understand the variance of the frequency an event is triggered per unique user. In the below image, we clicked on “Histogram” to view the event frequency per unique user distribution, in the last 7 days. The image shows that we have many users who have favorited a few songs and hundreds of songs.

8-event-prop-distribution

With the new Histogram metric, you can now write formulas with two new functions:

  • HIST(event): returns the distribution of the event frequency per unique user, over the selected time period.
  • PROPHIST(event): returns the distribution of the property values, over the selected time period.
Read more about the Events Segmentation tab here and more about Formulas here.

6) SDK Updates

We highly recommend that you update your SDKs to the latest versions:

Amplitude-Android 2.7.1
Since v2.5.1:

  • v2.5.1 has a bug and has been deprecated. The bug has been patched, please update to the latest version. We apologize for the inconvenience.
  • Updated to OKHttp v3.0.1.
  • Added support for prepend user property operation. This allows you to insert value(s) at the front of a list.
  • Added support for user and event groups (necessary to use Count by Distinct).
  • Added a helper method getSessionId to expose the current sessionId value.
  • Add logRevenueV2 and new Revenue class to support logging revenue events with properties and revenue type.
  • Bug fixes.

Amplitude-iOS 3.7.0
Since v3.5.0:

  • Added support for prepend user property operation. This allows you to insert value(s) at the front of a list.
  • Added support for logging events to multiple Amplitude apps, more details here.
  • Added support for user and event groups (necessary to use Count by Distinct).
  • Added a helper method getSessionId to expose the current sessionId value.
  • Add logRevenueV2 and new Revenue class to support logging revenue events with properties and revenue type.
  • Bug fixes.

Amplitude-JavaScript 2.12.0
Since v2.9.1:

  • Added documentation for SDK functions, found here.
  • Added support for prepend user property operation. This allows you to insert value(s) at the front of a list.
  • Added support for user and event groups (necessary to use Count by Distinct).
  • Add logRevenueV2 and new Revenue class to support logging revenue events with properties and revenue type.
  • Added tracking of each user’s initial_utm parameters (which is captured using the setOnce user property operation).
  • Bug fixes.

Unity-Plugin
Since March 16th:

  • Updated to use Amplitude-iOS v3.6.0.
  • Updated to use Amplitude-Android v2.6.0.

7) New Help Center Articles

Here are new integration and best practice articles that you may have missed in the last two months:


8) Questions?

If you have any questions, comments, or concerns, please reach out to contact@amplitude.com. You can find previous release notes here.

Lastly, we’d appreciate your feedback on our product email updates. Please let us know what’s working well or what you’d like to see improved through this form, thank you!