Vercel supports rewrites which we can use as a reverse proxy. Create a vercel.json
file and add a rewrites
object from the /ingest
route to https://app.posthog.com
or https://eu.posthog.com
.
{"rewrites": [{"source": "/ingest/:path*","destination": "https://app.posthog.com/:path*"}]}
Some frameworks, like SvelteKit and Astro, require a hungrier regex pattern like:
{"rewrites": [{"source": "/ingest/:path(.*)","destination": "https://app.posthog.com/:path*"}]}
Note: Some frameworks, like T3 app, don't support Vercel rewrites well. If neither of these options work, we recommend trying another proxy method.
Once done, set the /ingest
route of your domain as the API host in your PostHog initialization like this:
posthog.init('<ph_project_api_key>',{api_host: 'https://www.your-domain.com/ingest',ui_host: 'https://app.posthog.com' // or 'https://eu.posthog.com' if your PostHog is hosted in Europe})
Once updated, deploy your changes on Vercel and check that PostHog requests are going to https://www.your-domain.com/ingest
by checking the network tab on your domain.