Skip to main content
· 4 min read

November 2023 new features, fixes, and improvements

New features

🧠 OpenAI integration

Propel’s OpenAI integration lets you easily collect OpenAI ChatGPT API usage events from your application. Once the events are in the Data Pool, you can use them to power usage metering, customer-facing dashboards, reports, and data-driven workflows.

Learn more about the OpenAI integration.

OpenAI Propel integration diagram

🔓 New, more powerful Access Policies

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.


🔏 Dynamic Access Policies for multi-tenant applications

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.


Real-time updates for Webhook Data Pools

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.

🚦 New conditional aggregate functions for Custom Metrics: 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:

  • Promoters (score 9-10)
  • Passives (score 7-8)
  • Detractors (score 0-6)

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:

(COUNT_IF(response >= 9) - COUNT_IF(response <= 6)) / COUNT() * 100

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.


  • We fixed a bug in the custom expression validation. We were allowing unknown columns to be present in comparison expressions.
  • We fixed a bug in the Playground in the Console where customers could not select a metric type in Playground when they didn't have Metrics created.
  • We fixed a bug in the Console where the query count by Application and by Metric was not shown correctly.


  • New Applications will have the DATA_POOL_QUERY and DATA_POOL_STATS scopes by default.
  • In the Console, customers can now see the basic authentication information for the Webhook Data Pool URLs if authentication is enabled.
  • In the Console, customers can view failed events for Webhook Data Pools in the new Error log.
  • In the Console, customers can create custom queries in the Playground by Metric type and Data Pool.
  • New customers will see the first-time user experience cards until the first Data Pool is created.
  • We improved the error messages that are shown when querying Data Pools and Metrics without the expected scope.
  • We now return a Bad Request Error if clients provide invalid time zones.
  • We added comparisons to Custom Metrics, and now expressions like SUM(foo > 1) or SUM(foo IS NOT NULL) are supported.
  • We added IS and IS NOT comparison operators to the custom expressions.