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>
)
}ルート変更のトラッキング
autoPageViewがtrueの場合、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
}