Skip to main content

Integrate Segment into Nextjs app

import Document, { Html, Head, Main, NextScript } from 'next/document';
class PubNubDocument extends Document {
  static async getInitialProps(ctx) {
    const initialProps = await Document.getInitialProps(ctx);
         
    return { ...initialProps }
  }
  render() {
      
  
    return (
      <Html lang="en">
<script dangerouslySetInnerHTML={{ __html: ` var analytics = window.analytics = window.analytics || [];if (!analytics.initialize)if (analytics.invoked)window.console && console.error && console.error("Segment snippet included twice."); else { analytics.invoked = !0; analytics.methods = ["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on"];analytics.factory = function (t) {return function () {var e = Array.prototype.slice.call(arguments); e.unshift(t); analytics.push(e); return analytics }}; for (var t = 0; t < analytics.methods.length; t++) { var e = analytics.methods[t]; analytics[e] = analytics.factory(e) }analytics.load = function (t) {var e = document.createElement("script"); e.type = "text/javascript"; e.async = !0; e.src = ("https:" === document.location.protocol ? "https://" : "http://") + "cdn.segment.com/analytics.js/v1/" + t + "/analytics.min.js"; var n = document.getElementsByTagName("script")[0]; n.parentNode.insertBefore(e,n)}; analytics.SNIPPET_VERSION = "4.0.0"; analytics.load("YOUR_KEY"); analytics.page();} `}} />
        <Head />
        <body id="{this.props.__NEXT_DATA__.props.pageProps.bodyId}"  className="{this.props.__NEXT_DATA__.props.pageProps.bodyClass}" >
          <Main />
          <NextScript />
        </body>
      </Html>
    )
  }
}
export default PubNubDocument;