Realtime analytics data exports

Last updated:

|Edit this page

Destinations require the data pipeline add-on in your billing settings.

As PostHog data arrives, you can export it immediately to other tools. You can use this for things like:

  • Conversion tracking
  • Monitoring key events with your chat platform
  • Enriching customer data in your CRM
  • Triggering automations

PostHog enables you to send realtime data to dozens of pre-configured destinations. Check out the data pipeline tab and choose destinations to get started.

Destinations list in PostHog

Missing a destination you need? Our webhook destination enables you to send events to any HTTP endpoint, using whatever request method, URL parameter values, and JSON payload structure your application requires. You can mix hard-coded keys and values with any person or event data. This integrates PostHog with yet more tools, or even your own internal services.

Wherever your data is going, we’ve built destinations for many popular tools to get you up and running with just a few minutes of effort.

Filtering

Instead of the firehose of all your PostHog data, you can construct a query that filters by event types, properties, or any HogQL statement you can come up with, so that only the information you care about is sent to your destination.

Filtering destinations

Testing

The hardest part of integrating two services is making sure everything works as you expect. Every destination includes a built-in testing interface, enabling you to send real data from PostHog on-demand to your target service and debug any errors.

Destination testing UI

Keep an eye on things

Once your destination is up and running, the metrics and logs tabs will let you monitor usage and inspect errors.

Destination logs

Going deeper

For complete control of your destination’s behavior, you can view and edit the underlying Hog code that drives it. Experiment with rewriting your destination’s implementation to better address your needs, if the pre-built templates don’t quite do the job.

Learn more about this in customizing destinations.

Caveats

How up-to-date is the person information?

The person object contains the latest information for the person profile associated with the distinct_id of the event at the time the event is processed. You should make sure to filter for events that occur on or after person properties would be merged (such as $identify) if you need this information for your event.

How many events can I send to a destination?

There is no limit on the number of events to be processed but the system requires that the destination responds with healthy status codes (non 5xx) and in a timely fashion.

What can cause a destination to be automatically disabled?

If the destination performs poorly (too many errors, too slow) for a prolonged period, your destination will be quarantined and eventually disabled. We will try to re-enable it automatically after a temporary disabled period before stopping it entirely. You then need to modify either the filters or the destination and re-enable it in the UI to try again.

The key metrics that we observe to determine poor performance are:

  1. Errors thrown within the code (for example if you try to access a property that doesn't exist).
  2. Repeatedly slow responses from the destination. Some slow HTTP calls are fine but if you send thousands of events and the destination can't keep up, we will eventually disable it to protect ourselves and the destination.

We do not consider 4xx HTTP codes to be poor performance. Some destinations utilize these responses to determine if a follow up HTTP call is required (for example a 409 conflict indicating a record already exists). Non "OK" statuses will however be logged in order to help debugging potential issues.

How do you handle retries?

By default, all HTTP calls (fetch calls in Hog) are expected to return a 2xx response. If we get a non-OK response we will retry up to 3 times depending on the error codes. We may modify this logic as we make improvements to try and balance reliability and speed.

Questions? Ask Max AI.

It's easier than reading through 590 docs articles.

Community questions

  • Joe
    5 months ago

    Functions in templates

    Is it possible to call functions in the template string?

    We had:

    "text": {
    "text": "{event.properties.$survey_response_1 ?? event.properties.$survey_response_2 ?? '_No comment provided_'}",
    "type": "mrkdwn"
    },

    However, the $survey_response_1 came through as an empty string... can you run something like notEmpty here?

    • Oliver(he/him)
      5 months agoSolution

      Hey Joe, yep, you can call functions in template strings without issue.

  • Alexander
    5 months ago

    Interval Sync to Destinations

    Is it possible to send data to destinations on an interval, not related to Posthog events?

    For example, I want to send data to intercom, even about persons who are not actively interacting with our product

    • Alexander
      Author5 months ago

      Help Max

    • 5 months agoSolution

      Based on the available information, PostHog's current integration with Intercom is designed to send event data when specific events occur for users identified by email address(1). This integration doesn't directly support sending data on an interval unrelated to PostHog events or for inactive users.

      However, there's a potential workaround using PostHog's data warehouse feature. You could:

      1. Link your data source to PostHog's data warehouse(2).
      2. Create a custom view of your data using HogQL to join various data sources(3).
      3. Use this custom view as a source for batch exporting(3).

      This approach could potentially allow you to send data about persons who are not actively interacting with your product. However, it's important to note that this feature is currently a feature request and not yet implemented(3).

      For now, the Intercom integration is primarily event-driven, sending data when selected events happen for users identified by email address(1)(4). If you need to send data about inactive users or on a specific interval, you might need to explore alternative solutions outside of the current PostHog-Intercom integration.

      I'm not entirely confident about alternative methods within PostHog to achieve exactly what you're looking for. If you have more specific requirements or if there are particular aspects of your use case that I haven't addressed, please let me know and I'll try to provide more tailored information based on the available documentation.

Was this page useful?

Next article

Customizing destinations

Although we recommend using one of our pre-built destinations, you can also customize them and build your own. Customizing payload You can template destination output using curly braces {} . For example, given this PostHog event: You can create a template like: You could use this approach to set parameters in a webhook destination’s URL: Or to construct a custom JSON payload that conforms to an existing API specification: Global object Below is the structure of the global variables available…

Read next article

PostHog.com doesn't use third party cookies - only a single in-house cookie.

No data is sent to a third party.

Ursula von der Leyen, President of the European Commission