Custom Data Options
Guide on passing custom data to Gumlet Insights SDKs
Gumlet Insights lets you attach first-party metadata when you initialise the SDK (or update it later). Fields listed below are stored on modern v2 ingest and appear as dashboard breakdowns.
All examples use the current web SDK (GumletInsights + attach). The same config keys work with React Native (withGumletInsights config prop) and other player integrations.
Required field
Every config must include workspace_id from Workspaces. Without it, the license check fails and no events are sent.
Supported fields (Insights v2)
These are the custom / first-party fields the current analytics pipeline persists and exposes for filtering and breakdowns.
User
| Parameter | Data Type | Beacon / column | Description |
|---|---|---|---|
userId | String | custom_user_id | Unique ID for the user in your product database. |
userEMail | String | user_email / custom_user_email | Email the user signed up with. (userEmail is accepted as an alias.) |
Video
| Parameter | Data Type | Beacon / column | Description |
|---|---|---|---|
customVideoId | String | custom_video_id | Your internal video ID (e.g. database primary key). |
customVideoTitle | String | custom_video_title | Title of the video. |
Additional slots
Five free-form string slots. Keep each slot’s meaning consistent across your product.
| Parameter | Data Type | Beacon / column |
|---|---|---|
customData1 | String | custom_data_1 |
customData2 | String | custom_data_2 |
customData3 | String | custom_data_3 |
customData4 | String | custom_data_4 |
customData5 | String | custom_data_5 |
Keep the definition of each customDataN slot the same for every integration that reports into the same workspace.
Not supported on Insights v2
The following keys still exist on some older SDK type definitions or v1 pipelines, but they are not stored or breakable on the current v2 Insights tables / dashboard. Do not rely on them:
| Category | Unsupported keys |
|---|---|
| User | userName, userPhone, userProfileImage, userAddressLine1, userAddressLine2, userCity, userState, userCountry, userZipcode |
| Video | customContentType, customVideoDurationMillis, customEncodingVariant, customVideoLanguage, customVideoSeries, customVideoProducer, customVideoVariant, customVideoVariantName |
| Player labels | customPlayerIntegrationVersion, customPlayerName, customPageType |
| Extra slots | customData6, customData7, customData8, customData9, customData10 |
Player software name and version (player_software, player_software_version) are filled automatically by the SDK / adapter — you do not set them via custom player labels.
Pass data on init
const gumletConfig = {
workspace_id: 'YOUR_WORKSPACE_ID', // required
userId: '123',
userEMail: 'oceane.bourgeois@example.com',
customVideoId: 'HIMYMSeason1Episode1',
customVideoTitle: 'Pilot',
customData1: 'campaign-a',
customData2: 'variant-b',
customData3: '',
customData4: '',
customData5: '',
};
const gumletInsights = new gumlet.GumletInsights(gumletConfig);
await gumletInsights.attach(player); // HTMLVideoElement / HLS.js / Shaka / etc.
For browser pages, load the SDK from the CDN first:
<script type="module" src="https://cdn.gumlytics.com/insights/4.0/main.mjs"></script>
Update data after init
Use these when the viewer logs in later, or the same player instance starts a different title.
Update helpers clear omitted fields
For each helper below, fields you omit from the object are cleared. Re-pass any value that should stay set.
User
gumletInsights.updateCustomUserData({
userId: '123',
userEMail: 'christelle.robert@example.com',
});
Video
gumletInsights.updateCustomVideoData({
customVideoId: 'HIMYMSeason1Episode2',
customVideoTitle: 'Episode 2',
});
Additional slots
gumletInsights.updateCustomData({
customData1: 'campaign-b',
customData2: 'variant-c',
customData3: '',
customData4: '',
customData5: '',
});
React Native
The same supported keys go on the config prop of withGumletInsights(Video):
<TrackedVideo
config={{
workspace_id: 'YOUR_WORKSPACE_ID',
userId: '123',
userEMail: 'viewer@example.com',
customVideoId: 'episode-1',
customVideoTitle: 'Pilot',
customData1: 'campaign-a',
}}
source={{ uri: 'https://example.com/stream.m3u8' }}
paused={paused}
/>
See React Native Player and the sample app.
Parameter reference
Complete list of custom data parameters available on Insights v2:
| Parameter | Category | Data Type | Beacon / column | Update helper |
|---|---|---|---|---|
userId | User | String | custom_user_id | updateCustomUserData() |
userEMail | User | String | user_email / custom_user_email | updateCustomUserData() |
userEmail | User | String | Same as userEMail (alias) | updateCustomUserData() |
customVideoId | Video | String | custom_video_id | updateCustomVideoData() |
customVideoTitle | Video | String | custom_video_title | updateCustomVideoData() |
customData1 | Additional | String | custom_data_1 | updateCustomData() |
customData2 | Additional | String | custom_data_2 | updateCustomData() |
customData3 | Additional | String | custom_data_3 | updateCustomData() |
customData4 | Additional | String | custom_data_4 | updateCustomData() |
customData5 | Additional | String | custom_data_5 | updateCustomData() |
workspace_id is required for the SDK but is a workspace identifier, not a custom-data field.

