Skip to main content

Samsung Tizen

LG WebOS

HbbTV

Overview

Web-based CTV platforms run JavaScript applications in embedded browser engines. Permutive’s JavaScript SDK integrates with these platforms through the CTV addon, which provides specialized video tracking capabilities for streaming content. Supported Platforms:

Prerequisites

1

Permutive Workspace

An active Permutive workspace. If you’re not yet a customer, get in touch.
2

Public API Key

Your API key from the Dashboard.
3

CTV Addon

Enable the CTV addon in your Dashboard integrations.

Setup

The JavaScript Tag

Deploy the Permutive JavaScript tag in your CTV web application. The tag initializes the SDK and downloads your workspace-specific bundle.
Replace the following placeholders:
  • <WORKSPACE_API_KEY> - Your workspace API key
  • <WORKSPACE_ID> - Your workspace ID
  • <ORGANIZATION_ID> - Your organization ID
  • <CTV_PLATFORM> - The platform identifier (e.g., hbbtv, lg-webos-24)

Deployment Considerations

CTV Browser Limitations: CTV platforms use embedded browser engines with different JavaScript capabilities than desktop browsers. Always use the platform-specific SDK bundle that matches your target platform version.
  • Use the correct platform bundle - Each platform version has a specific SDK bundle optimized for its JavaScript engine
  • Initialize before video playback - Ensure the SDK is loaded before initializing the CTV addon
  • Test on device - Emulators may not reflect actual device behavior; test on physical CTV hardware
  • Configure network access - Add required domains to your app’s external access policy (especially on Tizen)

Samsung Tizen

Platform Version SDKs

Tizen requires platform-specific SDK bundles. Select the bundle matching your target Tizen platform version:
Tizen Deployment Note: The Tizen script path includes a /tizensdk prefix:

Privileges

Configure the required Tizen privileges in your application:

External Access Policy

Add Permutive’s CDN and APIs to your external access policy in config.xml:

TIFA (Tizen ID for Advertising)

Samsung provides TIFA as a unique advertising identifier. To use TIFA with Permutive:
  1. Add tifa as an identifier in your Dashboard identifiers settings
  2. Identify users using the TIFA ID:
See the Tizen TIFA documentation for retrieving the TIFA value.

LG WebOS

Platform Version SDKs

LG WebOS requires platform-specific SDK bundles. Select the bundle matching your target WebOS platform version:

Script Example


HbbTV

HbbTV (Hybrid Broadcast Broadband TV) applications use the standard CTV script path:

CTV Addon

The CTV addon provides video-specific tracking APIs. Initialize it when video content starts:

Initialization

Deprecation notice: The top-level videoProperties and client inputs are deprecated. Specify them through eventProperties instead, as eventProperties.video and eventProperties.client. eventProperties is applied at the top level of the video events the addon tracks, so it can also carry any custom top-level properties defined in your event schema:
The addon becomes available at permutive.addons.ctv.

Addon Methods

Video Properties

The following properties are available for video events. All are optional but tracking more enables richer cohort building:
Output shape: Pass these properties under eventProperties.video; they appear under the video parent in the resulting Videoview event. The same nested shape (video.*) is what you’ll see in the dashboard and use for cohort building. See CTV Video Tracking for the canonical schema.
Properties are sanitized to match expected types. Invalid types are removed rather than causing errors.

Ad Properties

The CTV addon does not have a typed ad-tracking API — publishers track ad events manually using .track() (see Manual Events below). To produce events that match the schema, wrap these properties under an ad parent in the .track() properties argument.
Output shape: When passed under an ad key in .track(), these become ad.* properties in the resulting event (e.g., ad.title, ad.campaign_id).

Complete Example


Event Tracking

Automatic Events

The CTV addon automatically tracks:

Manual Events

Track additional video events using .track():

JavaScript SDK Reference

For advanced use cases, the full JavaScript SDK is available. Key APIs include:
  • permutive.identify([...]) - Set user identities
  • permutive.track(eventName, properties) - Track custom events
  • permutive.segments() - Get current cohort memberships
  • permutive.ready(callback) - Execute code when SDK is ready

Troubleshooting

Problem: Permutive SDK fails to load on CTV device.Solutions:
  • Verify external access policy includes Permutive domains
  • Check network connectivity on the device
  • Ensure correct platform-specific script URL
  • Verify API key and workspace ID are correct
Problem: Events don’t appear in the dashboard.Solutions:
  • Verify CTV addon is enabled in dashboard settings
  • Check browser console for JavaScript errors
  • Ensure events match your workspace schema
  • Wait 5-10 minutes for events to process
Problem: Engagement metrics don’t match expected values.Solutions:
  • Ensure .play() is called when video plays
  • Ensure .pause() is called when video pauses or buffers
  • Call .stop() when video ends or user exits
  • Set correct duration before calling .stop()
Problem: Google Ad Manager targeting values not applied.Solutions:
  • Ensure GPT library loads before Permutive
  • Verify _pdfps exists in localStorage
  • Check that ad requests fire after Permutive initializes

CTV Overview

Platform selection guide

Video Tracking

Video event best practices

JavaScript SDK

Full JavaScript SDK reference

Google Ad Manager

GAM integration guide