Bento

Bento NextJs Guide

This guide will help you implement Bento into your NextJs applications, regardless of your development experience.

Reference

Learning Computer Streamline Icon: https://streamlinehq.com
1
Package Installation

Installation

Install the Bento Next.js SDK in your project:

For server-side integration capabilities, also install:

2
Environment Configuration

Basic Setup

Add your Bento credentials to your environment variables:

You can find your keys in your Bento Team Settings. Click Your Private API Keys and generate a key set if needed.

3
Client Setup

Configure the analytics component in your app layout:

For Next.js 13+ (App Router):

For Next.js 12 (Pages Router):

Learning Computer Streamline Icon: https://streamlinehq.com

Page View Tracking

Page views are automatically tracked when you include the Bento analytics components. The SDK handles route changes and sends view events to Bento.

How It Works

The SDK uses Next.js routing hooks to detect navigation:

  • App Router (13+): Uses usePathname() to detect route changes
  • Pages Router (12): Uses router.events to listen for navigation

Manual Implementation

If you need more control over page view tracking:

App Router:

Pages Router:

User Identification

Identify users to connect their actions across sessions and devices:

Dynamic User Identification

Manual Identification

Event Tracking

Track custom events to understand user behavior and trigger workflows:

Basic Event Tracking

React Hook for Event Tracking

Learning Computer Streamline Icon: https://streamlinehq.com

Server-Side Integration

For server-side event tracking and subscriber management, use the Node SDK:

Server-Side Configuration

API Route Examples

Advanced Configuration

Custom Script Loading

For more control over when and how the Bento script loads:

Conditional Loading

Load Bento only in production or for specific user segments:

TypeScript Support

The SDK includes full TypeScript support with proper type definitions:

Type Definitions

Typed Event Tracking

Learning Computer Streamline Icon: https://streamlinehq.com

Custom Events

E-commerce Events

User Lifecycle Events

Best Practices

Performance Optimization

  1. Lazy Load Analytics: Only load Bento when needed
  2. Batch Events: Group related events when possible
  3. Debounce Tracking: Prevent spam from rapid user actions

Error Handling

Learning Computer Streamline Icon: https://streamlinehq.com

Client-Side Methods

MethodDescriptionExample
window.bento.view()Track page viewwindow.bento.view()
window.bento.identify(email)Identify userwindow.bento.identify('[email protected]')
window.bento.track(event, data)Track custom eventwindow.bento.track('signup', { plan: 'pro' })
window.bento.tag(tag)Add tag to userwindow.bento.tag('premium_user')

Components

ComponentPropsDescription
BentoAnalyticssiteUuid: string, userEmail?: stringApp Router analytics
BentoLegacyAnalyticssiteUuid: string, userEmail?: stringPages Router analytics

Hooks

HookParametersReturnsDescription
useBentoAnalyticsuserEmail?: stringvoidApp Router page tracking
useBentoLegacyAnalyticsuserEmail?: stringvoidPages Router page tracking
Learning Computer Streamline Icon: https://streamlinehq.com

Common Issues

IssueSolution
Script not loadingCheck NEXT_PUBLIC_BENTO_SITE_ID is set and accessible in browser
Events not trackingEnsure window.bento exists before calling methods
TypeScript errorsImport types from @bentonow/bento-nextjs-sdk/types
Hydration mismatchesUse dynamic imports with ssr: false for client-only components

Debugging

Learning Computer Streamline Icon: https://streamlinehq.com