ConverlayConverlay

React統合

@converlay/sdk/reactエントリーポイントは、Reactアプリケーション向けにConverlayProviderコンポーネントとuseConverlay()フックを提供します。React 18以降が必要です。

ConverlayProvider

アプリケーションをプロバイダーでラップし、コンポーネントツリー全体でConverlayインスタンスを利用可能にします。

ConverlayProvider props
<ConverlayProvider
  shopDomain="my-store.myshopify.com"  // Required
  autoPageView={true}                   // Auto page_view on mount
  debug={false}                         // Console logging
  endpoint="..."                        // Custom endpoint
  consent={{ analytics: true, marketing: true }}
>
  {children}
</ConverlayProvider>

useConverlay()

任意の子コンポーネントからConverlayインスタンスにアクセスします。

useConverlay() hook
'use client'

import { useConverlay } from '@converlay/sdk/react'

function ProductPage({ product }) {
  const { track, identify, setConsent, flush, destroy } = useConverlay()

  useEffect(() => {
    track('view_item', {
      ecommerce: {
        items: [{
          item_id: product.id,
          item_name: product.title,
          price: product.price,
          quantity: 1,
        }],
      },
    })
  }, [product.id])

  return <div>{/* ... */}</div>
}

フックは完全なConverlayInstanceを返します:

  • track(eventName, properties?)
  • identify(data)
  • setConsent(consent)
  • flush()
  • destroy()

フレームワーク別セットアップ

Next.js App Router

クライアントコンポーネントが必要

プロバイダーはクライアントコンポーネント('use client')に配置する必要があります。別のProvidersコンポーネントを作成し、ルートレイアウトでインポートしてください。

Next.js App Router
// app/providers.tsx
'use client'

import { ConverlayProvider } from '@converlay/sdk/react'

export function Providers({ children }: { children: React.ReactNode }) {
  return (
    <ConverlayProvider
      shopDomain="my-store.myshopify.com"
      autoPageView={true}
    >
      {children}
    </ConverlayProvider>
  )
}

// app/layout.tsx
import { Providers } from './providers'

export default function RootLayout({ children }) {
  return (
    <html>
      <body>
        <Providers>{children}</Providers>
      </body>
    </html>
  )
}

Next.js Pages Router

Next.js Pages Router
// pages/_app.tsx
import { ConverlayProvider } from '@converlay/sdk/react'

export default function App({ Component, pageProps }) {
  return (
    <ConverlayProvider
      shopDomain="my-store.myshopify.com"
      autoPageView={true}
    >
      <Component {...pageProps} />
    </ConverlayProvider>
  )
}

Shopify Hydrogen

Hydrogen (Remix)
// app/root.tsx
import { ConverlayProvider } from '@converlay/sdk/react'

export default function App() {
  return (
    <ConverlayProvider
      shopDomain="my-store.myshopify.com"
      autoPageView={true}
    >
      <Outlet />
    </ConverlayProvider>
  )
}

ルート変更のトラッキング

autoPageViewtrueの場合、SDKはマウント時に一度page_viewを発火します。クライアントサイドナビゲーション(SPA)の場合は、ルートトラッカーを追加してください:

Route tracker
'use client'

import { usePathname } from 'next/navigation'
import { useConverlay } from '@converlay/sdk/react'
import { useEffect } from 'react'

export function RouteTracker() {
  const pathname = usePathname()
  const { track } = useConverlay()

  useEffect(() => {
    track('page_view')
  }, [pathname])

  return null
}