Javascript Tagging Library: Track Query

Javascript Tagging Library: Track Query

Overview

Instructions to send queries information using the Javascript Tagging Library.

Step-by-step guide

Query data can be sent to Empathy using the trackQuery function including the following parameters:

trackQuery(terms, results, page, options, callback)


trackQuery Parameters

Parameter

Description

Data Type

Mandatory

Parameter

Description

Data Type

Mandatory

terms

The query typed by the user

String

Yes

results

Number of results returned by the search engine

Integer

Yes

page

The page number

Integer

Yes

options

Object that may contain information about filters and other data like session and userID

Object

No*

callback

Function that will be executed after sending data

Function

No

*This parameters are not mandatory for the service but necessary for the statistics

Options

The options object should contains additional parameters not passed as parameters in function call:

{ lang: LANGUAGUE, scope: SCOPE, store: STORE, catalog: CATALOG, section: SECTION, user: USER_ID, session: SESSION_ID }

Parameter

Description

Data Type

Mandatory

Parameter

Description

Data Type

Mandatory

FILTERS: possible values (and other custom filters if applicable) will be provided by Empathy

lang

Language identifier (es, en...)

String

No

scope

Scope identifier (desktop, mobile, android app, iOS app...)

String

No

store

Store value if it is required for the project

String

No

catalog

Catalog value if it is required for the project

String

No

section

Section value if it is required for the project

String

No

TRACKING: user and session identifiers should use the UUID format

user

UserID used for user based services

String

No

session

SessionID used for user based services

String

No

 

The callback function receives an object with the following content. Also receives params sent in options.

{ totalHits: results, page: page, q: terms, referrer: document.referrer }

 

Code samples

Normal Usage

Specifying a callback parameter
/** * This example suppose that the provided scope is 'desktop' and the parameter to be included in the options parameter is the lang * parameter with value 'en' . UserID and SessionID are also included. **/ var options = { lang:'en', scope: 'desktop', session: 'q1w2e3r4t5y6', user: 'u1s2e3r' } empathyTAG.trackQuery('test', 10, 1, options, function(responseData){ alert('test'); });
Without a callback (No functions will be executed after tracking the data)
/** * This example suppose that the provided scope is 'desktop' and the parameter to be included in the options parameter is the lang * parameter with value 'en' . UserID and SessionID are also included. **/ var options = { lang:'en', scope: 'desktop', session: 'q1w2e3r4t5y6', user: 'u1s2e3r' } empathyTAG.trackQuery('test', 10, 1, options);

Best practices

In most of the cases, you should implement one of these solutions to prevent receiving partial queries:

  • Prevent partial queries applying a delay before sending the trackQuery information, the delay time in the following example will be 2000 ms (2 seconds).

    var _timeoutID; var options = { lang:'en', scope: 'desktop', session: 'q1w2e3r4t5y6', user: 'u1s2e3r' } window.clearTimeout(_timeoutID); _timeoutID = window.setTimeout(function(){ empathyTAG.trackQuery('test', 10, 1, options, function(responseData){ alert('test'); }); },2000);
  • Prevent partial queries filtering the query length to be considered as valid. For this example, it will be used 3 characters as minimal length.

    //This variable should be filled with the query typed by the user var userQuery = 'test'; var _timeoutID; var options = { lang:'en', scope: 'desktop', session: 'q1w2e3r4t5y6', user: 'u1s2e3r', } if (userQuery.length > 3){ window.clearTimeout(_timeoutID); _timeoutID = window.setTimeout(function(){ empathyTAG.trackQuery('test', 10, 1, options, function(responseData){ alert('test'); }); },2000); }
  • Remember send queries when search engine returns 0 results. It's very important for future actions in search engine.

    /** * This example suppose that the provided scope is 'testscope' and the parameter to be included in the options parameter is the lang * parameter with value 'en' **/ var options = { lang:'en', scope: 'desktop', session: 'q1w2e3r4t5y6', user: 'u1s2e3r' } empathyTAG.trackQuery('test', 10, 0, options);
  • Blank queries: Do not send a query without characters. Usually when users click in search button without write nothing in search box.

    • In this case be careful to not send the placeholder text (i.e. "Search...")


Related articles