Enable identification signals in the Connect web library

The identification signal connects visitor behavior to known contacts in your audience. This is the foundational signal that enables personalization and attribution across all other behavioral tracking.

Supported identification types:

  • Email addresses (most common identifiers)
  • Phone numbers
  • Contact keys (customer IDs)

Why identification signals matter:

  • Link user sessions to contacts in your audience
  • Track user activity across multiple devices
  • Feed new contacts into your audience
  • Enable personalized messaging based on behavior

Availability: Pro, Premium and Ultimate


Implementation considerations

Triggering approach

Unlike other signals, the identification signal should only be sent once per session. Sending it repeatedly creates unnecessary data and may impact performance.

Implementation approach: Write a flag to session storage after the first send, then check for that flag before sending again.

Data sources for identifier value

The key point in the configuration is to gather the data to populate the identifierValue field. Several sources are available:

  • User identification stored in browser cookies
  • Temporary session-based storage
  • Persistent client-side storage
  • Data layer (for example, Google Tag Manager dataLayer)
  • URL parameters passed during navigation
  • Login API monitoring (capture identifier during successful authentication)

If none of these options are available, work with your development team to make the identifier accessible to the Connect library.

Authentication context

Use the identificationFromLogin field to distinguish between:

  • Explicit identification (true) - User actively logged in
  • Implicit identification (false) - Identifier retrieved from cookie, query string or other passive source

This helps segment sessions based on authentication context.


Configuration

Method

TLT.logSignal(signalObject)

Sends the signal to the Acoustic Connect endpoint as a JSON object. The Connect library must be initialized before calling this method.

Signal structure

Top-level fields

  • category: String - Valid value - Behavior.
  • description: String - Description of the signal
  • effect: String - Describes the effect of the signal on engagement. Valid values: negative, positive. Use positive for identification signals.
  • name: String - Name to differentiate this signal from others (for example, "identification from website"). Max length - 256 chars.
  • signalType (required): String - Valid value - identification.

Signal content

  • identificationFromLogin: Boolean - Set to true if the identifier derives from user authentication. Set to false if taken from a cookie, query string or other passive source. This separates explicit vs. implicit identification.
  • identifierName (required): String - The type of identifier. Valid values: email, sms, contactKey.
  • identifierValue (required): String - The contact information associated with the visitor (email address, phone number, or customer ID).

Notes:

  • If any required field is missing or invalid, the entire signal will be discarded.
  • Optional fields enhance the signal but won't prevent processing if omitted or invalid.

Example

// Check that the Connect SDK is present
if (window.TLT && window.TLT.isInitialized()) {

    const signal = {
        signalType: "identification",
        name: "identification generated by web site",
        category: "Behavior",
        identifierName: "email", // Required
        identifierValue: "", // Required
        identificationFromLogin: true,
        effect: "positive", 
        signalCustomAttributes: []
    };

    // Utility function for getting cookie value
    const getCookieValue = (name) => (
        document.cookie.match("(^|;)\\s*" + name + "\\s*=\\s*([^;]+)")?.pop() || ""
    );

    if (!sessionStorage.getItem("connect-id-signal")) {

        // Check data layer for email
        const email = window.prestashop.customer.email || "";
        // Use the data layer value, if present
        if (email) {
            signal.identifierValue = email;
            // Else check the "customerID" cookie value
        } else {
            signal.identifierValue = getCookieValue("customerID") || "";
        }

        // Optional: display signal in console
        console.log("identification signal: " + JSON.stringify(signal, undefined, 2));

        // Send signal to Acoustic
        window.TLT.logSignal(signal);

        // Set a flag so we don't send signal again this session
        sessionStorage.setItem("connect-id-signal", "true");
    }
}