docs/src/routes/common-services/index.mdx
Partytown is built with the goal that any third-party script can be ran from within it. At the lowest level, any script can add the type="text/partytown" attribute to have it executed from a web worker.
Below is a list of plugins / libraries that are tested & known to be working with Partytown with their commonly used forward configs and proxied domains.
| Service | Forward Config | Proxy Domain | Additional Config |
|---|---|---|---|
| Facebook Pixel | "fbq" | "connect.facebook.net" | |
| FullStory | "FS.identify", "FS.event" | strictProxyHas: true (if loaded via GTM) | |
| Google Tag Manager | "dataLayer.push" | ||
| Hubspot Tracking | "_hsq.push" | ||
| Intercom | "Intercom" | ||
| Klaviyo | "_learnq.push" | "static.klaviyo.com", "static-tracking.klaviyo.com" | |
| TikTok Pixel | "ttq.track", "ttq.page", "ttq.load" | ||
| Mixpanel | "mixpanel.track" |
If you would like to add to this list,
When loading FullStory via Google Tag Manager (GTM), you need to enable the strictProxyHas configuration option. This is because FullStory checks for namespace conflicts using the in operator (e.g., if (!("FS" in window))), and by default, Partytown's window proxy always returns true for the in operator for backwards compatibility.
<script>
partytown = {
forward: ['FS.identify', 'FS.event'],
strictProxyHas: true,
};
</script>
Without strictProxyHas: true, FullStory will detect a false "namespace conflict" and fail to initialize when loaded via GTM's Custom HTML tag. This configuration ensures the in operator accurately checks property existence on the window object.