Gigya Job Openings


Skip to end of metadata
Go to start of metadata


The Krux Data Management Platform (DMP) collects and organizes consumer web data, collected from multiple sources, in one central Big Data warehouse. Using the Krux DMP, organizations can consolidate and reconcile their first-party "web behavior" data with media and/or content from third-party data providers. Organizations can also integrate data from their user registration and subscription databases.

Gigya provides functionality for passing users' identity information from your website to the Krux DMP. This creates more detailed analytics and user insights, improving your understanding of your user base and allowing you to target ads on your site based on user data points such as age, gender, relationship status, country, likes, etc.

Below you will find a guide to integrating Gigya with Krux.

Please create a test site in the Gigya admin console for integration testing (don't use your production site) and use a test list on the target integration platform. We are able to put integrations in "sample mode" for testing, which will restrict audiences to 10 sample accounts.

Integration Overview

Real-Time User Matching

Krux behavior tracking is based on third-party cookies that track the user through a specific browser. This leads to users having multiple Krux user IDs (KUID) based on the browser or the device they are using. User matching allows Krux to map users to their GUID (Gigya user ID) and consolidate all behavioral data for the user.

The user matching process handles User ID reconciliation between Krux and Gigya in real-time. Krux user matching code is to be implemented by the customer in the onLogin   event, which returns the user's ID in Gigya. The GUID is used to populate (), as seen in the code example below. 

Only accounts that have been synchronized will be transmitted to Krux.

After a user logs in or a new user is created, the customer must implement a call to Krux's endpoint alerting Krux of the user's GUID. This allows his current KUID to be 'matched' to the user's UID table, which holds the KUIDs associated with the user.

This done using the following URL (where krux_partner_id is the id provided by Krux):<krux_partner_id>&partner_uid=XXXX


  • Data is passed in the next stage.

  • Users who switch browser\device\clean cookies will be re-synched.

  • Return codes: It is possible to check the response code for the Krux beacon endpoint call. 200 indicates - OK, Action completed successfully. Any other value indicates that an error has occurred.

Receiving Identity Data from Gigya

This is the main synchronization process between Krux and Gigya. Gigya's service will perform a daily transmission of identity information for users who have been added or changed since the last run. Any field can be passed on to Krux, including the users' likes and favorites. 

The process will: collect the delta set of users that should be reported (see query below); store them in a delimited file (see description below); compress the file in LZO format; transmit to Krux by FTP; get the FTP status and send a warning email if the process was not successful.

The sync will run daily, matching Krux digesting times. If no matching users are found, no file will be created or sent.

File Name and Format

The file name is {prefix}{timestamp}{suffix}.lzo, where:

  • {prefix} and {suffix }should be coordinated between Gigya's Customer Success Engineer and Krux's implementation engineer.
  • {timestamp} should be formatted as follows: yyyyMMdd_HHmm

The file format:

  • Each line in the identity info data file must contain all the data for a given user and should be delimited by the caret (^) symbol.
  • Each line in the identity info data file should contain 2 columns:
    • The first column represents the GUID and must match the GUID used in the user matching process. 
    • The second column contains all the data associated with the user and should be in the following format: "<Attribue:Value_1>;<Attribue:Value_2>" ... , where each attribute field is preceded by "g_". If a single attribute contains a list of values, these should be separated by a comma (,), as shown in the example below.
    • Each row can contain an arbitrary number of attribute-value combinations.
    • It is not mandatory for values to be specified for all attributes for a given user.

For example, if there are two columns called Age (representing age group) and Gender in the client's registration database, that need to be imported into the Krux platform, then the following represents a valid data file that can be ingested by Krux:

  • User1234^g_age:24
  • User2345^g_gender:f;g_age:24
  • User3456^g_gender:f;g_interests:biking,hiking,reading

Integration Configuration

To configure the translation of data between Krux and Gigya, you need to set up the configuration file in order to run data sync (see Get Identity Data from Gigya) from Gigya to Krux. Your Implementation Consultant will set up the file for you, however you will need to supply the following information:

  • The time of day that that synchronization will run. 
  • The prefix for the data file to be created on the Krux platform.
  • A filter defining the set of users that should be synchronized to Krux. 

Field Mapping: The integration file requires a map of how fields in Gigya are mapped to Krux. This will be coordinated between Gigya Customer Success Engineer and Krux Implementation Engineer.

Sync Variable: In order to reduce the integration run time, a Boolean field needs to be created in the customer's Profile Management - IDS , using the accounts.setSchema API method. The field should be called data.internalKruxIdSyncResponseCode and should have a write access of clientModify. The field is used by the code which performs the data sync.

Adding Gigya to a Web Page 

In this section we use an example to demonstrate user matching  when integrating Gigya with Krux.

The code both syncs users to Krux and indicates to Gigya that the user was synced, so that identity data can be transmitted.

Code Example

<script type="text/javascript">

function KruxUserMatch (res) 
    kruxBaseUrl = '';
    partnerId = <Your_Krux_Partner_ID>;
    var src = kruxBaseUrl + 'partner=' + partnerId + '&partner_uid=' + res.UID;
    var img = document.createElement("img");
    img.src = src;
    var data = {};
    var parms = {"data":{internalKruxIdSyncResponseCode: 'true'}};
window.onload = function () {gigya.accounts.addEventHandlers( {onLogin:KruxUserMatch} ); };