How to capture paths from hash-based routing
Contents
Hash-based routing is a common way to manage navigation in single-page applications (SPAs) using the URL hash. This tutorial shows you how to set up PostHog to work with hash-based routing, ensuring that pageviews and events are tracked correctly.
Capturing paths in hash-based routing
When using hash-based routing, the URL path is typically in the format http://example.com/#/path/to/page. The $pathname property in PostHog will not automatically include the hash part of the URL. In this example, it will just be /.
To add the hash to the $pathname property, you can use the before_send function in PostHog's initialization. This function allows you to modify events before they are sent to PostHog.
The below example is how you can change the $pathname property to include the hash, so in the example above it will be /#/path/to/page:
Which libraries are affected?
The most common routing libraries that use hash-based routing are:
- React Router - with the
HashRoutercomponent. - TanStack Router - with
createHashHistory - SvelteKit - with
router.type === 'hash' - Vue Router - with
createWebHashHistory
PostHog is an all-in-one developer platform for building successful products. We provide product analytics, web analytics, session replay, error tracking, feature flags, experiments, surveys, LLM analytics, data warehouse, CDP, and an AI product assistant to help debug your code, ship features faster, and keep all your usage and customer data in one stack.