New features, fixes, and improvements.
Access Policies now allow you to control column- and row-level access to a Data Pool’s data. They provide a powerful way to govern how your applications, whether internal or customer-facing, access the data. You assign Access Policies to Propel Applications, giving each set of API credentials specific access to the data.
Learn more about the new Access Policies.
Multi-tenant SaaS or consumer applications have more specific data access control requirements. Each tenant should only access their own data, and the application must support potentially millions of unique tenants. Dynamic Access Policies allow you to pass policy values via a custom claim in the API access token. The policy values are cryptographically signed to the access token and used to evaluate the policy. This securely controls access to tenant data without the need to create a policy for each tenant, which could be cumbersome.
Learn more about the multi-tenant access controls.
The Webhook Data Pool supports real-time updates. It unlocks advanced analytics use cases where you have to deal with late-arriving data that needs to be updated in the original record. Real-time updates have the additional benefit that you can safely retry requests without worrying about creating duplicates.
Read the real-time update docs to learn more.
COUNT_IF
, SUM_IF
, and AVG_IF
These new functions enable you to define Metrics by aggregating records based on certain conditions.
Let’s say you want to calculate the Net Promoter Score (NPS), a common metric for customer satisfaction. NPS is calculated based on responses to a single question: “On a scale of 0-10, how likely are you to recommend our company/product/service to a friend or colleague?” Responses are classified as follows:
NPS is then calculated by subtracting the percentage of customers who are Detractors from the percentage of customers who are Promoters.
Here’s how you can use COUNT_IF
to calculate NPS:
This will calculate the percentage of Promoters, subtract the percentage of Detractors, and multiply by 100 to give you the NPS score.
Learn more about defining Custom Metrics.
🎉 Self-serve sign-up is open! You can now sign up to Propel and get started without filling in a form or contacting us.
🕸️ New Webhook Data Pool. This new Data Pool type allows for easy ingestion of JSON events into Propel. Webhook setup and management is available in both the console and via our GraphQL API. The console has a rich UX for easily building and testing your JSON schema to match the event structure. Check out the documentation.
🌮 We have a new and improved Quickstart to get you going with sample data as fast as possible.
💥 New Console navigation. We’ve streamlined the navigation and introduced the concept of Credentials for Data Pools. (For existing customers: Credentials replace the concept of Data Sources within the Console. No changes have been made to the public APIs.)
🛝 New top-level API Playground! The API Playground used to be available inside each metric definition in the Console. We’ve moved it out into the main navigation, making it easier than ever to query your metrics.
New code samples in the API Playground. In addition to grabbing sample GraphQL code for your queries, you can now copy full cURL and JavaScript samples for making queries - right from inside the playground.
👩🏽💻 UI Kit Code Examples. The UI Kit’s documentation in Storybook now has code examples for each component.
📊 Added support for custom label formatting in the Leaderboard component in UI Kit. See the pull request.
MAX(foo.bar)/60
now work correctly.timeZone
). For example, asking for TODAY
with granularity DAY
should always return a single granule; asking for THIS_WEEK
with granularity DAY
should always return seven granules. This is now fixed.processedRecords
property. It is the sum of the existing properties newRecords
, updatedRecords
, and failedRecords
. This is in support of the updating Data Pool functionality.metricName
in query input instead of the deprecated metricByName or metricById).refetchInterval
, which can be used to specify how frequently a component should re-fetch new data.bucket
to an invalid S3 bucket name will result in synchronous failure with a BAD_REQUEST
error message: “Invalid S3 bucket name; ensure you pass only the S3 bucket name and not its ARN or URL”.WEEK
granularity starting on a Sunday. The WEEK
granularity now starts on Monday, consistent with LAST_N_WEEKS
and the week-based relative time ranges.suggestedDataPoolColumnType
and supportedDataPoolColumnTypes
to the Column object in the GraphQL schema.null
for “no data”, rather than zero. This is the mathematically correct answer. This applies to counters, time series, leaderboards, reports, and dimension stats.New features, fixes, and improvements.
Access Policies now allow you to control column- and row-level access to a Data Pool’s data. They provide a powerful way to govern how your applications, whether internal or customer-facing, access the data. You assign Access Policies to Propel Applications, giving each set of API credentials specific access to the data.
Learn more about the new Access Policies.
Multi-tenant SaaS or consumer applications have more specific data access control requirements. Each tenant should only access their own data, and the application must support potentially millions of unique tenants. Dynamic Access Policies allow you to pass policy values via a custom claim in the API access token. The policy values are cryptographically signed to the access token and used to evaluate the policy. This securely controls access to tenant data without the need to create a policy for each tenant, which could be cumbersome.
Learn more about the multi-tenant access controls.
The Webhook Data Pool supports real-time updates. It unlocks advanced analytics use cases where you have to deal with late-arriving data that needs to be updated in the original record. Real-time updates have the additional benefit that you can safely retry requests without worrying about creating duplicates.
Read the real-time update docs to learn more.
COUNT_IF
, SUM_IF
, and AVG_IF
These new functions enable you to define Metrics by aggregating records based on certain conditions.
Let’s say you want to calculate the Net Promoter Score (NPS), a common metric for customer satisfaction. NPS is calculated based on responses to a single question: “On a scale of 0-10, how likely are you to recommend our company/product/service to a friend or colleague?” Responses are classified as follows:
NPS is then calculated by subtracting the percentage of customers who are Detractors from the percentage of customers who are Promoters.
Here’s how you can use COUNT_IF
to calculate NPS:
This will calculate the percentage of Promoters, subtract the percentage of Detractors, and multiply by 100 to give you the NPS score.
Learn more about defining Custom Metrics.
🎉 Self-serve sign-up is open! You can now sign up to Propel and get started without filling in a form or contacting us.
🕸️ New Webhook Data Pool. This new Data Pool type allows for easy ingestion of JSON events into Propel. Webhook setup and management is available in both the console and via our GraphQL API. The console has a rich UX for easily building and testing your JSON schema to match the event structure. Check out the documentation.
🌮 We have a new and improved Quickstart to get you going with sample data as fast as possible.
💥 New Console navigation. We’ve streamlined the navigation and introduced the concept of Credentials for Data Pools. (For existing customers: Credentials replace the concept of Data Sources within the Console. No changes have been made to the public APIs.)
🛝 New top-level API Playground! The API Playground used to be available inside each metric definition in the Console. We’ve moved it out into the main navigation, making it easier than ever to query your metrics.
New code samples in the API Playground. In addition to grabbing sample GraphQL code for your queries, you can now copy full cURL and JavaScript samples for making queries - right from inside the playground.
👩🏽💻 UI Kit Code Examples. The UI Kit’s documentation in Storybook now has code examples for each component.
📊 Added support for custom label formatting in the Leaderboard component in UI Kit. See the pull request.
MAX(foo.bar)/60
now work correctly.timeZone
). For example, asking for TODAY
with granularity DAY
should always return a single granule; asking for THIS_WEEK
with granularity DAY
should always return seven granules. This is now fixed.processedRecords
property. It is the sum of the existing properties newRecords
, updatedRecords
, and failedRecords
. This is in support of the updating Data Pool functionality.metricName
in query input instead of the deprecated metricByName or metricById).refetchInterval
, which can be used to specify how frequently a component should re-fetch new data.bucket
to an invalid S3 bucket name will result in synchronous failure with a BAD_REQUEST
error message: “Invalid S3 bucket name; ensure you pass only the S3 bucket name and not its ARN or URL”.WEEK
granularity starting on a Sunday. The WEEK
granularity now starts on Monday, consistent with LAST_N_WEEKS
and the week-based relative time ranges.suggestedDataPoolColumnType
and supportedDataPoolColumnTypes
to the Column object in the GraphQL schema.null
for “no data”, rather than zero. This is the mathematically correct answer. This applies to counters, time series, leaderboards, reports, and dimension stats.