Adenty User Guide

Adenty User Guide

Adenty consists of a plugin and an Admin portal.

The plugin should be installed on a website (web app, web portal, platform) where we track or work with an anonymous audience. It collects metrics, fires events, and sends all this information to Adenty server and Google Analytics.

The Admin portal is a self-service portal that manages сustomer сompany details and users, the chosen Adenty plan, and a list of the tracked sites (organized into Site Groups if needed). The Admin portal also provides the Adenty installation artifacts and displays the analytics of the gathered visitor data.

To start using Adenty you need to choose a preferable plan, complete registration, configure Adenty, and install it to web resources where you want Adenty to run on.

Follow instructions below to configure and install Adenty on your web resource(s), as well as integrate with Adenty to consume the exposed data.

Configure Sites and Site Groups

By default, one site and one site group automatically created upon registration. You can manually add more sites and site groups, following the instructions below. 

To add another site:  

  • On the Adenty Portal, Go to the Admin tab – > Sites 
  • Create your site or multiple managed sites by clicking the button «Add site» and filling in the form. 

To add additional site group: 

  • On the Adenty Portal, go to the Admin tab – > Site groups. 
  • Create your site group or multiple site groups by clicking the button «Add a site group» and filling in the form. 

Integrate Adenty with Google Analytics

1

Export JSON files with tags from Adenty portal

Download two JSON files: 

  • "Adenty_GTM_tags": contains custom Adenty tags specifically designed for Google Tag Manager (GTM) to track Adenty events in Google Analytics.  
  • "Configuration_tag" (optional): contains tag that connects Google Analytics with GTM. 
2

Import the files to your Google Tag Manager container

  • Import "Adenty_GTM_tags" to your GTM to track and display custom Adenty events in your Google Analytics. 
  • Optional: Use "Configuration_tag" if your Google Analytics and GTM are not yet connected.  
  • After the import is completed, you will see a list of Adenty tags in your GTM workspace. 
3

Update tags with the Measurement ID of your Google Analytics

  • Update the "Measurement ID" field with your Google Analytics ID (GA-ID) for each Adenty tag imported from "Adenty_GTM_tags".
  • If using "Configuration_tag", replace the Configuration Tag ID with your Google Analytics ID (GA-ID). 
4

Click "Publish" to apply changes

After that, you will start getting Adenty events on your Google Analytics account.

Please, use official Google Instructions  for more details. 

As a result, your Google Analytics will display Adenty events in addition to standard ones.

Install Adenty on Your Web Resource(s)

To start running Adenty on your web resource(s), complete the following steps:

1. Generate installation script

On the Adenty Portal, go to the Implementation Tab. 

To generate installation scripts for all sites that you manage, click the button «Generate script». Note, that each initialization script refers to a particular site and should be applied to it for correct analytics. 

We recommend creating a separate site in the Admin Portal for each web resource environment, such as development or test, as well as for subdomains. This ensures accurate insights and visitor identification for each site. 

To generate an installation script for a specific site, click on the filter button, then choose appropriate site group and site. Then click the button «Generate script». 

2. Choose the installation option

Depending on the selected plan opt for one of three installation options: 

 

  1. HTML (available for all pricing plans) 
  2. GTM (available for Identity Pro, Identity Enterprise) 
  3. White Label (JS) (available for Identity Pro, Identity Enterprise) 
2.1 Installation via HTML and GTM

Placement of the Adenty code 

After acquiring the installation script, add it to each page of your site (for example, within a common header). 

For HTML type implementation put the script at the end of HTML body of every page. 

For GTM type implementation put the script to the appropriate Tag that runs on every page. 

 

Activating or deactivating Adenty 

To comply with data privacy standards, you should place the code generated for Adenty installation in the code part of your web resource where the user's consent is processed. Therefore: 

 

  • If the user clicks "Yes" and agrees to tracking, recording, and storing cookies, you can activate Adenty.  
  • If the user clicks "No" and refuses tracking, recording, and storing cookies, you shouldn’t activate Adenty. 
2.2 Installation via White label (JS)

This option implies you should add two pieces of Adenty installation code separately (which is recommended for the performance purposes): 

 

  • To download Adenty, place the first code piece at the beginning of the web resource JavaScript run flow. 
  • To initialize Adenty, place the second code piece in the code of your web resource where the user's consent is processed. 

Alternatively, you can add two pieces of installation code as one. For this, place the whole piece of Adenty code in the code of your web resource where the user's consent is processed. 

Congratulations, you have successfully set up the Adenty Plugin!

Furtherdown, you don’t need to worry about Adenty plugin updates — it happens automatically.

Consume Adenty capabilities

Once the Adenty plugin is launched on your site(s), you can access Adenty public object through console:

				
					adenty
				
			

Here you can subscribe to events fired, get anonymous and authenticated visitors data, page and session information, response data from third-party integrations (if configured).

To subscribe to any browser event

Use the following command: 

				
					adenty.event.listento('EventName', function()) 
				
			

To subscribe to Adenty System or Custom event 

Use the same command, replacing "EventName" with your target event. See the full list of available events in the next section — Adenty System Events.

Example of subscribing to an Event “VisitorIdResolved:  

				
					adenty.event.listento('VisitorldResolved', function(){ 
              alert("Hello!  'VisitorldResolved'"); 
}) 
				
			

To emulate authentication in Adenty (to be in sync with auth provider) 

Use the following commands: 

				
					adenty.auth.login('accountId','accountDetails') 
adenty.auth.logout() 
				
			

To get authenticated user information 

Use the following commands: 

				
					await adenty.auth.getaccountdetail() 
await adenty.auth.getaccountid() 
				
			

To access Adenty Data Layer 

Within the Adenty object is available Data Layer. It contains structured data per provider valid for current page load. 

				
					adenty.dl.{VendorCode} 
				
			

There is available adenty vendor, that contains visit, fraud info: 

  • clientcode: current client (Adenty subscriber) code  
  • sitecode: current site unique Id (configured in Adenty) 
  • sitegroupcode: current site group ID (configured in Adenty) 
  • sid: current session Id 
  • pid: pageview Id 
  • vid: visitor Id 
  • fraud: flag, whether fraud has been detected on the page 

To subscribe to Adenty Data Layer changes 

Adenty notifies about every Data Layer change, consumers can subscribe to these changes using the _dlchanges property. 

Example:

				
					adenty.dl._dlchanges.subscribe(function (...args) { 
    console.log('Data Layer updated:'); 
    console.log(args[0]); 
}); 
				
			

Adenty System Events

Based on visitor activity, Adenty fires the following events: 

1
VisitorNew: visitor appeared on a web resource first time.

Contains arguments:

  • sid - current session Id 
  • pid - pageview Id 
  • vid - visitor Id 
  • deviceType - type of device (e.g. desktop, mobile), deviceOS 
  • geo - country, city of the visitor 
  • accountId - current account Id 
  • accountType- type of authentication system used (e.g., default, Google, Facebook) 
2
VisitorReturned: visitor was recognized when returned to a web resource after leaving it for some time.

 Contains arguments: 

  • sid - current session Id 
  • pid - pageview Id 
  • vid - visitor Id 
  • deviceType -  device and OS used (e.g. mobile, iOS; desktop, Windows) 
  • geo - country, city of the visitor 
  • accountId - current account Id 
  • accountType- type of authentication system used (e.g., default, Google, Facebook) 
3
VisitorRestored: visitor was recognized (restored) as returned even though he appeared with empty local storage (e.g. due to local storage cleaning, activation of incognito mode, or other anonymization tactics applied).

Contains arguments: 

  • sid - current session Id 
  • pid - pageview Id 
  • vid - visitor Id 
  • deviceType - device and OS used (e.g. mobile, iOS; desktop, Windows) 
  • geo - country, city of the visitor 
  • accountId - current account Id 
  • accountType- type of authentication system used (e.g., default, Google, Facebook) 
4
VisitorFingerprintChanged: Fingerprint ID got changed due to any device parameter changed (e.g. due to IP change or browser version, etc).

Contains arguments: 

  • sid - current session Id 
  • pid - pageview Id 
  • vid - visitor Id 
  • deviceType - device and OS used (e.g. mobile, iOS; desktop, Windows) 
  • geo - country, city of the visitor 
  • rid – current fingerprint Id 
  • oldRid – previous fingerprint Id 
5
VisitorSwitchedFrom: visitor switched to current ID from a previously used ID.

 Contains arguments: 

  • sid - current session Id 
  • pid - pageview Id 
  • vid - visitor Id 
  • deviceType - device and OS used (e.g. mobile, iOS; desktop, Windows) 
  • geo - country, city of the visitor 
  • accountId - current account Id 
  • accountType- type of authentication system used (e.g., default, Google, Facebook) 
  • newVid - visitor ID that the visitor switched to 
6
VisitorSwitchedTo: visitor switched from this ID to a new one.

Contains arguments: 

  • sid - current session Id 
  • pid - pageview Id 
  • vid - visitor Id 
  • deviceType - device and OS used (e.g. mobile, iOS; desktop, Windows) 
  • geo - country, city of the visitor 
  • accountId - current account Id 
  • accountType- type of authentication system used (e.g., default, Google, Facebook) 
  • oldVid - visitor ID that the visitor switched from 

For authorized users, Adenty fires three additional events: 

1
AccountLogin: visitor that has an account on web resource logged in.

Contains arguments: 

  • sid - current session Id 
  • pid - pageview Id 
  • vid - visitor Id 
  • deviceType - device and OS used (e.g. mobile, iOS; desktop, Windows) 
  • geo - country, city of the visitor 
  • accountId - current account Id 
  • accountType- type of authentication system used (e.g., default, Google, Facebook) 
2
AccountSwitchedFrom: visitor switched to current account from a previously used one.

Contains arguments: 

  • sid - current session Id 
  • pid - pageview Id 
  • vid - visitor Id 
  • deviceType - device and OS used (e.g. mobile, iOS; desktop, Windows) 
  • geo - country, city of the visitor 
  • accountId - current account Id 
  • accountType- type of authentication system used (e.g., default, Google, Facebook) 
  • newAccountId - account ID that the user switched to 
3
AccountSwitchedTo: the visitor switched from this account to the new one.

Contains arguments: 

  • sid - current session Id 
  • pid - pageview Id 
  • vid - visitor Id 
  • deviceType - device and OS used (e.g. mobile, iOS; desktop, Windows) 
  • geo - country, city of the visitor 
  • accountId - current account Id 
  • accountType- type of authentication system used (e.g., default, Google, Facebook) 
  • oldAccountId - account ID that the user switched from

To help detect fraudulent activity, Adenty generate such events as: 

1
VisitorVPNDetected: visitor navigated web resource under VPN.

Contains arguments: 

  • sid - current session Id 
  • pid - pageview Id 
  • vid - visitor Id 
  • deviceType -device and OS used (e.g. mobile, iOS; desktop, Windows) 
  • geo - country, city of the visitor 
  • deviceTimeZone - time zone based on device settings 
  • ipTimeZone - time zone detected based on IP address (may reflect VPN) 
2
AccountFraudDetected: visitor is likely to share single account with multiple users.

Contains arguments: 

  • sid - current session Id 
  • pid - pageview Id 
  • vid - visitor Id 
  • deviceType - device and OS used (e.g. mobile, iOS; desktop, Windows) 
  • geo - country, city of the visitor 
  • accountId - current account Id 
  • accountType- type of authentication system used (e.g., default, Google, Facebook) 
  • fraudReason – message describing the reason for fraud suspicion (e.g., frequent logins from different OS, locations, or devices) 
  • diffDevicesLinkedCount - number of different devices linked to the same account 
  • diffDeviceOSLoginCount - number of different operating systems used to log into the account 
  • diffGeoLoginCount - number of distinct geolocations used to log into the account 
  • diffIpsLoginCount - number of unique IP addresses used to log into the account
3
AccountNewDeviceDetected: access to account was carried out from a new device.

Contains arguments: 

  • sid – current session Id 
  • pid – pageview Id 
  • vid – visitor Id 
  • deviceType – device and OS used (e.g. mobile, iOS; desktop, Windows) 
  • geo – country, city of the visitor 
  • accountId – current account Id 
  • accountType – type of authentication system used (e.g., default, Google, Facebook) 
  • fraudReason 
4
LocalStorageNotAvailableDetected: an event that triggers when Local Storage is blocked and the system switches to server-side cookies.

Contains arguments: 

  • sid - current session Id 
  • pid - pageview Id 
  • vid - visitor Id 
  • deviceType -device and OS used (e.g. mobile, iOS; desktop, Windows) 
  • geo - country, city of the visitor 
  • accountId - current account Id 
  • accountType - type of authentication system used (e.g., default, Google, Facebook) 
  • rid – current fingerprint Id 
  • msg - message that local storage is blocked 

All those events are fired and gathered by Adenty by default. Optionally they can be sent to GA (if configured and integrated) to extend the existing Client’s analytics. 

Adenty Custom Events

Adenty allows configuring flexible custom browser events triggered in real time. To configue Event, specify the following parameters: 

  • Event Name* – name of the event 
  • Site* – website(s) where the event will be triggered. 
  • Track in Adenty – event will be sent to Adenty (and available in Visitor Overview). 
  • Track in GA – event will be sent to GA (and available for GA reporting) 
  • Depends on Integration – event will be triggered only after receiving the configured API response. 
  • Event Arguments – arguments to pass with the triggered event.  
  • Conditions –  when Event will be triggered. 

Consume / Manage Server Cookies

Adenty recommends storing and managing Browser data outside of Browser to reduce the risk of losing data in incognito mode or been blocked on modern and secure Browsers.  

Adenty Server cookie feature allows to put currently used Browser data from the Browser to Adenty server storage.  

Server Cookies are available within an object: 

				
					adenty.scookie 
				
			

This object offers a range of methods to manage data: 

set” – sets server cookie using an object format.

Usage examples:

				
					await adenty.scookie.set({ 
	"name": "string", 
	"value": "string", 
	"expires": "string", 
	"maxAge": "number", 
	"path": "string", 
	"sameSite": "enum", 
	"secure": bool, 
	"partitioned": bool, 
	"httpOnly": bool, 
	"scope": "string", 
"purgeDate": "DateTime" 
}); 
				
			
				
					adenty.scookie.set({ 
	"name": "string", 
	"value": "string", 
	"expires": "string", 
	"maxAge": "number", 
	"path": "string", 
	"sameSite": "enum", 
	"secure": bool, 
	"partitioned": bool, 
	"httpOnly": bool, 
	"scope": "string", 
"purgeDate": "DateTime" 
}).then(() => {console.log("set cookie");}); 
				
			

Params: 

  • name* – cookie’s name, required 
  • value – cookie’s value 
  • expires – expiration date of the cookie 
  • maxAge – numeric expiration age of the cookie, used for calculating expires and has higher priority than expires if both defined. If expires and maxAge are null, default value is 90 days 
  • path – url path storage of the cookie 
  • sameSite – specify whether/when cookies are sent with cross-site requests. Possible values: “Lax”, “Strict”, “None” 
  • secure – flag (if true), whether cookie is secure. If it is true, then cookie is added to the https requests only. 
  • httpOnly – flag (if true), whether it is a server-side cookie, in this case not available from the browser 
  • partitioned – Manages access for 3rd-party cookies, putting them to a specific partiotions, not all browsers support. 
  • scopespecify whether the cookie is set at the current domain level (current site) or shared across all sites within the current SiteGroup. Possible values: “Domain” or “SiteGroup” (values are case-insensitive). The default value is “Domain“. 
  • purgeDate — specifies the date when the cookie will be deleted permanently from the server, if not retention period. The default value is null – will be deleted, once expired, after retention period. 

To create a cookie on Domain level: 

				
					adenty.scookie.set ( 
“name”: "noname”, 
“value”: “novalue”   
); 
				
			

To create shared cookie: 

				
					adenty.scookie.set ( 
"name": "noname ", 
“value”: “novalue”, 
"scope": "sitegroup" 
); 
				
			

“setString” – sets server cookie in string format.  

Usage examples: 

				
					await adenty.scookie.setString(
"cookieString", 
"scope" 
); 
				
			
				
					adenty.scookie.setString( 
"cookieString", 
"scope" 
).then(()=> {console.log("set cookie")}); 
				
			

Params: 

  • cookieStringa string containing cookie parameters (see full list in the example below) 
  • scope – specify whether the cookie is set at the current domain level (current site) or shared across all sites within the current SiteGroup. Possible values: “Domain” or “SiteGroup(values are case-insensitive). The default value is “Domain“. 

The cookieString uses the same parameters as in the Set command. 

To create a shared cookie setting all parameters, use the following command: 

				
					adenty.scookie.setString( 
'qa=2;  
Path=/;  
Expires=Fri,  
25 Oct 2024 08:23:14 GMT;  
MaxAge=60;  
SameSite=Lax;  
Partitioned;  
HttpOnly;  
Secure=true', 
"purgeDate": "2025-03-21 06:00:00+00" 
“SiteGroup” 
); 
				
			

To create a local (domain) cookie use: 

				
					adenty.scookie.setString( 
"name=value" 
); 
				
			

 “get” – retrieves cookies in object format.

Usage examples: 

				
					await adenty.scookie.get( 
"cookieName" 
); 
				
			
				
					adenty.scookie.get( 
"cookieName" 
).then(result => {console.log(result);});
				
			

Params: 

  • сookieName – cookie’s name. If “cookieName is specified, it returns the cookie with that name; if not it returns an array of all cookies. 

 “getString” – retrieves cookies in string format.

Usage examples: 

				
					await adenty.scookie.getString(
"cookieName" 
); 
				
			
				
					adenty.scookie.getString( 
"cookieName" 
).then(result => {console.log(result);}); 

				
			

Params: 

  • cookieName – cookie’s name.  

If “cookieName” is specified, it returns the cookie with that name; if not – it returns a string containing all cookies.

“remove” – deletes a cookie.

Usage examples: 

				
					await adenty.scookie.remove( 
"cookieName",  
“scope” 
);
				
			
				
					adenty.scookie.remove( 
"cookieName",  
“scope” 
).then(() => {console.log("removed");}); 
				
			

Params: 

  • сookieName* – cookie’s name, required 
  • scope specify whether the cookie is set at the current domain level (current site) or shared across all sites within the current SiteGroup. Possible values: “Domain” or “SiteGroup” (values are case-insensitive). The default value is “Domain“. If you try to delete a shared cookie passing scope=domain, an error will occur. 

To remove a cookie on domain level, use the command: 

				
					adenty.scookie.remove( 
"cookieName" 
) ; 
				
			

To remove a shared cookie use: 

				
					adenty.scookie.remove( 
"cookieName", 
 "SiteGroup" 
) ; 
				
			

Adenty storage

Adenty Storage is a combination of fast localStorage (used by default) and secure Server Cookies, providing maximum performance, security and persistence. If Browser storage is blocked or unavailable, Adenty will automatically switch to Server storage and keep functioning, collecting and storing data. 

Adenty storage is available within an object: 

				
					adenty.astorage 
				
			

This object offers a range of methods to manage data: 

get – retrieves a data object by key 

				
					await adenty.astorage.get(key: string)  
				
			

Params: 

  • key – key of the data object 

Returns the cookie with that name. 

getraw – retrieves data object by key in a string format. 

				
					await adenty.astorage.getRaw(key: string)  
				
			

Params: 

  • key – key of the data object 

Returns the cookie with that name. 

set – sets data object by key in object format. 

				
					adenty.astorage.set( 
 	key: string, 
value: any, 
expiration: number = null, 
shouldEncrypt = false, 
addToSync = false 
); 
				
			

Params: 

  • keykey of the data object 
  • valuedata object in object format  
  • expires – expiration period (in minutes) 
  • encrypt – flag, whether data object value should be encrypted on the server (by default false) 
  • sync – flag, whether this data object key should be synced with the Server storage 

setraw – sets data object by key in string format. 

				
					adenty.astorage. setRaw( 
key: string,  
data: string,  
sync = false) 
				
			

Params: 

  • keykey of the data object 
  • datadata object in string format 
  • sync  – flag, whether this data object key should be synced with the Server storage 

remove – deletes a data object by key 

				
					adenty.astorage.remove(key: string)  
				
			

Params: 

  • key – key of the data object 

sync – triggers data Synchronization between Local Storage and Server storage. 

				
					adenty.astorage.sync() 
				
			

Server Cookies / Adenty storage usage recommendations

Adenty server cookie methods are exposing all existing cookie properties keeping visibility and usage logic as before. For better experience string- and object-based methods were exposed, which are functioning equally and can be used as per consumer’s preference. 

We recommend from the first step to initially sync your Browser data with Adenty Server Cookies or Adenty Storage and then keep that in sync on a regular basis for better persistance. 

API Integrations (visitor data enriching)

Adenty allows calling external APIs, enabling real-time data integration. To define API integration conditions, specify the following parameters: 

  • Name* – API name 
  • Vendor Code* – API integration Code (under this Code within Adenty Data layer will be available received data from the API) 
  • Site* – Websites where the API integration will be running.  
  • Active – indicates whether configured API integration will be running on the website. 
  • Preserve Response Data – indicates whether to preserve automatically returned data, providing different storage options: Adenty Storage or Server Cookies (Server Cookies is a server storage for visitor data; Adenty Storage is a combination of Server Cookies and Local Storage for better overall performance)  
  • Type of Request* – Type of the API request (e.g., GET, POST) 
  • URL* – The API URL 
  • Body – API Body JSON object 
  • Headers – API Header JSON 
  • Call Conditions – Conditions when the API will be called. You can choose between frequency-based, data-driven or event-based conditions. 

Response data from all configured APIs will be available within Adenty public object Data layer under appropriate VendorCode.  

Example: 

				
					adenty.dl.{VendorCode} 
				
			

Here data will be available only within a single pageview. To preserve it for longer use Preserve Response Data setting. 

UI Integrations (visitor data actioning)

Adenty helps you interconnect your marketing tools in real time and manage them centrally. To set up a UI integration for a specific tool, specify the following parameters: 

Configuration Tab (defines when and how the tool is injected into the site): 

  • Name* – UI integration name. 
  • Site* – Websites where the UI integration will be running. 
  • Active – indicating whether UI integration will be running on the selected website(s). 
  • Inject script into the site – Disabled by default. If enabled, allows for entering a script to be executed. If no script is injected, UI integration is used for orchestration of a tool that already runs on the site(s). 
  • Script – Field for entering the script to be executed as part of the UI integration. 
  • Inject method – Method used for executing the script while injection. 
  • Inject conditions – Conditions when UI integration will be executed on the website. You can choose between frequency-based, data-driven, or event-based conditions. 

Orchestration Tab (configures the reactions of injected tool on events happened on the site): 

  • Listen to events – Event(s) that trigger reactions of the tool. Events can be chosen from the configured Custom events list or entered custom value. 
  • React on – Script to be executed as a reaction, optional. If no script is entered, it is expected that reaction behavior is implemented within the product and triggered automatically when listened Event fires 

Adenty Launch Frequency

You can choose how often Adenty plugin will run (and bill subscription) by configuring the Verification Frequency setting in the Admin. This option is available in the Client Settings → Identity tab.  

Available options: 

  • Per Pageview — the plugin runs every page load 
  • Per Session — the plugin runs once per visitor session 
  • Per Day — the plugin runs once per day 

Default behavior: 

  • For all Pro plans, the default setting is Per Pageview. 
  • For all the rest the default one is Per Session. 

Running per Session or Day is not recommended if the goal is to gather accurate analytics or execute actions (react) on every pageview or on the frequently changing visitor data. 

Running per Session is recommended if the goal is to recognize anonymous visitors only. 

Share your feedback

We value your opinion! Please, share your feedback on using Adenty as well as your questions and proposals to improve.

Any questions?

    First name
    Last name
    Email
    Description