Important: This feature is currently an opt-in beta. To access it, enable the feature preview. Please leave a comment on this page if you have feedback or questions, or leave feedback via the in-app support modal.
Our revenue tracking feature enables you to capture revenue from your website via the events you are already sending us, or via an integration between your payment platform and our Data Warehouse, which you can then track in your revenue analytics dashboard.
Choosing a revenue data source
PostHog can collect revenue from two sources:
Option 1: Properties on events
The simplest way to send us revenue data is to add it as properties on revenue generating events, such as when a purchase is completed, a user starts a subscription, or a subscription is renewed.
When you do so, you need to include two properties:
value
: The amount of revenue generated by the event in their minor unit (cents of a dollar, pence of a pound, yen, etc.).currency
: The currency of the revenue in ISO 4217 format (USD, EUR, GBP, etc.).
You can choose any name you like for these properties – you can customize them in the Revenue tab in data management.


The currency
property is technically optional as you can choose a static currency when configuring your revenue event in your dashboard, but we recommend sending it if you can to ensure backward compatibility should you ever take payments in a different currency.
Currency minor unit
We always expect revenue to be sent in the minor unit of the currency. For example, enter:
1045
inUSD
(or any other two-decimal currency) is treated as $10.451045
inJPY
(or any other zero-decimal currency)is treated as ¥1045
Zero-decimal currencies
All currencies are considered two-decimal currencies unless they are in the following list:
- BIF
- CLP
- DJF
- GNF
- JPY
- KMF
- KRW
- MGA
- PYG
- RWF
- UGX
- VND
- VUV
- XAF
- XOF
- XPF
Known considerations
- The Icelandic Krona (ISK) is a zero-decimal currency, but we treat it as a two-decimal currency to keep backwards compatibility with our integration with Stripe.
Option 2: Data warehouse tables
You can also expose your revenue data from your Data Warehouse tables.
The configuration for these is much simpler. You simply need to create a connection between PostHog and your revenue source and PostHog will automatically pick up the revenue data for you. Please refer to the Data Warehouse docs for more information.
Important: We currently only support Revenue Analytics data from Stripe. The Chargebee connector already exists and integration with Revenue Analytics is coming soon. We'll implement more sources in the near future. Check our roadmap at our team page.
Using revenue data in product analytics
You can use your revenue data for deeper product analytics insights beyond the web analytics dashboard, too. This allows you to:
- Create custom revenue funnels
- Analyze user journeys that lead to purchases
- Segment users by revenue contribution
When working with revenue data in product analytics, you may want to use the convertCurrency
function for accurate reporting across different currencies.
We also expose streamlined views of your revenue data. You can find them under the views
tab in our SQL Editor.
Sending backend events for revenue tracking
You can send revenue tracking events from your backend systems, which is especially useful for tracking purchases that complete outside of the browser.
When sending backend events, it's recommended you include a session_id
to ensure they can be properly associated with a web session. The session ID connects the backend purchase event with the user's web session.
The session_id
should be a UUID V7 that uniquely identifies the user's session.
You can generate a random one, but ideally you should reuse the same value we generated in our Frontend SDK, so that all events belong to the same session in our UI.
You can learn more about how to do this in the session docs.
Example backend event:
posthog.capture({distinct_id: posthog_distinct_id,event: 'Purchase Succeeded',properties: {'$session_id': posthog_session_id,// 100.00 USDvalue: 10000,currency: 'USD',}})
Troubleshooting & FAQ
Can I change the default reporting currency in PostHog?
Yes. You can select your desired currency in the Revenue tab in Data management. This is the currency we'll use to report revenue in our revenue analytics dashboard.


How do you convert renvenue in different currencies?
We automatically convert revenue from other currencies into your chosen reporting currency – i.e. if someone makes a purchase in Canadian Dollars (CAD) and your reporting currency is US Dollars (USD), it's converted into USD in PostHog to ensure consistency.
PostHog's currency conversion data is sourced from Open Exchange Rates. The exchange rate data is updated hourly and stored with daily granularity.
This ensures that your revenue data is converted using recent exchange rates, based on the exchange rate at the time of the event, providing reliable revenue analytics across different currencies.
Which currencies do you support?
PostHog supports a wide range of global currencies for revenue tracking. See our currencies.py file for a complete list.
What if you don't support the currency on my revenue event?
This is unlikely given the large range of currencies we support, but in this event we'd track that revenue event as if it had 0
value. We welcome feature requests for currencies you'd like us to support.
Why isn't my revenue appearing in the revenue analytics dashboard?
If your revenue isn't appearing in your revenue analytics dashboard, there are a few common issues to check:
- Check the Revenue tab in Data management: First, verify if your revenue events are being captured correctly by checking the Revenue tab in data management.
- Make sure Revenue tracking is enabled for you Data warehouse source: Legacy data warehouse sources have revenue tracking disabled by default. Make sure you enable them in the Revenue tab in data management.
- Check your filters: you can choose to enable/disable revenue tracking for specific events/sources in the Revenue analytics dashboard filter, make sure you have selected the desired entries.
Can I query converted rates?
Yes, you can query converted rates yourself in SQL using the convertCurrency
function. This is useful for custom queries and advanced analytics.
Example:
SELECT*,properties.$currency as original_currency,properties.value as original_value,convertCurrency(original_currency, 'USD', original_value, _toDate(timestamp)) as value_usdFROM eventsWHERE event = 'purchase'
The signature for the convertCurrency
function is:
convertCurrency(from_currency: string,to_currency: string,value: Decimal,timestamp: Date | DateTime) -> Decimal
Can I correlate revenue with paid ads data?
This feature is current under development. Soon, PostHog will support sources for importing ad expense data, allowing you to analyze return on ad spend directly within the platform.
Can I compute cost CAC and CPC?
Computing Customer Acquisition Cost (CAC) and Cost Per Click (CPC) will be possible once we've completed integrations with ad expense platforms. These metrics will provide valuable insights into your marketing efficiency and return on investment.
Can I use custom currency conversion data?
Currently, PostHog does not support using custom currency conversion data. We rely on the exchange rates provided by Open Exchange Rates.
If you need support for custom conversion rates, please create a feature request, so our team can consider adding this functionality.