Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
In order to bring you greater control over how AB Tasty is loaded, AB Tasty offers a Domain Delegation feature, allowing you to host the tag on your own private domain.
This setup is entirely managed through the AB Tasty interface with minimal tech support required.
Brand consistency: Serve the AB Tasty tag from your own subdomain (e.g., tasty.yourdomain.com) for a seamless brand experience.
Improved trust: Some browsers or extensions block third-party domains. Hosting the tag under your domain helps reduce that risk.
Better performance & compatibility: Delegating the tag can help with faster loading, fewer tracking issues, and improved site reliability.
Future-proofing: This approach prepares your setup for stricter browser privacy policies and third-party cookie restrictions. This feature is especially useful for companies with strong security requirements, regulated environments, or those looking to optimize data collection continuity.
To start using this feature, please read
The AB Tasty tag is a lightweight JavaScript snippet that you add to your website to enable all AB Tasty features, including campaign delivery, targeting, and analytics.
The tag is designed for speed and efficiency: it loads essential resources dynamically, ensuring only what’s needed is downloaded, which helps keep your site fast and responsive.
The tag is compatible with all major frameworks (React, Angular, Vue.js) and works on both traditional and single-page applications.
It supports advanced features like deferred campaign loading, visitor ID management, and seamless integration with your site’s consent and privacy requirements.
Curious about best practices, technical details, or troubleshooting?
Check out our articles on tag implementation to make the most of your AB Tasty experience
AB Tasty recommends in code, synchronous, AB Tasty hosted implementation. (Read our step by step tutorial ). But some other methods are available to comply with all specific cases.
The generic tag comes in two versions: synchronous and asynchronous.
You will find the synchronous version, as well as the asynchronous version in the Generic Tag page.
Tag performance refers to the impact of the AB Tasty JavaScript tag on your website’s speed, user experience, and technical metrics (like page load time, Core Web Vitals, etc.). The tag is responsible for loading and executing experiments, personalizations, and tracking events on your site.
You will find : it's useful to understand your tag's weight and find ways to improve it (custom recommendations regarding your specific activities).
For more information about the performance center and guidelines, please refer to the following articles:
The AB Tasty Tag is a lightweight JavaScript snippet that enables dynamic experimentation, personalization, and data tracking across your website. It acts as the entry point for all AB Tasty features, ensuring experiments are delivered efficiently and data is collected reliably.
The Tag is used for client-side web experimentation and personalizations:
Display A/B tests and personalization campaigns
The tag will use the listed domain-s to set the tracking cookie.
If you have set your domain as `website.com`, the cookie will be set to `.website.com`.
However, if you have set your domain as `www.website.com`, the cookie will be set to `.www.website.com`.
The tag is always using the widest possible domain. If you have set `order.website.com` and `website.com`, the cookie will be set on `.website.com`. Specify the subdomain is of any use in this situation and you can remove it.
Cookies are shared following the descending tree domain, but not the other way around! In other words, cookies set on `.domain.com` will be shared with `.subdomain.domain.com` but cookies set on `.subdomain.domain.com` won't be shared with `.domain.com`.
Keep that in mind when setting up your domain and ensure this won't cause tracking issues.
This guide reviews AB Tasty's integration options, detailing their pros and cons to aid businesses in selecting the ideal method.
Whether opting for direct HTML integration's control, the flexibility of a Tag Management System, or the ease of Shopify integration, choosing the right method is crucial to digital strategy success.
The generic tag comes in two versions: synchronous and asynchronous.
In synchronous mode, your website’s code scripts will load one after the other. A script can only be loaded if the previous one has finished loading. If a script is blocked, it will stop the script after it from loading.
Collect behavioral and performance data
Integrate with your analytics or consent management tools
The tag fetch configuration and experience data. Once initialized, it can apply variations, record metrics, and send events in real time.
website.com
No
The cookie will be set on .website.com
order.website.com website.com
No
The cookie will be set on .website.com. You should remove the subdomain as it is already included in the domain.
Visitors will be tracked along all subdomains.
order.website.com www.website.com
Yes
The cookie will be set either on order or on www, depending on where it is currently executed. A visitor on order won't be recognized on www.
We strongly advise you to make sure this is what you want.
website.com other-website.com
No
Cookie will be set depending on the domain it is currently executed.
We recommend using the synchronous tag for AB Tasty. To know more, read the article Choose between Synchronous and Asynchronous method.
AB Tasty provides 3 different implementation methods you can choose depending on your skills and stack.
We recommend in code implementation. To know more about the method and choose the one corresponding to your needs, read the article Choose your implementation methods.
This is the by default procedure.
For a step by step procedure, please refer to AB Tasty hosted tag implementation article
This feature is especially useful for companies with strong security requirements, regulated environments, or those looking to optimize data collection continuity.
To know more about it please read our tag domain delegation presentation article. For a step-by-step procedure, please refer to Tag domain delegation implementation article
No technical deployment required
Easy to maintain and modify
Compatible with other tags/marketing software
Perfect for marketing or product teams autonomy
Dependency on GTM (and its proper functioning)
Slight latency when executing the tag (might trigger a flickering effect)
May be blocked by certain security configurations (CSP)
Integration via Shopify (AB Tasty app)
Simplified integration, no technical intervention required
Automated and guided via the Shopify interface
Quick to set up for e-merchants
Less control over the precise loading of the tag
Limited by Shopify's capabilities
Less flexible for advanced configurations (SPA, CMP, etc.)
Direct integration into HTML code
✅ Recommended by AB Tasty
Total control over tag placement
Faster loading possible (if placed at the top of the page)
No external dependencies (GTM, CMS)
Requires access to source code
Risk of error if poorly integrated
Integration via Tag Management System (like Google Tag Manager)
On the other hand, in asynchronous mode, the different calls to the scripts will be made at the same time. All the scripts will load at the same time. In this case, if a script hangs up, it will not stop the other scripts from loading.
The disadvantage of an asynchronous tag is that the screen may seem to flicker if the modifications are applied after the website loads.
In most cases, we recommend using the synchronous tag for AB Tasty. If the tag is placed in your website’s </head> tag, you will be sure that your modifications will be applied immediately, before the website loads. This will avoid the flickering effect and will offer an optimal user experience.

What is the AB Tasty Tag?
Understand Tag specifications
Understand implementations methods
Choose your implementation according to your specific needs
Implement AB Tasty Tag
Step-by-Step tutorials for each use case
AB Tasty tag compilation
Learn more about this mandatory step for every succesful campaign launch
Going further with the tag
Section dedicated to advanced users.





This document provides detailed information on the compatibility of various modules and scripting tags, ensuring you can make the most of AB Tasty's capabilities on supported browsers and platforms.
Dashboard
Editor
Reporting
AB Tasty users (you)
✅ The two latest major versions of Chrome and Firefox
❌ Safari, Internet Explorer, Microsoft Edge, and Opera are not supported.
JavaScript tag on your website
Your visitors
✅ All your campaigns will be displayed on browsers that represent more than 0.5% of the current market share
❌ Not compatible with any versions of Internet Explorer or opera Mini Babel rule:
Technical details about tracking can be found in the developer portal.
By default and simply by implementing it on your website, our tag is designed to collect browsing data about your visitors. There are four main categories of automated hits:
Campaign
Pageview
dataLayer
Batch
Each time a campaign is seen by the visitor, a campaign hit is sent with the corresponding campaign ID/variation ID pair. One hit is sent per campaign.
Each time a campaign hit is sent, the analytics integration settings are triggered.
Each time a campaign hit is sent, a corresponding JS event is sent. You can for advanced integration.
Every time the visitor visits a page, this hit is sent with all the details about the visited page.
If you have configured a data layer integration, then a hit will be sent once per session with all the available data layer keys.
To reduce its global footprint and increase performance, our tag sends the information in batches when they are triggered close to each other. When a batch hit is sent, you can find the usual details about each type of hit directly into the h parameter of the payload.
With a standard usage of AB Tasty, you should not be needed to implement any of these hits by yourself.
You can send any event to the collection pipeline. This EVENT type of hit is built according to the following pattern: category/action/label/value.
You are free to set the value of your choice in the event category. However, if you want the event to be used in the reporting as a goal or a filter, it must be set as Action Tracking.
The action is the name of your event as it will be displayed in the goals section, the reporting, or the filters.
A label enables adding text to the hit.
A value enables adding value to the hit.
An EVENT hit must be sent using the following format:
For further information, please refer to this .
You can also use the following method if you only need to send the action (name of a goal).
To make your AB Tasty tag work, you must set the authorized domain in your account settings.
The tag will only run on this domain. If someone copies your tag to another domain, it won’t work.
One domain per account ensures a faster and lighter tag execution and reporting
Enter the part of your site before the first slash ("/") and after any subdomains. Example: For www.my-website.com/fr, enter my-website.com.
The supports two hosting methods:
AB Tasty Hosted – Default
AB Tasty Delegated

Optimize experiments by showing one per visitor. Learn how to activate the option and discover the prioritization rules.
Suppose you are running several experiments at once on your site or application. In that case, a visitor will see each of them as soon as they enter the targeting, which may influence the results, since one experiment can impact the results of another.
To avoid this, we offer an option that allows you to display only one experiment per visitor, even if multiple experiments are running.
Learn more about this option (activation and prioritization rules) in our dedicated articles:
👉 1 visitor 1 test for Web experimentation
If you activate it while you have active experiments, it might create biases in your campaign results. We advise you to end all pending tests before enabling the option and launching new ones.
Activating this option while conducting two experiments (one on your home page and another on the cart page) impacts traffic distribution. Visitors who view the home page before the cart will only experience the home page experiment, reducing traffic allocation for the cart experiment. Consequently, gathering adequate statistics for experiments on deeper pages (like product pages or conversion funnels) will take longer.
This feature is in the early adoption phase. To benefit from it, please get in touch with your CSM.
window.abtasty.send("event", {
ec: "Action Tracking",
ea: "Click on CTA",
el: "CTA on product page",
ev: 1
});ABTastyClickTracking({{action}}, null);When implementing tags, it's possible to restrict their execution to specific subdomains. This ensures that tags will only function on designated subdomains and not on others.
To know more, read the article dedicated to subdomain management.
On the Implement the AB Tasty Tag field, select Standard.
Copy the AB Tasty tag script from the platform.
Choose between the Synchronous and Asynchronous method and paste the dedicated tag only.
Read more about Synchronous and Asynchronous methods in our dedicated article.
Paste it into the <head> of your HTML, as early as possible.
Save and deploy changes.
To finalize, on the Tag Implementation Page, click I’m done
Open your website and check that the tag is loading
For verification, use AB Tasty Chrome extension: if the Tag is correctly implemented, the Chrome extension displays Tag version and weight.
For More QA Methods or resolution, read our QA and Validate Your AB Tasty Tag article.

example.com
yes
The tag will execute on example.com and all its subdomains.
sub.example.com
yes
The tag will only execute on sub.example.com and corresponding subdomains (eg. eshop.sub.example.com).
www.example.com
yes
The tag will execute on only, excluding all others subdomains.
https://example.com
no
You must not input the protocol (http.s).
For a quicker tutorial read Set-up the AB Tasty Tag in 5 minutes.
To know how to select a domain and check your implementation, please read the full procedure on How to implement Generic Tag.
To choose between the hosting methods, read: Understand Tag Domain Delegation
Make sure your domain is selected.
Make sure the current configuration block displays " Implementation method: Standard".
To copy the content of the synchronous tag code, click on the Copy to clipboard icon.
Open your website code.
Paste the synchronous tag code between the </head> tags of your pages.
Go back to The .
Click on Check your tag implementation to test your tag implementation.
For further verification, refer to our QA and validate the Generic Tag article.
You can inject our tag using any Tag Management System (TMS). Ensure you follow best practices to prevent flickering:
Choose Synchronous Tag
Paste it within the <head> section.
Warning:
Google Tag Manager (GTM): GTM may not support these guidelines. Their documentation advises against using GTM for A/B Testing tags.
Alternative Approaches: You may choose to place the AB Tasty tag in the <body>, set it as async, or defer it manually. Be aware this might cause flickering. Understand your visitors’ browser resource-loading mechanisms to evaluate when the tag will execute and how it affects targeting and business rules.
Cross-domain tracking helps you follow the user in the case when one or more pages are hosted on a different domain name than the original one. Cross-domain tracking is necessary when a website has a page (payment confirmation, for example) that redirects the user to an external domain. To set-up a cross-domain tracking, go on this on the settings.
You can add a URL pattern as a setting for pages hosted on other domains. Then, click Add and validate your modification.
When our tag is running on a website, it offers a set of variables, constants, functions, and methods you can use to interact with it.
Everything is hosted under the window.ABTasty object. Here are the most convenient ones you might need:
In this object, you will find all the tests that are currently active on your accounts. It displays more information than you would usually need for standard usage but this is convenient to have if you need to dig into your tests.
This object is a simplified version of the ABTasty.accountData.tests object. It will display your active tests with a focus on their current status. Are they running? If not, why have they been rejected? This is the most common object you might use to debug and QA your tests.
This object will display tests that are currently running on the page.
This object will return the visitor ID for the current visitor.
This object will return the campaign history for the current visitor. The campaign history is all the campaignID/variationID pairs that the visitor is currently assigned to.
This object will contain all the settings of the account running on the website. It is convenient to get the identifier, the account name, or various settings, such as framework version or storage mode.
This article explains how to activate/deactivate the 1 visitor 1 test feature in Web experimentation campaigns and the prioritization mechanism.
is a JavaScript library. The purpose of jQuery is to make it much easier to use JavaScript on your website. jQuery takes a lot of common tasks that require many lines of JavaScript code to accomplish, and wraps them into methods that you can call with a single line of code.
AB Tasty offers 3 options for configuring jQuery loading.
Follow the steps below to configure jQuery loading:
Go to Settings > Framework
Access the Load jQuery section
Click on your profile icon to the top right of the screen to access your profile settings.
This page is divided into two main sections:
User Information: Displays the user's profile picture, name, and email. The first and last name fields are editable. The profile picture can be updated, while the email is displayed as read-only.
This section covers a range of advanced use cases and custom setups to help you tailor AB Tasty to your specific technical environment. From custom integrations to advanced tagging and optimization methods, these guides are designed for developers and technical users looking to go beyond standard implementation. Each article provides step-by-step instructions to ensure smooth and effective configuration.
Configure your Organization settings, including users and subscription.
Here is a list of Organization settings:
A Google Tag Manager account (free)
AB Tasty platform access
Published AB Tasty campaign (optional, for validation)
Copy your AB Tasty tag.
Go to the Tag implementation page.
Enter a Domain.
On the Implement the AB Tasty Tag field, select Standard.
Copy the AB Tasty Synchronous tag script from the platform
Log in to your GTM account.
Click Tag Configuration
Select Custom HTML
Paste your AB Tasty tag script into the HTML field.
To apply the AB Tasty Tag on all your website's pages, create a Rule
Select Choose from existing rules
Select All Pages.
Click Save.
If you use Google Tag Manager to apply the Google Analytics or Universal Analytics tag and link the data of your AB Tasty tests:
In the Advanced configuration section, check the Tracker Name option
Leave the corresponding field blank
In the GTM workspace, click Submit.
Add a version name (e.g., "Add AB Tasty tag") and publish your container.
Select 1 visitor 1 test option
Check the toggle to enable it.
If you toggle on: a visitor will see only one experiment at a time.
If you toggle off: a visitor can see more than one experiment.
The tag evaluates eligible campaigns in ascending numerical order of their IDs.
The first campaign where the visitor matches all targeting conditions is the one they are assigned to.
There is no additional prioritization logic beyond this ID order.
Suppose the visitor falls into untracked traffic for the first eligible campaign (i.e., not assigned due to traffic allocation). In that case, they may still be assigned to the next eligible campaign in the list.
This mechanism works the same way on desktop and mobile browsers, as long as cookies are enabled.
User Preferences: Allows the user to set the language used throughout the interface via a dropdown selector.
All changes made on this page affect only the current user's experience and do not impact account-level configurations.
The Login Management & Security page allows you to configure and monitor authentication methods for accessing the AB Tasty platform securely. This page is divided into the following sections:
At the top of the page, you can view a summary of their profile security. When no actions are required, the system confirms the profile is secure. A link is provided to learn more about profile protection best practices.
This section shows the methods available for signing into the platform:
Password: You can set or reset their password here.
Google Login: If connected, you can use their Google account for faster login. A warning is displayed indicating that disconnecting a Google account requires setting a password first.
Multi-Factor Authentication (MFA)
This section enhances account security by requiring an additional verification method at login:
Authenticator App: Enables the use of an external app (e.g., Google Authenticator) to generate time-based security codes.
Backup Codes: Displays how many one-time-use backup codes are available. These codes can be used if the authenticator app is unavailable. New sets can be generated anytime.
The Notifications page enables you to configure email alerts related to campaign activities and tag performance in AB Tasty. This helps you stay informed about key events that may impact business performance or require attention.
1. Campaign-related Events
You can receive email notifications for important changes occurring within their campaigns:
Status change of a scheduled campaign Get notified when a scheduled campaign is automatically launched or paused.
Under-performing variation detected by Sequential testing alerts Get notified when a live test identifies a variation that is underperforming.
Each notification option includes a toggle to enable or disable email alerts.
2. Tag and Performance
You can subscribe to notifications related to AB Tasty tag updates:
Tag changelog Receive email alerts when there is a tag release, as listed on the changelog page.
example.com/en_GB
no
You must not input the path (/xxx)




Please find more in these two articles from our developers portal:
ABTasty.accountData.testsABTasty.resultsABTasty.getTestsOnPage()Since cross-domain tracking is relying on third-party cookies to operate, the feature will no longer work on browsers or environment that don't support these cookies anymore. It can be the browser type (Safari or Firefox), specific settings, the use of extensions or any other external element that might block third-party cookies. This feature is still supported by Google Chrome for the moment. All visitors that are not using a browser or environment compatible with third-party cookies won't be tracked over domains, even when the feature is properly set up.
If you are using server-side rendering (SSR) on your website, you might need to add a specific implementation for your tag.
In some situations, you might need to ask our tag to wait before applying its modifications. Indeed, with some SSR frameworks, modifying the DOM before the reconciliation has occurred might cause performance or render issues.
You can force our tag to lock its execution until you unlock the tag. To achieve that, you need to declare a variable before injecting our tag:
Once you consider your page to be ready for front-end modifications, you can call the following method to unlock our tag:
For more information, please refer to the complete technical documentation about global methods and variables or our troubleshooting article on cross-domain tracking limitations.

ABTasty.visitor.idABTasty.getCampaignHistory()ABTasty.accountData.accountSettingswindow.lockABTastyTag = true;window.unlockABTasty();Select one of the following options:
Load AB Tasty’s jQuery
Do not use jQuery
Load my jQuery
This option is enabled by default. It enables you to load the AB Tasty jQuery library in addition to any existing library on your website.
This option disables all jQuery libraries on your website.
This option enables you to load only your version of jQuery and disable the AB Tasty library.
This decreases the weight of the AB Tasty script by 30 KB.
This section lists all AB Tasty products to which you have subscribed and gives you the possibility to subscribe to others by getting in touch with your Account Manager.
You can find a list of all services from AB Tasty in the services section. Choose any service and contact your Success manager directly from the list.


To use AB Tasty on your website, you need to install our tag on your website. The generic tag will allow you to apply the JavaScript layer for your page modifications. For more information about tags, please refer to our article What is AB Tasty Tag?.
The Tag Implementation Page supports two hosting methods:
AB Tasty Delegated (to know more about it please read our tag domain delegation presentation article)
Follow these steps to implement the Tag:
Specifying a domain for your account is mandatory. We recommend to manage one account per domain for performance reasons.
Domain : Your domain is everything that goes before the first slash (the path) and after the potential subdomains. Hence, if you have implemented your tag on , then the domain you need to set here is "my-website.com".
These are our recommendations for a good implementation:
Prefer the synchronous tag version
Prefer a direct implementation vs a custom implementation (with a TMS for exemple)
The tag should be placed in your website’s </head> tag, this way you will be sure that your modifications will be applied immediately, before the website loads. This will avoid the flickering effect and will offer an optimal user experience
To follow your tag performance though time, you can access the in the AB Tasty platform and read this article about .
To support users hosting their commercial websites on Shopify, AB Tasty offers two integration methods:
AB Tasty provides a native app available on the Shopify Marketplace, offering a seamless integration experience.
Automated Tag Installation
All standard Event Tracking
Transaction Data Retrieval
Checkout on Subdomains fully supported
Available for All Shopify Plan : Premium / Plus
You want to follow Shopify transactional events during the campaign.
You want to retrieve extended transactional data such as payment info & Cart events
You don’t want to install AB Tasty Tag on Shopify
You are using a subdomain for checkout
To know how to use our app, please read article.
To learn more about the functionalities, please read.
For users with non-native Shopify setups, a custom integration may be more suitable.
You have a non-standard Shopify implementation.
You can manage the AB Tasty tag injection manually.
You only need to retrieve transaction data on a checkout domain or subdomain.
To know how to configure a Custom Pixel in Shopify, please check article.
Before launching any campaigns, it’s important to validate that the AB Tasty tag is properly implemented and functioning across your website.
Here is a short summary of the availables methods:
AB Tasty Chrome Extension
Quick graphical check
Tag version displayed in plugin interface
Console (Console + Network)
Confirm AB Tasty object and network requests
ABTasty object available; requests via try.abtasty.com
Please refer to our dedicated FAQ:
A Single Page Application (SPA) is a type of website that interacts with the user by dynamically rewriting the current page rather than loading entire new pages from the server.
Good to know 💡
AB Tasty is running on a native Vanilla TypeScript framework. Our tag is compatible with a lot of modern JS frameworks, including React, Angular, Vue, Meteor or Ember. The tag is unique for all environments and doesn’t require any additional implementation. To improve its behavior on server-side rendering (SSR) frameworks, an additional step might be needed to delay the application of the modifications.
You can add your own JavaScript code. All variations created in our Visual Editor using one of the WYSIWYG features will generate an ES2020 compatible script that will be executed on client-side.
You can also add your own JavaScript code using the Code Editor or the “Add JavaScript” option of the Visual Editor. In this case, the code won’t be transpiled into another language. For example, an ES7 script might not be working on older browsers. It’s therefore your responsibility to manage the compatibility of your own code when adding custom JavaScript.
The modifications you make in your campaigns are stored into a JS object that will be read and executed on client-side. When a modification targets an existing HTML element, the original one isn’t modified. It is cloned and this clone is modified and then displayed by AB Tasty. Each time the URL changes, the tag checks the targeting criteria to know whether the modifications still need to be applied. If they don’t, the original content is displayed. For CSS additions, we inject custom CSS in the head section of the webpage, using the “!important” tag in order to add and/or override styles.
In addition to that, our tag adds and listens to a Mutation Observer on the whole DOM. Each time a DOM modification is detected and relevant to us, the tag quickly re-applies its changes. A DOM modification is a change in an HTML element regarding its style or structure. We use the window.requestAnimationFrame() feature in the browser in order to interweave our modifications between two versions. With a high refresh rate of 60 times per second, the changes are applied before the human eye can see it, thereby avoiding any flickering effect.
The option of the settings is enabled by default and automatically detects a URL change and reinitialize the AB Tasty framework as if the page had been reloaded. If the page’s status changes while this option is turned enabled, the changes made will be reapplied.
When the webpage is rendered on server-side and hydrated on client-side, there might be a conflict if AB Tasty’s changes are applied before the page is fully loaded. We recommend implementing a delay in our tag’s execution and only trigger it when the page is ready.
We provide a that consists of two parts:
Adding the ̀window.lockABTastyTag` which will tell the tag not to apply the modifications. It needs to be set as soon as possible and before calling the AB Tasty tag.
Triggering the `window.unlockABTasty()` method provided by the tag itself. This will resume the execution and display the campaigns. It as to be called when you consider the website to be ready.
The AB Tasty Shopify app (Web pixel) is one of the two options we have build to help you integrate AB TAsty in your Shopify workflows. To know more about the two options and decide which one you should use, please refer to the AB Tasty integration with Shopify article.
The AB Tasty extension for Shopify lets you implement the generic AB Tasty tag in your website, using your Shopify admin.
You must be an AB Tasty customer to use the extension. You will need your AB Tasty identifier (the ID of your tag) to complete the installation.
The first step is to install the AB Tasty extension in your Shopify admin.
You can either go directly to the AB Tasty extension using the following link here or search for it in the by typing “AB Tasty”.
Once you find the extension, follow the following steps:
Click Install
Follow the installation procedure by accepting the set-up
Now that the AB Tasty extension is installed, you need to link it to your AB Tasty account.
To link your account, follow the steps below:
Click on the Configure App button.
Add your AB Tasty identifier (ID of your tag).
The identifier can be found in your AB Tasty account, in the .
In section 2 of the page, you can directly copy your AB Tasty account identifier in the clipboard.
Once done, paste it in the Shopify app field.
(Optional) In the Advanced options section, you can choose to load the Tag Synchronously or Asynchronously and to track on a subdomain. Read to know more.
Click Save.
For performance reasons, Shopify recommends using the asynchronous tag : in this case, scripts load simultaneously, which can improve page load speed but may cause flickering as modifications are applied after the page loads. If you encounter flickering effects on your website, you can use the synchronous mode. In this case, scripts are loaded in order, minimizing flickering effects by applying modifications before the website loads.
Your AB Tasty tag is now implemented on your Shopify e-commerce website. All the standard Event Trackers are immediately created in your account, ready to be used in your next campaigns.
To ensure that your generic tag is correctly implemented, create an A/B test campaign from the AB Tasty interface. You can then add click trackings that you have selected in the "goals" step, and that you target on all your pages, on all your traffic, and without any particular trigger conditions.
Launch your campaign, then go to the reporting of the test:
If you see data on your reporting, your tag is correctly set up.
If no data comes up several minutes after the campaign has been launched, please refer to this , or check that the identifier you have entered is the right one.
When implementing tags, it's possible to restrict their execution to specific subdomains. This ensures that tags will only function on designated subdomains and not on others.
Subdomain Restriction Examples
Top domain Execution: If you set the tag to "my-website.com," it will execute on all my-website.com subdomain, including eshop.my-website.com and blog.my-website.com.
Specific Subdomain Execution: Setting the tag to "eshop.my-website.com" will restrict its execution to the "eshop" subdomain. It will not execute on blog.my-website.com.
Execution Behavior
If a tag is implemented on a domain not listed, it will not execute on any unlisted domains or excluded subdomains. This ensures no unintended effects on those domains.
If one or several URL might contain sensitive data as a URL parameter, you can tell the tag to avoid collecting it.
Go to the sensitive data page
Set the parameter you want the tag to ignore
for example, input email if you want to remove an email from this sample URL: https://www.mywebsite.com/[email protected] .
You can add as many parameters as you need
Go to the
Set the required regular expression that the tag needs to evaluate to ignore a URL parameter
for example, to define the URL https://example.com/url-part-to-hide/other-part, enter the following expression (https?://example.com/).*?(/other-part)
Compiling your AB Tasty tag enables you to push the modifications you have made to your AB Tasty campaigns (since the previous update) on your website. The tag is updated automatically when you change the status of a campaign but you can also ‘force’ compilation by clicking the tag button in the header of the platform.
The tag compilation process includes 4 major steps. When the tag is being refreshed, you will be able to follow its progress via an animated tooltip.
For many reasons, in particular to see if AB Tasty can cause errors on your website, you can deactivate AB Tasty on your website, meaning emptying the AB Tasty script.
Performing this action deletes the content of the JavaScript file that is normally called to apply the modifications. The AB Tasty tag will still be present on your website, but the file it calls is empty of any JavaScript instructions. Therefore, it cannot cause any errors on your website.
If errors persist on your website after you have emptied the AB Tasty script, you can eliminate AB Tasty from your investigations and look for other sources of errors.
To empty the AB Tasty library, apply the following steps:
This article explains how to activate/deactivate the 1 visitor 1 test feature in FE&R campaigns and the prioritization mechanism.
Prerequisites: This option is available if you have implemented the Decision API or are using an SDK in DECISION API mode.
To learn more about it check our and our .
There are different methods and levels to adding JavaScript code on AB Tasty. Select one depending on the scope you need from the JavaScript code. In most cases, you can add JavaScript code in both the visual editor and the code editor.
The various JavaScript codes are executed in the following order:
Account JavaScript
Campaign JavaScript
Element JavaScript
The AB Tasty tag enables you to inject JavaScript code into your website. This code can be used to track conversions or to send data to AB Tasty. The aim is to obtain additional information on a test.
At times, you may need to add a JavaScript snippet on all the pages where the AB Tasty tag is present. This could be for different reasons, such as to use it as an analytics catalyst, to add a custom script to be executed on all pages, to connect with third-party tools, or to add a quick patch.
Using global code is useful if you want to track certain events systematically in all your future campaigns, for example:
Custom tracking (scroll on a specific page, video fully viewed, etc.)
Global tracking
Flag visitors with specific information: cookies, storage variables, etc. (to filter a report or target a new campaign, for example)
Targeting campaigns by events (to start campaigns manually)
Transaction tag implementation
In order to fine-tune when your custom JavaScript is executed within your campaigns, you have the option to choose between two options: when the DOM is ready or before.
When a webpage is loaded, the browser goes through the process of reading the code and creating a representation of the page called the Document Object Model (DOM). The DOM-ready point is when the browser has finished this process and the page is fully loaded and ready to be interacted with.
It makes sure that the page is ready to be used and that all elements can be accessed before the code is executed.
This option can be set up on a campaign level or globally in your account. By default, the JavaScript code is set to execute when the DOM is ready, but if you have controls in place and you want to avoid flickering, you can choose to execute the code before the DOM is ready. This feature is available for you to use and you can access it in your advanced setting in the "Javascript Execution" subsection.
By default, the custom campaign JavaScript (JS) will be executed when the DOM is ready. This is because the custom JS may interact with elements of the DOM that may not be present before the document fully loads. It is safer to execute the JS only when there is the highest chance of reaching the targeted element, otherwise, the campaign may not be displayed. However, this can result in a potential and avoidable delay in the application of the campaign. Since the controls for checking the presence of a DOM element can be fully developed within the custom JavaScript, AB Tasty allows you to change the default JS execution behavior for one campaign or for all upcoming campaigns. This enables the execution of the custom JavaScript before the DOM is ready.
Heads up ⚡️
Configuring the execution of the campaign JavaScript before DOM-Ready does not mean that the JavaScript will systematically be executed before DOM-Ready. Indeed, there are many reasons why the AB Tasty tag should be executed after DOM-Ready (bad implementation, network problems, asynchronous targeting…).
You may not want to wait for a specific element to exist on the page before you execute your JavaScript. That’s where Element JS shines.
A JavaScript code can also be triggered when an element is present in the DOM. This means the JavaScript code related to that element will run before DOM-ready (before Window: DOMContentLoaded). In this case, the JavaScript code will be executed at the same time as the variation JavaScript but will only be triggered if the selector is pointing to an element present in the DOM.
In this way, you can use Element JavaScript to execute all the JavaScript code of a variation, but only if a specified element exists.
Multi-environment Compatibility (Web experimentation & FE&R, Reco&Merch API)





You can't save a domain that is not valid. Common mistakes are including a slash (/) or the protocol (https://).
Subdomain
When implementing tags, it's possible to restrict their execution to specific subdomains. This ensures that tags will only function on designated subdomains and not on others.
Subdomain Restriction Examples
Root Domain Execution: If you set the tag to "www.my-website.com," it will only execute on the root domain.
Specific Subdomain Execution: Setting the tag to "eshop.my-website.com" will restrict its execution to the "eshop" subdomain.
Warning
Execution Behavior
If a tag is implemented on a domain not listed, it will not execute on any unlisted domains or excluded subdomains. This ensures no unintended effects on those domains.
For further details, refer to our comprehensive article about tags.
No data is lost; your settings are preserved.
Changing a delegated subdomain restarts the delegation flow.
Switching from Delegated to Hosted requires a confirmation.
For mor information refers to Understand Tag Domain Delegation
The generic tag comes in two versions: synchronous and asynchronous. We recommend synchronous implementation. For more information, refer to Choose Between Synchronous and Asynchronous methods
This is the by default procedure.
For a step by step procedure, please refer Set-up the AB Tasty Tag in 5 minutes.
This feature is especially useful for companies with strong security requirements, regulated environments, or those looking to optimize data collection continuity.
To know more about it please read our tag domain delegation presentation article. For a step by step procedure, please refer to Tag domain delegation implementation article
To follow your tag performance though time, you can access the performance center in the AB Tasty platform and read this article about perfomance guidelines.
Click Tag Configuration
Select Custom HTML tag type
Add <script></script> tags
Paste the between the <script> tags
Replace all placeholder values based on your data layer variables configuration.
Make sure you have applied the appropriate format to your values, as described in t
If you want to collect data at Item level
Add the dedicated template from
Match the variables according to the data layer
Once the script is done, select your triggering:
Click on the Triggering area
In the opening menu, select the purchase event as a trigger: event equals purchase
Optionnal: add a Blocker if the consent is not granted for AB TAsty cookies.
Click Save.
To QA
Click Preview.
Go to your website’s order confirmation (thank you) page.
Open your browser’s Developer Tools (usually F12).
Go to the Network tab.
Place a test order (or simulate one if possible).
Look for a request to ariane.abtasty.com—this is the endpoint where transaction data is sent.
Check the request payload for transaction details (transaction ID, amount, items, etc.)
Do not use jQuery
Load my jQuery
This option is enabled by default. It enables you to load the AB Tasty jQuery library in addition to any existing library on your website.
This option disables all jQuery libraries on your website.
This option enables you to load only your version of jQuery and disable the AB Tasty library.
This decreases the weight of the AB Tasty script by 30 kB compared to loading AB Tasty's jQuery.
By default, our tag will continue looking for the URL of the current page. If the URL is modified, then it will trigger a complete reload of the engine. This is useful for handling Single Page Applications.
If you do not need this feature, you can safely disable it in the framework page.
To allow you to see whether AB Tasty causes errors on your website, you can deactivate the tag and empty the script in the framework page.
It deletes the content of the JavaScript file that is normally called to apply the modifications. In other words, the AB Tasty tag is still present on your website, but the file it calls is empty of any JavaScript instructions. Therefore, it cannot cause any errors on your website.
If errors persist on your website after you have emptied the AB Tasty script, you can eliminate AB Tasty from your investigations and look for other sources of errors.
The entire AB Tasty folder is emptied of its content within two minutes.
Emptying the AB Tasty script does not delete the tests from your account; they are just temporarily deactivated. Furthermore, the report data is not deleted either.
Once you have debugged your website, you should restore the AB Tasty script so you can continue to run your tests. To do so, click the warning message at the top of the interface. After a few minutes, AB Tasty will be operational again and your tests will start running.
Step name
Explanation
Step 1
Sending request
AB Tasty has taken your action into account.
Step 2
Processing compilation
All the modifications made to your campaigns are being compiled in a file.
Step 3
Sending to server
The file containing all the modifications is being sent to the AB Tasty server for verification.
Step 4
Publishing modifications
The modifications are being verified and implemented into your website.
The process may take a few seconds to a few minutes. We recommend waiting until compilation is complete before performing any actions on the platform.
The compilation can either succeed or fail. When all steps are completed successfully, the following tooltip is displayed:
In this case, all the modifications you have made in AB Tasty up until now will be in production on your website. If AB Tasty identifies an error on your account or has server issues during one step of the process, the compilation fails. In this case, the modifications made after the last successful update won’t be visible on your website.
If AB Tasty encountered a server issue, the following tooltip will be displayed:
We recommend trying to refresh the tag again and if the problem persists, contacting your dedicated CSM.
If AB Tasty identifies error(s) on your account, you will see the following:
The section displays the list of affected campaign(s) or pages with identified errors for each. AB Tasty suggests solutions to fix the issue.
Different issues can cause these errors, but they are mainly due to incorrect pieces of code in your account or campaigns.
To correct these errors:
Select one error line. Error details are displayed.
Read the description of the errors and the suggested solution.
Click Go to campaign (for a campaign) or Go to page (for a settings page).
Correct or remove the incorrect piece(s) of code.
Repeat the process for all errors and try to refresh your tag again.
Once you have corrected all the identified errors, tag compilation should succeed.

Go to the Framework page.
Go to the Cleat script section and click Clear script.\
Click "Confirm" from the confirmation popin: the tag will automatically resfresh.
Once done, the tag button will take this form, informing you that the script has been emptied.
Heads up ⚡
Emptying the AB Tasty script does not delete the campaigns from your account; they are just temporarily deactivated. The reporting data is not deleted either.
Once you have debugged your website, you must restore the AB Tasty script to continue running your campaigns and using AB Tasty properly. To do so, click the "Rebuild script" button:
from the Framework page (clear script section):
From the test or personalization list.:
The tag will refresh again, and your live campaigns be visible on your website.
This option only affects Experiments (A/B Test). All Personalization and Feature management scenarios will continue to work as expected.
This option is compatible with . Consider that if you put several experiments inside a bucket, your visitors will only see one of those experiments.
If you activate it while you have active experiments, it might create biases in your campaign results. We advise you to end all pending tests before enabling the option and launching new ones.
Activating this option while conducting two experiments (one on your home page and another on the cart page) impacts traffic distribution. Visitors who view the home page before the cart will only experience the home page experiment, reducing traffic allocation for the cart experiment. Consequently, gathering adequate statistics for experiments on deeper pages (like product pages or conversion funnels) will take longer. This delay is exacerbated if combined with the bucket allocation feature.
To enable this option:
Go to User Profile > Feature Experimentation > Feature Experimentation Settings > Environment Settings.
In the Settings section, check the option 1 visitor 1 experiment.
If you check the option: a visitor will see only one experiment at a time.
If you uncheck the option: a visitor can see more than one experiment
The Decision API evaluates which campaigns are eligible for a visitor based on their context keys.
It then sorts the eligible campaigns by creation date, from newest to oldest.
The first campaign in this list is the one returned by the Decision API for that visitor.
There is no additional prioritization logic beyond this order.
If the visitor falls into untracked traffic for the first campaign (i.e., they aren't assigned to it due to traffic allocation), they may still be assigned to the next eligible campaign.
The feature works the same, whatever the application or device, as long as the visitor stays the same.
For more randomized traffic distribution, use the feature.
Source Code inspection
Verify tag presence in page HTML
try.abtasty.com script tag found
Debug mode
Confirm correct domain configuration
No domain errors in AB Tasty logs



The Next tag is our Early Adopter program for the AB Tasty tag. It is a specific and early branch, where we put our latest optimizations and features that have been internally tested and validated but that are awaiting a more global validation (early adopter feedback) before being deployed to all users.
By joining the program, you will be able to test our latest improvements and new features instantly.
In the Framework section of your AB Tasty account, you can see which branch of the tag you are on. We currently have 3 branches running:
Latest: the public and most used branch, referred to as the “default” branch;
Next: the early and advanced branch you are able to test;
Unstable: an experimental and internal branch. On a normal use, you will never see this branch.
If your tag is set on Latest, you are free to join the Next program by clicking Learn more and Join now from the popin. However, you can’t join the program on your own if you are on the Deprecated or Unstable branch.
After joining the Next program, you must refresh your tag to push the modifications live. Otherwise, the changes will be pending.
This feature is in the early adoption phase. To benefit from it, please get in touch with your CSM.
The Tag Implementation Page supports two hosting methods:
AB Tasty Hosted – Default
AB Tasty Delegated
To know how to select a domain and check your implementation, please read the full procedure on .
Some items in your account information are configurable. You can change the account name, configure a time zone, and set a default currency.
These changes can only be carried out if you have administrator rights (admin or super admin role) for the account.
These 3 customizations can be performed from the page Account/ General Information.
You change the name of the account you are one here.
A timezone is a geographic region within which the same standard time is used.
Time zones tend to follow the boundaries between countries and their subdivisions instead of strictly following longitude, because it is convenient for areas in frequent communication to keep the same time.
All time zones are defined as offsets from Coordinated Universal Time (UTC), ranging from UTC−12:00 to UTC+14:00. The offsets are usually a whole number of hours, but a few zones are offset by an additional 30 or 45 minutes, such as in India, South Australia and Nepal.
Some areas of higher latitude use daylight saving time for about half of the year, typically by adding one hour to local time during spring and summer.
AB Tasty is using the IANA database, which is a collaborative compilation of information about the world's , primarily intended for use with computer programs and operating systems.
Each account has to be linked to a timezone. If your website is used in several countries or in a country that use several timezones (such as the United States of America), you’ll still need to select one reference timezone to set-up your account.
The chosen timezone will manage the timestamp for the following main use cases:
Information:
Start date and hour of a campaign - appears in dashboards and reports
Pause date and hour of a campaign - appears in dashboards and reports
The dates and times at which visitors carried out actions on your site are recorded in the reports and displayed as a function of the configured timezone.
Actions:
Scheduled start date and hour of a campaign - appears in dashboards and reports and triggers the campaign start action
Scheduled pause date and hour of a campaign - appears in dashboards and reports and triggers the campaign stop action
In general, all the timestamps which are available and displayed into the platform are based on the offset of the selected timezone.
You need to select your chosen timezone in the dropdown and it will immediately become your the default timezone of your account.
You may choose the currency in which you transactions will be displayed in the reports of the campaigns. Make a selection among all the currencies available.
The Visitor Identity Management page allows you to choose how you want to manage the visitor ID. The options are:
Use AB Tasty’s visitor ID management system
Manage the visitor ID on your side (BYOID)
The Bring your own ID (BYOID) option allows you to manage the visitor ID yourself instead of using AB Tasty visitors ID management system.
When you activate BYOID, you will be responsible for generating the visitor ID, storing the visitor ID in a first-party cookie, a JavaScript variable, or local storage, and retrieving the visitor ID from the storage location. You will also be responsible for sharing the visitor ID with AB Tasty so that AB Tasty can track the visitor’s behavior on the website and personalize the website for the visitor.
To activate BYOID, select Manage the visitor ID on your side (BYOID)
Once activated, you can select the three options to manage the visitor ID: - Cookie - JavaScript variable - Local storage
You can select this option if you decided to store the visitor IDs in a cookie. In this case, set the cookie name and a pattern to extract the ID from the cookie. Note that you must create the cookie beforehand.
You can select this option if you decided to store the visitor IDs in a JavaScript variable. In this case, specify the JavaScript variable name which contains the ID.
You can select this option if you decided to store the visitor IDs in the local storage. In this case, specify the local storage variable name and pattern to extract the ID from the local storage.
The migration mode allows you to either use the existing visitor ID until AB Tasty’s cookie expires or immediately switch from AB Tasty’s visitor ID management system to your own ID management.
Select Toggle ON to keep the existing visitor ID until AB Tasty’s cookie expire.
Select Toggle OFF to switch to delete all existing visitor ID and switch to BYOID immediately.
We recommend using toggle off to start a fresh visitor ID tracking.
The enables to execute different types of JavaScript files on the website.
To learn more about of these kinds of JavaScript files, please refer to the .
There are different methods and levels to adding JavaScript code on AB Tasty. Select one depending on the scope you need from the JavaScript code. In most cases, you can add JavaScript code in both the visual editor and the code editor.
The various JavaScript codes are executed in the following order:
Account JavaScript
Campaign JavaScript
Once the is implemented on your website, you need to run it through the QA process. This will ensure that for each purchase, the information is correctly collected by the AB Tasty tag and that the transaction goal is visible on the goal configuration page.
If the transaction tag has been implemented properly, the data should be displayed after a few moment in the report. Otherwise, it means that it has not been installed the right way, and you need to review the code using . The transaction data is not retroactive and available only when the transaction tag has been implemented
There are three different ways to verify the transaction data collection:
with the QA Assistant,
with the console’s Network
In order to fine-tune when your custom JavaScript is executed within your campaigns, you have the option to choose between two options: when the DOM is ready or before.
When a webpage is loaded, the browser goes through the process of reading the code and creating a representation of the page called the Document Object Model (DOM). The DOM-ready point is when the browser has finished this process and the page is fully loaded and ready to be interacted with.
It makes sure that the page is ready to be used and that all elements can be accessed before the code is executed.
This option can be set up:
For security reasons, your company may choose to use single sign-on (SSO). This is a unique authentication system that enables you to connect to several platforms using the same email address and password.
AB Tasty lets you implement SSO through SAML 2.0, an open-standard data format for exchanging authentication and authorization information. AB Tasty’s SSO feature allows you to secure your workspace and control your users’ access. All your team members can log in to AB Tasty using one set of sign-in credentials from existing authentication providers. SSO is an email-level feature that will apply across all projects and experiments.
When you use SSO, our platform automatically links AB Tasty to your professional portal.
This section will help you create a SAML integration and get a metadata.xml file from your SSO Identity Provider Microsoft Entra ID.
If your organisation uses Microsoft Entra ID to access applications, you can use it to sign in to AB Tasty as well. To create an AB Tasty application in your Microsoft Entra ID tenant, you must have a Microsoft Entra ID account with one of the following permissions:
One of the following roles: Global Administrator, Cloud Application Administrator, or Application Administrator.
To use Microsoft Entra ID to access AB Tasty, you first need to add it as a new SAML application within Microsoft Entra ID, then add the connection information for Microsoft Entra ID to AB Tasty.


NOTE
Note that as soon as you have saved this setting and refreshed your tag, you will be responsible for sharing the ID everywhere the tag has been implemented. The failure to provide this ID will make the tag unable to execute, display the campaigns and collect data.
NOTE
To make sure the visitor IDs we will collect do not include personal information on your visitors, the AB Tasty tag will automatically hash them before using and collecting them. As a result, the visitor IDs you store will be different from the one AB Tasty collects.
NOTE
You can configure your own cookie expiration date from the Cookie lifespan section of the Cookie settings page. By default, it is set to 13 months.


















In your Generic tag page > Your tag configuration zone, click on Edit configuration.
In the Edit tag configuration page, select Delegation.
Enter a subdomain (e.g., mysitedomain.com)
Click Save to trigger infrastructure setup.
The Status Pending status appears until the DNS records are generated. This action can take a few minutes. Once done, a Step completed status appears.
Copy the content of one the tag code (either Synchronous or Asynchronous).
Open your website code.
Paste one of the tag codes between the </head> tags of your pages.
Go back to the Tag configuration page
Click I'm done.
Implementation verification is handled automatically. Your tag will be refreshed upon validation. You are redirected to the Generic Tag page.
To make sure your tag is correctly implemented, click on Check your tag implementation.
Element JavaScript
In this article we will focus on how to configure these 3 types of JavaScript files.
This code is applied to all pages where the AB Tasty tag is present. To add JavaScript code, follow these steps:
Click Settings > Account > Account JavaScript
Enter the code to be executed in the input window
Click Save
The newly configured behavior will apply immediately to all upcoming campaigns. Existing campaigns associated with the account will not be affected by this configuration.
Heads up ⚡
Do not include the opening <script> and closing </script> tags. By default, this code will run once document.ready is initialized in JQuery.
You can select to run this JavaScript as soon as the tag is ready or only when the DOM is ready. This means the code will not run until the Document Object Model has been constructed completely, with the initial HTML document loaded and parsed (though without waiting for stylesheets, images, and subframes to finish loading).
This option is recommended because your script might need elements on the page that won't be yet loaded on the page when executed. Once done, don't forget to save.
Each time you click Save, the code and its creation date are saved. Once saved, a version of that JavaScript code will be created. Different versions are displayed just below the editing area. It’s possible to roll back each version by selecting it. If necessary, you can reuse a previous version. To do this, simply copy the content of the saved code and paste it into the input window.
The code will be executed on all pages where the AB Tasty tag is present. All the conditions and restrictions need to be set up manually by developers in the code.
The JavaScript code at a campaign level will be executed each time a campaign is triggered, meaning on original version + all variations/ scenarios ; it's useful for trackers for instance.
To add JavaScript code to an entire campaign:
Click on Campaign JavaScript in the right sidebar in the visual editor of your campaign
A modal window opens where you can insert JavaScript code:
Click Save.
To add JavaScript code to a whole campaign:
Go to the JS - Campaign tab in the code editor of your campaign (3rd tab of the right)
From here, you can paste or edit JavaScript code to be executed at campaign level.
Once done, don't forget to click the Save step.
The JavaScript code at a variation/ scenario level will be executed each time a variation/ scenario is triggered, meaning only on the selected variation. Do not use to set-up trackers because trackers should be fired at the campaign level. It's useful to code specific modifications as an alternative to the usage of widgets or wysiwyg editor.
To add JavaScript code to one variation only in the editor of your campaign, on the variation:
Click Variation Javascript from the Variation dropdown menu. \
This opens a modal where you can insert JavaScript code. \
Once done, don't forget to save.
One of the main features of the Code Editor is that it lets you insert JavaScript code. Take a look at this article about the Code Editor, if you haven’t already done so. Once you've accessed the Code Editor, the CSS tab opens by default.
To switch to the JavaScript tab, click JavaScript. Once done, don't forget to click the Save step.
You may want to wait for a specific element to exist on the page before you execute your JavaScript. That’s where Element JS could be the right option.
A JavaScript code can also be triggered when an element is present in the DOM. This means the JavaScript code related to that element will run before DOM-ready (before Window: DOMContentLoaded). In this case, the JavaScript code will be executed once the element exists.
To use the Element JavaScript feature, select an element by clicking on it, then select Element JavaScript in the contextual menu.
A modal window opens with a selector already specified.
Add your JavaScript code and don't forget to save.
In the Code Editor, you need to specify directly in the code which element will trigger the snippet.
Campaign JavaScript, Variation JavaScript, and Element JavaScript are all executed in the Visual Editor. Account JavaScript is not executed in the Visual Editor.
with the Application/Local Storage tab of the console
The first part of the transaction tag generates a type=TRANSACTION query and the second part generates a type=ITEM query. Use the Chrome browser console to make sure the transaction tag hits are collected properly. Do this via your browser’s Network tab, in the Local Storage section.
The QA Assistant allows you to QA both tracking and transactions. Transaction data can be found in the dedicated tab:
You can place a fake order on your website and access the confirmation page. If the transaction tag is correctly installed, you should see the transaction data accordingly. If nothing is sent to the QA Assistant, it means that data is not collected and that the transaction tag has not been implemented correctly. If that is the case, refer to How to implement the transaction tag? or to the
Depending on the settings configured when implementing the transaction tag, these will also be listed with the transaction hit. Follow the steps below to make sure the transaction tag is sending hits properly:
Access your website.
Open your Chrome browser console.
Open the Network tab.
On the web page, add products to your cart and confirm your purchase.
In the console, select the ariane.abtasty.com transaction hit.
Click the Headers tab and make sure the TRANSACTION and ITEM settings are there.
You must also make sure the transaction and item type data has been collected and is present in your browser’s local storage. Follow the steps below to make sure the transaction and item type data has been collected and is present in your browser’s local storage:
Open the Application tab of the console.
In the left-hand column, unfold the Local Storage entry.
Select the ABTastyData key: All transaction and item type information is displayed.
Follow the steps below to add the transaction goal to your campaigns:
Create a new campaign in QA mode.
Access the Goals step of your campaign.
Click the Transaction goal.
Select your transaction goal to add it as a main or secondary goal.
on a campaign level
or globally in your account.
By default, the JavaScript code is set to execute when the DOM is ready, but if you have controls in place and you want to avoid flickering, you can choose to execute the code before the DOM is ready. This feature is available for you to use and you can access it in your advanced setting in the "Javascript Execution" subsection.
By default, the custom campaign JavaScript (JS) will be executed when the DOM is ready. This is because the custom JS may interact with elements of the DOM that may not be present before the document fully loads.
It is safer to execute the JS only when there is the highest chance of reaching the targeted element, otherwise, the campaign may not be displayed.
However, this can result in a potential and avoidable delay in the application of the campaign. Since the controls for checking the presence of a DOM element can be fully developed within the custom JavaScript, AB Tasty allows you to change the default JS execution behavior for one campaign or for all upcoming campaigns. This enables the execution of the custom JavaScript before the DOM is ready.
Configuring the execution of the campaign JavaScript before DOM-Ready does not mean that the JavaScript will systematically be executed before DOM-Ready. Indeed, there are many reasons why the AB Tasty tag may be executed after DOM-Ready (bad implementation, network problems, asynchronous targeting…).
The code a user can set up on his account JavaScript is a different feature. In this case, AB Tasty already has a setting to decide whether the JavaScript should be executed before DOM-ready or not. Both features are not linked.
The Element JS option is available in the visual editor and enables a user to add JavaScript to a specific element. In this case, the AB Tasty tag will add a watcher on the concerned element in order to wait for the element to be loaded before executing the JavaScript, without waiting for DOM-ready. More information in this article.
We enable you to specify whether the JavaScript should be executed on or before DOM-Ready, at the account's level (anytime) or at the campaign level (for a specific campaign).
Custom JS execution can be configured at the account’s level, for all upcoming campaigns of the account.
To configure the custom JS execution for upcoming campaigns, follow the steps below:
In the Settings click Advanced Settings.
Click JavaScript execution.
On the Campaign JavaScript Execution page, disable the Wait for DOM-ready to execute JavaScript option if you want the custom JavaScript to be executed before DOM-ready.
The newly configured behavior will apply immediately to all upcoming campaigns.
Existing campaigns associated with the account will not be affected by this configuration.
Custom JS execution can be configured at a campaign’s level in the visual editor or in the code editor. This way, the default behavior of the execution of the campaign's JavaScript will not be affected.
To configure the custom JS execution at a campaign’s level, follow the steps below:
From the Campaign dashboard, open the Visual editor page or the Code editor page.
From the menu bar, open the Campaign JavaScript editor.
On the JavaScript editor page, uncheck the Wait for DOM-ready to execute JavaScript option.
Click Save.
On the left panel, click on Applications > Applications > Create App Integration
Create a new application integration by selecting SAML2.0, then go Next
Complete each step as follows:
General Settings
App name
AB Tasty
App logo (optional)
Configure SAML
Feedback
Select the following answers:
Click on Finish.
Go back to the App settings.
Click on the Sign On tab.
Scroll down to the SAML Signing Certificates section.
Make sure the current certificate is Active
Click on Actions>View IdP metadata
Your metadata.xml file is created.
.
Save the file named yourcompany.xml.
Once the configuration is done, use the metada.xml along with your testing credential to .
This section will allow access to abtasty-idp for a single user or a group:
On your Okta account, go to the admin settings http://{your-workspace}-admin.okta.com
On the left panel, click on Applications > Applications > Assign
Select Assign to people for a single user access, or Assign to group to grant access for a previously created group.
Use the search bar to find the targeted user or group
Click Assign beside every entity you want to grant access.
To save the selection and grant SSO access, click Done.
You must have Super Admin or Admin rights to access SSO settings.
Make sure your Identity Providers can communicate with AB Tasty – some Identity Providers are limited to internal communication, which blocks the use of SSO with AB Tasty
AB Tasty only manages SP-initiated SSO, so please ensure your Identity Provider is compatible
If you encounter errors during setup, verify your IdP metadata file.
Ensure all allowed domains are correct and match your users’ email addresses.
For further help, contact your internal IT team.
For more information on our SSO system, please read
Log in to your Microsoft Entra ID account with the required permissions.
In the home page left panel, select Enterprise applications.
On the Enterprise Applications page, select + New Application.
The Microsoft Entra Gallery opens.
In the Microsoft Entra ID Gallery, select + Create your own application.
In the Create your own app window, name your new app "AB Tasty".
Select Integrate any other application you don't find in the gallery (Non-gallery).
At the bottom of the window, select Create to create your new app.
On the Overview page select Single sign-on from the navigation menu, or click on Set up Single sign on card.
On the Single sign-on page, select SAML.
Go to Basic SAML Configuration section (1) and select Edit.
Fill these values in Microsoft Entra ID under Basic SAML Configuration
Select Save to save these changes
Go to the SAML Certificates section (3) on the SAML-based Sign-on page.
Download Federation Metadata XML.
.
Go to the Users and Groups section in your Microsoft account to allow users/groups to access the new application on Microsoft Entra ID and/or log in from the AB Tasty login page (https://app2.abtasty.com/ssologin).
Please make sure all Microsoft Entra ID users authorised to log in to AB Tasty also have an AB Tasty account.
There are different methods and levels to adding JavaScript code on AB Tasty. Select one of these depending on the JavaScript code you need to execute.
The various JavaScript codes are executed by the tag in the following order:
Account JavaScript
Variation JavaScript
Specific rule for Element JavaScript: the code is executed once the element is loaded on the page, meaning that this execution can happen at any time, even never.
Where and when do these javascript files run?
Account JavaScript: on all pages on which the tag is set, after the DOM ready (depends of preferences set-up in the settings)
Campaign JavaScript: on all the pages where the targeting is valid, on all variations, after the DOM ready (depends on your choices in the editors)
Variation JavaScript: on all the pages where the targeting is valid, when the visitor is assigned to the variation, after the DOM ready (depends on your choices in the editors)
Where to configure these JavaScript files?
Please refer to this to follow the steps to implement account JavaScript.
The AB Tasty tag enables you to inject JavaScript code into your website. At times, you may need to add a JavaScript snippet on all the pages where the AB Tasty tag is present. This could be for different reasons, such as to use it as an analytics catalyst, to add a custom script to be executed on all pages, to connect with third-party tools, or to add a quick patch.
This code is applied to all pages where the AB Tasty tag is present.
You can select to run this JavaScript as soon as the tag is ready or only when the DOM is ready. This means the code will not run until the Document Object Model has been constructed completely, with the initial HTML document loaded and parsed (though without waiting for stylesheets, images, and subframes to finish loading). This option is recommended because your script might need elements on the page that won't be yet loaded on the page when executed. Once done, don't forget to save. Discover more about Window: DOMContentLoaded
Each time you click Save, the code and its creation date are saved. Once saved, a version of that JavaScript code will be created. Different versions are displayed just below the editing area. It’s possible to roll back each version by selecting it. If necessary, you can reuse a previous version. To do this, simply copy the content of the saved code and paste it into the input window.
The code will be executed on all pages where the AB Tasty tag is present. All the conditions and restrictions need to be set up manually by developers in the code.
Using global code is useful if you want to track certain events systematically in all your future campaigns, for example:
Custom tracking (scroll on a specific page, video fully viewed, etc.)
Global tracking
Flag visitors with specific information: cookies, storage variables, etc. (to filter a report or target a new campaign, for example)
Targeting campaigns by events (to start campaigns manually)
You can also scope your JavaScript code to one single campaign (it will be executed on all variations and sub-tests of this campaign, including the original version). You can do this in two different environments: visual editor and code editor.
Please refer to this to follow the steps to implement campaign JavaScript.
Using Campaign JavaScript is useful to code directly the events you need to track on your campaign, and that are not configurable via the Action Tracking options in the visual editor.
Custom tracking (scroll on the page, video fully viewed, etc.)
Action tracking on an element which is not loaded on DOM ready
etc.
For more information about campaign JavaScript file execution and options, see this specific .
Variation JavaScript is executed in a single variation of a campaign. You can do this in two different environments: visual editor and code editor.
Please refer to this to follow the steps to implement Variation JavaScript.
This kind of JavaScript code should not be used to track events at all. It's useful to code your modifications instead of using the wysiwyg capabilities. But it's totally compatible with other modifications in wysiwyg and the usage of widgets.
You may want to wait for a specific element to exist on the page before you execute your JavaScript. That’s where Element JS could be the right option.
A JavaScript code can also be triggered when an element is present in the . This means the JavaScript code related to that element will run before DOM-ready (before Window: DOMContentLoaded). In this case, the JavaScript code will be executed once the element exists.
Please refer to this to follow the steps to implement Element JavaScript.
This kind of JavaScript code should not be used to track events at all. It's useful to code your modifications instead of using the wysiwyg capabilities. But it's totally compatible with other modifications in wysiwyg and the usage of widgets.
Integrating Product Hits is a mandatory step if you want to launch campaigns using segment criteria such as Cart abandonment and Content interest.
To learn more about how to set-up these 2 criteria, please refer to the following article.
AB Tasty lets you save the data related to what kind of product your visitors view and add to their cart during their visits on your website. This integration enables AB Tasty to offer you complementary services to improve your testing and personalization strategy.
Every “hit” integration works the same way, you can follow the same process whether you are interested in using Cart abandonment or Content interest criteria.
Like every JS snippet, you have different ways to proceed with the integration. We will present you three options we consider the best to integrate the hits product script:
Directly on your website:
In your code base
Through a tag manager (like GTM for instance)
From your AB Tasty account, inside the account's global JavaScript menu
To learn more about Product hits and its principles, refer to .
We recommend integrating this script directly into your website codebase. You will easily be able to execute it on the right page depending on the context and type of hits you want to send to AB Tasty:
On every product page for the ‘VIEW’ type of hit product. AB Tasty will receive a precise hit of navigation from your visitors
As soon as a visitor adds a product to its cart for the ‘CART_ITEM’ type of hit product
As soon as a visitor initiates a cart for the ‘CART_TOTAL’ type of hit product
You can encapsulate the script given above in the "what to implement" section in the right context that will match your requirements and specificities.
You can integrate this script from your . The main difference is that it will be executed directly by our tag.
You can integrate the same conditions as you would do with a proper integration in your codebase, but you are not dependent on developers to plan a release as it’s our tag that will execute it on your website.
On the , the basic “hit” integration should look like this:
If you use a Tag Manager System like Google tag Manager, you can integrate the hit product as every other JS script (like AB Tasty generic tag for example) in this environment. You just need to follow the basic steps - here an example with Google tag Manager:
Create a new tag
Choose Custom HTML as a tag type
Integrate into the “HTML” field the hit product. Do not forget to pass you real variables to replace the values we passed as examples in the documentation. You may have those variables already configured in your GTM, which would make the process quick to proceed with
Choose the “triggering” rule to define in which context the script will be called from GTM. We advise firing it on all pages where a user can proceed with an “add to cart” action.
Here you will find complete codes example that properly respects three essentials to fire the hit product events:
Incorporate the hit product JS script, to fill in the right data/variables of your website context
Securely wait for the tag to be executed by using a native function that the AB Tasty generic tag will interpret
Wait for your add-to-cart event to fire the hit product in the right context
Good to know 💡
AB Tasty gives its customers some solutions to help them with this kind of integration. Please contact your CSM or your main AB Tasty interlocutor, they will be happy to help you with this. We have a dedicated technical team that can help you with this integration, to go further and accompany you until it’s up and running on your website!.
To verify the integration, you can look into the payload of the "ariane.abtasty.com" request through the network tool:
You will find all the data in a specific index.
Please refer to
Transaction tag generator enables you to implement your transaction tag easily as you just need to indicate where to find the transaction data. The transaction tag will be automatically embedded in the generic tag with no need for creating or modifying any code.
This feature is deprecated. Please read our How to implement the transaction tag article for alternative methods.
Transaction tag generator enables you to implement your transaction tag easily as you just need to indicate where to find the transaction data. The transaction tag will be automatically embedded in the generic tag with no need for creating or modifying any code.
Benefits:
👉 Debugging is made easier since we have more visibility on what has been set up compared with a code you have to add to your source code or your TMS.
👉 The transaction tag generator is based on data layer variables or CSS selectors you have defined. These parameters are more stable than using a custom code.
Heads up ⚡
👉 You must implement and find the exact variable names to make the transaction tag generator work.
👉 If the variables are modified on your website, it will also impact the transaction tag collection. You will need to adapt the transaction tag implementation accordingly.
When implementing the transaction tag directly in the settings, you do not need to implement it again into your source code.
You can implement your transaction tag using one of the three following methods:
👉: by declaring the variables from your data layer containing the transaction-related information.
👉: by declaring the CSS selectors containing the transaction-related information.
👉: by completineg the code snippet.
To use the data layer mode, you first need to integrate.
Depending on the settings you specified, a JavaScript code is created and will be automatically included in the AB Tasty tag. This code is updated each time the configuration is modified and saved with the tag up-to-date.
First, you need to create an affiliation, which coincides with the name you will give to your transaction tag.
Then, you must specify the URL(s) of your website on which the transaction information is available, such as the confirmation page.
You can create as many affiliations as you want and you can edit and delete them.
You need to select the method with which you want to implement your transaction tag:
The data layer mode enables you to implement your transaction tag based on the variables defined in your data layer.
For each mandatory field, you need to enter the name of the key that will be extracted from the corresponding variable. These keys can be found in your data layer.
For example, to fill in the transaction ID, you need to enter the key corresponding to the transaction ID you configured in your data layer. If the transaction is available in the key order_id with a corresponding value OD564, this means that you need to enter the order_id in the transaction ID field.
Please note that the tag will try its best to automatically format your data to the correct data type, ie. transform a character string into a number, but some specific data conversion will not be possible. You should type in already formatted data rather than let the tag automatically convert them to avoid any issues.
The selector mode can be used if the transaction data is available directly in the code of your confirmation page. In this case, you need to fill in each field with the corresponding CSS selector that can be used in the document.querySelector function.
The item count number (icn) coincides with the total number of items purchased during the transaction. It can be calculated via three different methods.
Example:
👉 If your key (data layer mode) or selector (selector mode) contains the total number of purchased items, select Default.
In the code example, the key would be items_count (returns 5)
👉 If your key or selector contains unitary purchased items, select Count.
In the code example, the key would be products[] (returns 2) 👉 If your key or selector contains the quantity of each purchased item, select Sum.
In the code example, the key would be products[].quantity (returns 5)
The Expert mode enables you to implement your transaction tag via a JavaScript code. By default, there is a code example that you can edit and replace with your own data, available in your source code or Datalayer. You also need to apply the appropriate format to your values (string, float or integer) as described in our .
The transaction affiliation/name (ta), transaction id (tid), transaction revenue (tr) and item count number (icn) must be declared during transaction tag implementation. The other settings are optional, however we recommend configuring them also in order to enable the application of matching filters in the reports later on.
Information related to the purchased items can be linked to each transaction to apply matching filters in the campaign reports or to use purchase-related targeting criteria.
Purchased items data can be collected via the three available methods: Datalayer, Selector, or Expert.
First, select Array of items as an optional value and enter the key or selector corresponding to the array of objects of all items purchased during the transaction.
In the above example, all item-related data are stored in the transactionProducts array of the data layer, on the purchase confirmation page.
Click Add optional value: All the data corresponding to items’ characteristics appear as additional fields where you can insert the data layer key or selector corresponding to the item name, price, quantity, ID, and category:
In this example, on the data layer, the item name can be found in the name key, the ID in the SKU key, and so on.
To add the purchased items data in the Expert mode, apply the following steps:
Complete the variable corresponding to “__TRANSACTION _ITEMS_ARRAY__”.
Complete all the items characteristics with their corresponding variables in tid, in, ip, iq, ic and iv.
The preview enables you to verify that your transaction tag has been correctly configured by showing the latest transactions registered on your website.
The Transaction Tag Generator is using universal collect data. This is why, after you have implemented your transaction tag, it may take a few hours for the first transactions to be visible in the preview.
Once the new affiliation has been saved, do not forget to refresh the tag (in the header right) to be sure that all your modifications are taken into account in production.
For each transaction, the values corresponding to the keys you specified in your transaction tag are displayed:
If the preview is still empty after several hours, it probably means that one of the fields has not been implemented correctly. Please, check the URL page and all the fields again to be sure that everything is set up correctly. If not, you should ask your technical team or your dedicated AB Tasty consultant to do it for you.
A secure profile is a profile that does not rely solely on a login and a password. This is why a user who has configured Multi-Factor Authentication (MFA) will be considered secure since additional information required from the user will be asked to login.
MFA means that besides requesting you to sign-in through your login and password, you will also be asked to provide a secret code you will get through other means like an Authenticator app, via email or SMS.
One of the main reasons is to prevent yourself from being a victim of a phishing campaign. A phishing campaign aims at retrieving your login and password through fake emails, SMS or a website that will mimic the communications or a product that you are used to. Though, you can usually spot the fakes, they tend to be more and more accurate and it's easier and easier to fall in their traps.
But if you have secured your profile with MFA, they will not be able to log into your account even though they got your login and password since they will still be missing one key component: MFA.
Obviously, if you have a secured profile and you somehow divulged your login and password through a phishing campaign, you should still reset your password as a precaution.
You have 3 MFA methods at your disposal:
Authenticator app
SMS
An authenticator app is an application that, once set up, will provide time-based codes to use for the different applications that you linked it to.
Here is a list of several Authenticator apps that you can use:
Google Authenticator
Microsoft Authenticator
Authy
Once you access your AB Tasty account for the first time, you'll have to set-up your MFA entirely.
To activate MFA with an Authenticator app, go to the :
Click the Setup MFA CTA
Choose App authentication
A QR code is displayed;
You can either scan it with your Authenticator app or
MFA is now active on your profile. You can download and save the backup codes that are generated for you.
To activate MFA with Email, follow the steps below:
Click the Setup MFA CTA.
Choose Email authentication
A code is sent to the email address filled in your profile
Enter the code in the appropriate field and click Verify.
MFA is now active on your profile. You can download and save the backup codes that are generated for you.
To activate MFA with SMS, follow the steps below:
Click the Setup MFA CTA.
Choose SMS authentication
Fill in your phone number. You will receive a code by SMS.
Enter the code in the appropriate field and click Verify.
MFA is now active on your profile. You can download and save the backup codes that are generated for you.
Once the configuration is complete, when logging in to the AB Tasty platform, follow these steps:
Sign-in like you are used to with an email and password, through SSO or via Google Sign-in
Once done, you will be asked to enter an authentication code
Depending on the MFA method you chose, you can either
Get a code from your authenticator app
If you are not able to get a code on Step 3, then you can select the method "Backup code" and try and enter one of your backup codes so you can login.
Good to know You can also check the Don’t ask me again for the next 2 weeks option if your device is fully secured and if you do not want to enter a code on this one specifically for the next 2 weeks.
The Custom pixel is one of the two options we have built to help you integrate AB Tasty in your Shopify workflows. It specifically ensures transactional hits during checkout through Shopify's checkout extensibility. However, you'll still need to inject the AB Tasty tag manually on other pages of your site to capture full user interactions. To learn more about the two options and decide which one you should use, please refer to the article.
To use the extension you must be an AB Tasty customer. To complete the installation, you will need your AB Tasty identifier (the ID of your tag). Your store must use Shopify Hydrogen or another Headless Framework This application works as a standalone
Installation steps
Log In Shopify
You can display the secret key, copy it and add it inside your Authenticator app
Copy the code that your Authenticator app provides
Enter the code in the appropriate field and click Verify.
Receive a code on your email address
Receive a code on your phone via SMS
Enter the 6-digit code in the relevant field
Click Validate and you will be logged in














Name: mail (or user.mail)
Value: set to the user’s email attribute in Entra ID (e.g., user.mail).
Identifier (Entity ID):
Retrievable from your AB Tasty SSO configuration module on AB Tasty as Entity ID
Reply URL (Assertion Consumer Service URL):
Retrievable from your AB Tasty SSO configuration module on AB Tasty as ACS URL
Sign on URL (Optional):
https://app2.abtasty.com/ssologin
Relay State (Optional):
should be left empty
Logout Url (Optional):
https://app2.abtasty.com/logout










Copy and adapt the provided code snippet (see example below)
To retrieve your AB Tasty identifier, access the Generic tag page
Copy your AB Tasty account identifier in REPLACE_WITH_YOURABTASTY_IDENTIFIER section.
Complete the creation of the custom pixel
Injecting the AB Tasty Tag on Other Pages:
To ensure comprehensive tracking across your store, it's essential to inject the AB Tasty tag on pages outside of the checkout process. Here's how you can do it:
Using the theme.liquid File for Global Scripts:
From your Shopify admin, navigate to Online Store > Themes > Actions > Edit Code.
Open the theme.liquid file located in the Layout folder.
Insert your script tag just before the closing </head> tag for scripts that need to load early, or before the closing </body> tag for scripts that can load later.
For example:
<!-- For scripts in the Assets folder -->
<script src="{{ 'your-script.js' | asset_url }}" defer></script>
<!-- For external scripts -->
<script src="https://example.com/your-script.js" defer></script>
{
"transaction_id": "transac1234",
"items_count": 5
"products": [
{
"name": "item 1",
"quantity": 2
},
{
"name": "item 2",
"quantity": 3
}
]}// REQUIRED
const ABTASTY_IDENTIFIER = "REPLACE_WITH_YOURABTASTY_IDENTIFIER";
// OPTIONAL
const FEATURE_EXP_ENVIRONMENT_ID = "REPLACE_WITH_YOURFLAGSHIP_IDENTIFIER"; // see more https://www.abtasty.com/feature-experimentation/
// Load AB Tasty tag
(function (i, s, o, g, r, a, m) {
i.abtiming = 1 * new Date();
(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m);
console.log("ABTASTY: loading tag with identifier:", ABTASTY_IDENTIFIER);
})(window, document, "script", `//try.abtasty.com/${ABTASTY_IDENTIFIER}.js`);
const visitorId = document.cookie.match(/FLAGSHIP_VISITOR_ID=([^;]+)/i)?.[1];
analytics.subscribe("checkout_completed", async (event) => {
const {
order,
lineItems,
transactions,
currencyCode,
discountApplications,
totalPrice,
shippingLine,
totalTax,
delivery,
} = event.data.checkout;
const discountCodes = discountApplications.filter(
({ type }) => type === "DISCOUNT_CODE",
);
const transactionId = order?.id ?? Math.random().toString(36).substring(7);
const payment = transactions[0];
const paymentMethod = payment?.paymentMethod?.name ?? payment?.gateway ?? "";
const shipping = delivery?.selectedDeliveryOptions[0];
const shippingMethod =
shipping?.title ?? shipping?.description ?? shipping?.type ?? "";
const transactionPayload = {
ta: "Purchase",
tid: transactionId,
tr: totalPrice?.amount ?? 0,
tt: totalTax.amount,
tc: currencyCode ?? "",
tcc: discountCodes.map(({ title }) => title).join(", "),
icn: lineItems.reduce((acc, item) => acc + item.quantity, 0),
ts: shippingLine?.price.amount,
pm: paymentMethod,
sm: shippingMethod,
};
await waitFor(() => typeof window.abtasty !== "undefined");
const itemPayloads = lineItems.map((lineItem) => ({
tid: transactionId,
in: lineItem.variant?.title || lineItem.variant?.product.title,
ip:
(lineItem?.finalLinePrice?.amount ?? lineItem.variant?.price?.amount) /
lineItem.quantity,
iq: lineItem.quantity,
ic: lineItem.variant?.sku || lineItem.variant?.product.id,
iv: lineItem.variant?.product.type ?? undefined,
}));
window.abtasty.send("transaction", transactionPayload);
itemPayloads.forEach((itemPayload) =>
window.abtasty.send("item", itemPayload),
);
if (FEATURE_EXP_ENVIRONMENT_ID && visitorId) {
const common = {
ds: "app",
cid: FEATURE_EXP_ENVIRONMENT_ID,
vid: visitorId,
};
window.abtasty.send("transaction", {
...transactionPayload,
...common,
});
itemPayloads.forEach((itemPayload) =>
window.abtasty.send("item", { ...itemPayload, ...common }),
);
}
});
const waitFor = (condition) => {
const TIMEOUT = 5000;
return new Promise((resolve, reject) => {
const startTime = Date.now();
function checkCondition() {
// Check if the condition is met
if (condition()) {
resolve();
return;
}
// Check if timeout has been reached
if (Date.now() - startTime > TIMEOUT) {
reject(new Error("Timeout waiting for condition"));
return;
}
// If not met, try again after a short delay
setTimeout(checkCondition, 100);
}
// Start checking
checkCondition();
});
};
if (FEATURE_EXP_ENVIRONMENT_ID && !visitorId) {
console.log(
"ABTASTY: No visitor id found. Make sure you have the FLAGSHIP_VISITOR_ID cookie",
);
}
In a separate window, log in your identity provider platform and generate your Identity Provider (IdP) metadata file (XML format).
If your provider is Okta, please read our article dedicated to Okta SAML integration
If your provider is Microsoft, please read our article dedicated to Microsoft Entra ID SAML integration
Upload your IdP metadata XML file in AB Tasty SSO configuration module.
Click Save.
The SSO page displays Email Domains and Activation sections
To remove a domain, click the trash icon next to the domain.
Your SSO provider is added and pending activation.

Transaction tag implementation
Type
Where in the application
Account JavaScript
Campaign JavaScript
Campaign JS in the visual Editor Campaign JS in the code Editor
Variation JavaScript
Variation JS in the visual Editor Variation JS in the code Editor
Element Javascript
Element JS in the visual Editor
After that, you just need to proceed with your validation process by submitting these new changes in GTM



Single Sign on (url)
Retrievable from your AB Tasty SSO configuration module on AB Tasty as ACS URL
Audience URI (SP Entity ID):
Retrievable from your AB Tasty SSO configuration module on AB Tasty as Entity ID
Default Relay State (optionnal)
should be left empty
Name ID format
EmailAddressApplication user name
EmailAttribute Statements (optional)
Name: mailValue: user.emailAre you a customer or partner?
I'm an Okta customer adding an internal
App Type
This is an internal app that we have created









The restrict cookie deposit option enables you to manage the AB Tasty tag’s behavior to comply with regulations and adapt the configuration to user specificities. Since the implementation of the Guidelines on consent under Regulation 2016/679 (GDPR) by the European Data Protection Board on May 4, 2020, you have a legal obligation to ask your visitors for their explicit consent before tracking them and collecting their personal information through the acceptance of a cookie banner (either fully or partially).
Moreover, you must provide proof of this consent and AB Tasty must help you do so.
As soon as consent is given, proof of this consent is automatically sent to AB Tasty’s servers and stored for 13 months.
Stored consent information includes the date and time, the condition and mode used, the visitor ID, and the perimeter.
It remains your full responsibility to implement the cookie banner on your website and make its content compliant with local data protection regulations.
In the page in the settings, you must select one of these three options:
Not restricting cookie deposits. This means no consent is requested from the visitors and the campaign is automatically displayed and data tracked.
Select this option only if your country / geographical area does not require you to ask for consent before collecting data or if this account is a test account not meant to go live.
Managing the consent proper to AB Tasty within a third-party tool, such as a CMS. In this case, the TMS automatically checks the visitor’s consent before triggering the tags it contains. Proof of consent will still be collected; however, the consent will specify that it was collected by an uncited third-party source.
Delegating the consent to the AB Tasty. In this case, the tag will try to determine whether the visitor gave their consent on the website before tracking them and collecting their data.
To help you to choose the right method for your cookie deposit policy, you can trigger our virtual assistant Ally by clicking on Start on the banner.
The tour explains all the options you can choose and the benefits and risks of each of them.
If you select the ‘Do not ask for visitor consent and track data anyway’ option, you won’t ask your visitor’s consent to track their data.
AB Tasty campaigns will be automatically displayed, and all the actions they will perform will be tracked and stored.
No proof of consent will be collected. We don’t recommend selecting this option as it may not comply with your local legislation.
To activate the consent obtained by a third party, just choose the option.
When activating this option, the visitor’s consent is considered to have been given as soon as the tag is executed. The proof of consent will be written in the AB Tasty infrastructure instantly without checking any other trace of consent on the website.
When selecting this option, AB Tasty won’t be responsible for checking the consent of your visitors.
💡 We recommend selecting this option only if you are currently centralizing consent management for your website in a specialized tool.
AB Tasty will automatically check the visitor’s consent before displaying campaigns. 💡 We recommend selecting this option as it complies with the European legislation and it enables campaigns to display without waiting for the visitor‘s consent.
You now need to choose how the tag will operate on your website when the visitor has not given their consent according to the campaign type.
If you tick a campaign type: campaigns of this type are triggered and the visitor can be assigned to a variation, or to the original version. As data is not tracked, the visitor may see different variations when browsing the website.
If you don’t tick a campaign type: campaigns of this type are not triggered and the visitor sees the original version.
In both cases, data is neither collected nor stored until consent has been given. Data will be collected as soon as the visitor gives their consent.
If you tick the box, the visitor may be assigned to a variation, but the actions they perform won’t be collected and stored, so they won’t count in the reporting.
If you don’t tick the box, the visitor will see the original version so the actions they perform won’t impact the results of the test either.
We recommend not ticking this box as you need to collect data to analyze the results of a test. If a visitor doesn’t give their consent, they will see the test but your reporting will be empty. Also, the visitor may see different variations of a campaign across their website journey.
If you tick the box, the visitor will see the personalization, but the potential actions they perform won’t be collected and stored.
If you don’t tick the box, the visitor won't see the personalizations.
💡 We recommend ticking this box as you don’t necessarily need to collect data. If a visitor doesn’t give their consent, they will still be able to see the personalization.
If you tick the box, the visitor may be assigned to a redirection, but the actions they perform won’t be collected and stored, so they won’t count in the reporting.
If you don’t tick the box, the visitor won't see the redirection so the actions they perform won’t impact the results of the campaign either.
We recommend not ticking this box as you need to collect data to analyze the results of a split campaign. If a visitor doesn’t give their consent, they will see the campaign but your reporting will be empty.
If you tick the box, the visitor may be assigned to a variation, but the actions they perform won’t be collected and stored, so they won’t count in the reporting.
If you don’t tick the box, the visitor will see the original version so the actions they perform won’t impact the results of the test either.
We recommend not ticking this box as you need to collect data to analyze the results of an A/A test. If a visitor doesn’t give their consent, they will see the test but your reporting will be empty.
If you tick the box, the visitor will see the patch, but the potential actions they perform won’t be collected and stored.
If you don’t tick the box, the visitor won't see the patch.
We recommend ticking this box as you don’t need to collect data at all when launching a patch. If a visitor doesn’t give their consent, they will still be able to see the patch.
You now need to choose how AB tasty will determine that a visitor has given their consent and therefore that their actions can be tracked and stored : you need to choose between the following options:
The user completes an action on the page
My website deposits its cookies
A specific cookie is placed
Didomi consent
Heads up ⚡
If AB Tasty detects the revocation of the visitor’s consent (that is to say, if the visitor uses functionality that cancels the consent they have previously given, or deletes the cookies from their browser), all standard data stored by AB Tasty on the visitor’s browser will be deleted and the visitor will no longer be tracked.
If you choose this option, the consent of the visitor is considered to have been given as soon as the user completes an action on the page (a scroll, a click, or any other action).
We don’t recommend selecting this option as it is no longer compliant with the European legislation (ePrivacy). Only select this option if you want to implement the AB Tasty tag on your pre-production/staging environment and for testing purposes.
If you choose this option, the consent of the visitor is considered to have been given if the AB Tasty tag detects any other cookies on the page (from the website itself or a third-party tool).
We don’t recommend selecting this option as it is no longer compliant with the European legislation (ePrivacy). Only select this option if you want to implement the AB Tasty tag on your pre-production/staging environment and for testing purposes.
Heads up ⚡
The first two options are legacy methods that do not comply with the GDPR. Only select one of these two options if you want or plan to implement the AB Tasty tag on your pre-production or staging environment, and for testing purposes.
Choose this option if your visitor’s consent is stored in a specific cookie. To configure this option, follow these steps:
Specify the name of your cookie
Select an option from the drop-down list: contains expression, regular expression or corresponds exactly
Enter the expected value of your cookie
As soon as the tag is executed, it will seek to confirm this condition and visitor tracking will only begin once consent has effectively been acknowledged. The tag will then conduct regular checks (upon each reload) to ensure the condition is still valid. If not, it will apply the effects specific to the revocation of consent.
Choose this option if you want visitor consent to be managed by Didomi. Didomi is a Consent Management Platform (CMP) that enables you to manage your vendors (or third-party tools), and their associated purposes, and to configure the way your visitors can consent to data usage.
For more information about the Didomi integration, please refer to the following .
Select this option if you manage consent with specific JavaScript events when a visitor has given or revoked their consent. For more information, refer to this .
Select this option if you want to create a custom JavaScript function to personalize the way consent is given by the visitor. This function must return ‘true’ if the condition is valid and if consent was obtained by the visitor. In this case, the AB Tasty tag will trigger and execute the JS function and start tracking.
💡 We recommend selecting this option only if the above options don’t meet your needs.
The AB Tasty Shopify app (Web pixel) is one of the two options we have build to help you integrate AB TAsty in your Shopify workflows. To know more about the two options and decide which one you should use, please refer to the AB Tasty integration with Shopify article.
To install the app, please read How to implement Shopify app article.
Once set-up, the app will allow you to
These events are available on:
AB tasty reporting
Data Explorer
More than 10 events are automatically added to your custom trackers, (both for FE&R and Web experimentation platforms).
These events can be added as Campaign Goals on the Web experimentation platform.
You can Subscribe / Unsubscribe to any event from Shopify Admin.
The Shopify app will only run either
If AB Tasty Tag Consent has been granted / giving it authorization to run in the AB Tasty page. (If you inspect the page, Analytics Should be “true”)
If Shopify Consent has been granted in Shopify in the Customer Privacy API page (if you inspect the page consentReady should be “true”)
If one of these 2 is missing, then web pixels won’t run.
For performance reasons, Shopify recommends using the asynchronous tag: in this case, scripts load simultaneously, which can improve page load speed but may cause flickering as modifications are applied after the page loads. If you encounter flickering effects on your website, you can use the synchronous mode. In this case, scripts are loaded in order, minimizing flickering effects by applying modifications before the website loads.
Synchronous loading can help reduce flickering effects if it occurs, enhancing the overall user experience on Shopify stores.
To enable one option or the other:
Go on AB Tasty app homepage.
Click on edit app configuration.
Scroll down to advanced options
Toggle on or off the Load the Tag synchronously feature.
Even if your checkout workflow is on a subdomain, you can track it. This option will:
Create a dedicated cookie
Keep the standard configuration on localstorage
In case of 2 events sent at the same time, AB Tasty Tag will ensure reconciliation to avoid double-positive
To enable this feature:
Go on AB Tasty app homepage.
Click on edit app configuration.
Scroll down to advanced options
Toggle Handle checkout on Subdomain on.
The AB Tasty generic tag will be placed on all pages of your website, except for checkout pages (by checkout, we mean the whole payment funnel, excluding the shopping cart). This restriction applies to all Shopify partner tools. More information in the Shopify .
This means that you will be able to:
Test and personalize your entire website, including the shopping cart page, except for checkout pages.
Track any event on your website, including transactions, since the AB Tasty Shopify app retrieves the Shopify transaction natively. There is no need to install a transaction tag.
The AB Tasty tag or the Shopify app can be blocked by browsers add-ons, privacy settings, etc. Some discrepancies in transactions reports should be expected.
With Shopify, you can track a variety of events that occur on your website. Once you have installed the AB Tasty app on Shopify, these events are automatically created.
You can retrieve them in the (in the Custom trackings tab, marked with a Shopify label) of the Web experimentation & Personalization platform. These events can be used as goals for your campaigns from the Goal step of any campaign, under the Custom trackings category to monitor your campaign performance. For more information on goals, refer to
You can't edit, delete or hide a Shopify event from the WE&P interface.
Here is the list of Shopify events available in Web Experimentation & Rollouts:
To track events on the checkout, it is not possible to directly use the AB Tasty tag (which cannot be executed there). For these pages, the extension uses the Shopify API. This way, you'll be able to track, for all your campaigns:
Transactions and associated metrics: transaction rate, number of visitors who have done at least one transaction, total number of transactions, average basket, number of items per transaction, average item price per transaction, and so on.
The name of the associated transaction goal will be "Purchase".
The dimensions associated with each transaction: currency, voucher use, payment method, delivery method, and so on.
Page views: cart page, review page
For other click tracking and custom tracking events, you need to declare the events to be tracked directly in your Shopify admin. See tracker set-up section.
Collecting the "voucher" dimension
If a discount code ("voucher") has been entered by the buyer, it will be sent to data collection and available in AB Tasty reporting. The associated transaction amount will be the one with the discount applied.
When using Shopify, privacy is based on the configuration you have set up in the Web Experimentation & Personalization platform ( of the Settings). You don't have to configure anything privacy-related in Shopify. This way, when using Shopify, visitor tracking is consistent and campaigns reliable.
For different purposes, AB Tasty lets you save the data related to what kind of product your visitors view and add to their cart during their visits on your website. This integration enables AB Tasty to offer you complementary services to improve your testing and personalization strategy.
We built two in-house targeting criteria to help our customers to go further in their experimentation and personalization strategy:
Cart abandonment: these criterion helps our user to target their “abandonist” visitors
Content interest: this criterion helps identify and target visitors based on their specific interests detected on your website. It can either work through the page title (which it does natively) or through product hits that you can send us if you find it more accurate. The hit product integration will also allow AB Tasty to display some conversion data on content interest audiences.
To make those solutions work, we just need some data that our can not properly detect, read, and interpret. To answer that limitation, we developed a specific JS function, that we call “product hit”, for you to send us the right data in the right context, which we will leverage in the AB Tasty platform to offer you new services (inside the targeting for example).
To send those product data to AB Tasty, you need to add a Javascript script on every product page, while your visitors are doing two types of events: viewing a product (i.e: loading any product page), and adding a product to their cart.
To learn how-to integrate Product hits, refer to .
We are going to see how the hit JS event is built, with a quick overview of its key components.
The event uses the ‘window.abtasty.send’ function to call the global ‘abtasty’ object integrated into your website through the generic tag. This is how the collection will work. The script will pass some specific product data to our generic tag to be sent to our data pipeline. From this collection, we can build up services for you to leverage those data.
Inside the script, you will find a list of parameters that you will need to fill in to send us the appropriate data depending on your visitor's context. Some parameters are mandatory for some specific kind of hits, defined by the first parameter, the product interaction type (first line of the following table). Apart from that, to succeed in your implementation, you just need to respect the value type of each parameter and link the right data on your side to the right parameters. Let’s deep dive into each parameter:
.
Please refer to our specific about the criterion in themselves to have a wide overview of how the criteria work.
The hit product is not mandatory to use this segmentation criterion. It works with page titles and the generic tag can analyze and recognize some content interests based on general navigation data.
But to go further with the analysis of your content interest audiences, we created in our targeting interface a table with both traffic and conversion data. And this is where the hit product integration comes in: to reconcile a specific product with a specific transaction, we need you to send us the right information when a visitor sees a product. With that good setup, you will be able to have precise conversion data for every content interest audience, and base your decisions on those every time you are setting up a campaign!
We are going to see how the hit JS event is built, with a quick overview of its key components.
The event uses the ‘window.abtasty.send’ function to call the global ‘abtasty’ object integrated into your website through the generic tag. This is how the collection will work. The script will pass some specific product data to our generic tag to be sent to our data pipeline. From this collection, we can build up services for you to leverage those data.
Inside the script, you will find a list of parameters that you will need to fill in to send us the appropriate data depending on your visitor's context. Some parameters are mandatory for some specific kind of hits, defined by the first parameter, the product interaction type (first line of the following table). Apart from that, to succeed in your implementation, you just need to respect the value type of each parameter and link the right data on your side to the right parameters. Let’s deep dive into each parameter:
For different purposes, AB Tasty lets you save the data related to what kind of product your visitors view and add to their cart during their visits on your website. This integration enables AB Tasty to offer you complementary services to improve your testing and personalization strategy.
We built two in-house targeting criteria to help our customers to go further in their experimentation and personalization strategy:
: these criterion helps our user to target their “abandonist” visitors
this criterion helps identify and target visitors based on their specific interests detected on your website. It can either work through the page title (which it does natively) or through product hits that you can send us if you find it more accurate. The hit product integration will also allow AB Tasty to display some conversion data on content interest audiences.
To make those solutions work, we just need some data that our can not properly detect, read, and interpret. To answer that limitation, we developed a specific JS function, that we call “product hit”, for you to send us the right data in the right context, which we will leverage in the AB Tasty platform to offer you new services (inside the targeting for example).
To send those product data to AB Tasty, you need to add a Javascript script on every product page, while your visitors are doing two types of events: viewing a product (i.e: loading any product page), and adding a product to their cart.
We are going to see how the hit JS event is built, with a quick overview of its key components.
The event uses the ‘window.abtasty.send’ function to call the global ‘abtasty’ object integrated into your website through the generic tag. This is how the collection will work. The script will pass some specific product data to our generic tag to be sent to our data pipeline. From this collection, we can build up services for you to leverage those data.
Inside the script, you will find a list of parameters that you will need to fill in to send us the appropriate data depending on your visitor's context. Some parameters are mandatory for some specific kind of hits, defined by the first parameter, the product interaction type (first line of the following table). Apart from that, to succeed in your implementation, you just need to respect the value type of each parameter and link the right data on your side to the right parameters. Let’s deep dive into each parameter:
You can refer to our technical documentation .
Please refer to our specific about the criterion in themselves to have a wide overview of how the criteria work.
The hit product is not mandatory to use this segmentation criterion. It works with page titles and the generic tag can analyze and recognize some content interests based on general navigation data.
But to go further with the analysis of your content interest audiences, we created in our targeting interface a table with both traffic and conversion data. And this is where the hit product integration comes in: to reconcile a specific product with a specific transaction, we need you to send us the right information when a visitor sees a product. With that good setup, you will be able to have precise conversion data for every content interest audience, and base your decisions on those every time you are setting up a campaign!
We are going to see how the hit JS event is built, with a quick overview of its key components.
The event uses the ‘window.abtasty.send’ function to call the global ‘abtasty’ object integrated into your website through the generic tag. This is how the collection will work. The script will pass some specific product data to our generic tag to be sent to our data pipeline. From this collection, we can build up services for you to leverage those data.
Inside the script, you will find a list of parameters that you will need to fill in to send us the appropriate data depending on your visitor's context. Some parameters are mandatory for some specific kind of hits, defined by the first parameter, the product interaction type (first line of the following table). Apart from that, to succeed in your implementation, you just need to respect the value type of each parameter and link the right data on your side to the right parameters. Let’s deep dive into each parameter:
For more information about the integration of the product hits, please refer to this specific .
AB Tasty lets you save the data related to transactions on your website (e.g., transaction amounts, payment methods, number of purchased items, average cart value, item price, etc.).
This data is available in the reports of each campaign in the form of indicators or filters. Please refer to the article Campaign reportings for further information.
The first thing to know about the transaction tag is that it is not a tag itself (as the generic tag can be) but rather a revenue tracker that must be placed on the order confirmation page (checkout page).
To send transaction data to AB Tasty and display it in the reports, you need to add the transaction tag to your purchase confirmation page after the generic AB Tasty tag.
There are 4 ways to implement the transaction tag:
Option 1 - which uses your dataLayer (Google Tag Manager, Tealium or CommandersAct to collect data (medium level of complexity)
Option 2: (advanced level of complexity - a developer is needed)
Option 3: (TMS - advanced level of complexity - a developer is needed)
Once the transaction tag is implemented on your website, you can go ahead and run the QA process. For further information, refer to .
This new method will replace progressively the .
It uses your dataLayer (Google Tag Manager, Tealium or CommandersAct) to collect transactional data.
For more information about how to use it, please refer to the following specific article :.
Advanced Level of Complexity – A Developer is Needed
You can create and code your transaction script you will then integrate into your confirmation page’s source code or your Tag Management System (e.g GTM or Tag Commander).
The transaction tag features two parts:
the first part enables the transmission of information related to the transaction (ID, name, amount, delivery fees, etc.)
the second part enables the transmission of item or product details related to purchases made by customers visiting your website.
You can use the code template provided below.
Follow the steps below to implement the transaction tag:
Copy all of the code below and paste it into your confirmation page.
This is the generic transaction tag. Variables are specific to your website.
Replace the __TRANSACTION_[OBJECT]__values with your data, available in your source code or data layer.
Apply the appropriate format to your values (string, float, or integer) as described in our .
Create a loop in the code so that it is triggered as many times as there are items in the transaction.
For Transaction Items, the key/value pair is unique to each item of the transaction.
If the transaction includes more than one item, the Transaction Items must be sent as many times as there are items in the transaction.
The Transaction Items must be sent independently for each item.
When implementing in the source code, we recommend the following:
the names of transaction and item parameters must not be modified;
when replacing the__TRANSACTION_[OBJECT]__ values, do not keep the opening or the closing double underscore `__`;
there should always be a comma, at the end of each line (except for the last line, for which it is not mandatory).
never place double “ ”
When implementing via a Tag Management System, we recommend the following:
always implement the generic tag in the first position at the top of the page, then execute it.
implement the transaction tag in the second position, i.e after the generic tag. Otherwise, the AB Tasty undefined error message will be displayed.
For more information about how to implement the transaction tag with your Tag management System, please refer to , which is relative to the transaction tag set-up in Google Tag Manager.
The enables to set-up your generic tag and to send transactional events to AB Tasty such as the transaction tag does it. Please refer to .
To secure the implementation of your tag on your domain and prevent its execution on any other domain, you have to define your account domain in your account settings.
To declare your domain(s), go on the page settings/ implementation/ generic tag.
Your domain is everything that goes before the first slash (the path) and after the potential subdomains.
Hence, if you have implemented your tag on www.my-website.com/fr , then the domain you need to set here is "my-website.com".
You can't save a domain that is not valid. Common mistakes are including a slash (/) or the protocol (https://).
You can restrict the tag implementation to a specific subdomain. In this case, the tag will refuse to execute on a subdomain that is not listed.
For example, you can set "www.my-website.com" and the tag will only execute on the root domain.
You can set "eshop.my-website.com" and the tag will only execute on this specific subdomain ("eshop").
If you decide to add a subdomain restriction because you have other AB Tasty accounts for the other subdomains, then we strongly advise you to make sure your is also up-to-date.
The tag will use the listed domain-s to set the tracking cookie.
If you have set your domain as `website.com`, the cookie will be set to `.website.com`.
However, if you have set your domain as `www.website.com`, the cookie will be set to `.www.website.com`.
The tag is always using the widest possible domain. If you have set `order.website.com` and `website.com`, the cookie will be set on `.website.com`.
Cookies are shared following the descending tree domain, but not the other way around!
In other words, cookies set on `.domain.com` will be shared with `.subdomain.domain.com` but cookies set on `.subdomain.domain.com` won't be shared with `.domain.com`.
Keep that in mind when setting up your domain and ensure this won't cause tracking issues.
For more information about AB Tasty cookies, please refer to the following .
Do not declare a subdomain if you don't have a good reason to do so!
A wrong or missing domain in the account settings can have an impact on the behavior of the tag on the website, hence impacting the campaign execution and data collection.
The tag will provide feedback about potential issues directly through its debug module.
First, you need to activate of your tag by creating the needed cookie. The easiest way to do that is to type the following command in your browser's console when you are on your website:
This will create a cookie named "abTastyDebug" with a value of "true". At the end of the QA, you can safely remove this cookie manually or by typing the following command:
Once the debug mode is active, the tag will start logging everything that happens regarding your campaigns, trackers and settings. This might seem overwhelming depending on the amount of campaigns you have, however, the information you are looking for about the domain restriction will always be displayed at the very beginning of the AB Tasty logs. You can scroll up until the very beginning of it.
No specific log will be displayed. The tag will log its usual information and everything will run as expected.
The tag will specify that the current domain it is operating on does not match its configuration. However, it will continue its regular execution without any other impact.
This probably means that either you set the wrong domain (check the spelling) or you forgot to include one or all subdomains.
For example, if you have put "www.mywebsite.com", all subdomains will be excluded. Put "mywebsite.com" if you want them all to be included.
Also, if you have put "eshop.mywebsite.com", only "mywebsite.com" and "eshop.mywebsite.com" will be considered valid domains for the tag to execute.
Please refer to the matrix above to adjust your settings.
The tag will throw an error saying that it has stopped. No campaign will be displayed to anyone and no data will be collected. You must fix your configuration in your AB Tasty account immediately and refresh your tag.
We encourage you, as part of the QA, to check all your domains (including subdomains) on which your tag is implemented.
Note that, by default, the abTastyDebug cookie will be set on the root domain where you have entered the command line. If you don't see the debug logs, make sure the cookie exists and repeat the cookie insertion.
const sendProductHit = (cartContent) => {
const hitToSend = {
pit: "CART_ITEM", // Or “VIEW” if you are integrating the content interest
pcid: cartContent.id,// This is an example. You need to replace this variable with the right one corresponding to the cart ID on your website context. Not useful for content interest
pq: cartContent.quantity, // This is an example. You need to replace this variable with the right one corresponding to the number of products on your website context. Not useful for content interest
pp: cartContent.price, // This is an example. You need to replace this variable with the right one corresponding to the product price on your website context. For both abandoned cart and content interest.
ps: cartContent.sku, // This is an example. You need to replace this variable with the right one corresponding to the product SKU on your website context. For both abandoned cart and content interest.
pn: cartContent.name // This is an example. You need to replace this variable with the right one corresponding to the product name on your website context. For both abandoned cart and content interest.
};
window.ABTasty.send('PRODUCT', hitToSend);
}
const getCartContent = () => {
const cardContent = window.dataLayer[0].cardContent; // This is an example using a datalayer event to listen to for the “add to cart” event. You need to replace this variables with the right one corresponding to the cart content object on your website context
return cardContent;
}
const waitForABTasty = () => { // This is a security to make sure we wait for ABTasty to load before firing the event. No need to keep it. If you keep, no changes expected for this function
if (
// Waiting for AB Tasty to be ready to track hits
typeof window.ABTasty !== 'undefined' &&
typeof window.ABTasty.eventState !== 'undefined' &&
!!window.ABTasty.eventState['tagContentExecuted'] &&
window.ABTasty.eventState['tagContentExecuted'].status === 'complete'
) {
sendProductHit(cartContent(getCartContent()));
} else {
window.addEventListener('abtasty_tagContentExecuted', sendProductHit(getCartContent()));
}
}
window.addEventListener('add_to_cart', waitForABTasty); // The “add to cart” is an example, you can replace it with the real add to cart event of your website context When a user submits their shipping information during checkout.
Useful for analyzing the shipping step in the checkout process.
checkout_started
When a user initiates the checkout process.
Helps in identifying the number of users who start the checkout process.
collection_viewed
When a user views a product collection page.
Helps in tracking user interest in different product categories.
page_viewed
Whenever a user views a page on the site.
Essential for understanding user navigation and page popularity.
payment_info_submitted
When a user submits their payment information.
Crucial for tracking the payment step in the checkout process.
product_added_to_cart
When a user adds a product to their cart.
Helps in analyzing product interest and cart additions.
product_removed_from_cart
When a user removes a product from their cart.
Useful for understanding cart abandonment behavior.
product_viewed
When a user views a product page.
Helps in tracking product interest and engagement.
search_submitted
When a user performs a search on the site.
Helps in understanding user search behavior and popular search terms.
Event name
Description
Usage
cart_viewed
When a user views their shopping cart.
Helps track user engagement with the cart page.
checkout_address_info_submitted
When a user submits their address information during the checkout process.
Useful for tracking the progression through the checkout stages.
checkout_completed
When a user successfully completes a purchase.
Crucial for tracking conversions and sales performance.
checkout_contact_info_submitted
When a user submits their contact information during checkout.
Helps in understanding user interactions at this stage.





checkout_shipping_info_submitted













Coincides with the number of products inside the visitor cart
Yes
‘pp’ (product price)
Float value. This parameter accepts any numbers
Coincides with:
The product price for the ‘CART_ITEM’ scenario
The total cart amount for the ‘CART_TOTAL’ scenario
Yes
‘ps’ (product SKU)
String value.
Coincides with the ID of the product concerned with the page view or product put into the cart
Yes
‘pn’ (product name)
String value
Coincides with the name of the product. It should be an exhaustive reference to the product concerned with the visitor's action
No
‘pn’ (product name)
String value
Coincides with the name of the product. It should be an exhaustive reference to the product concerned with the visitor's action
No (but recommended)
Parameter
Value
Definition
Mandatory
Example
‘pit’ (product interaction type)
Two values are possible:
‘CART_ITEM’: when a new item is added to your visitor card
‘CART_TOTAL’: when you want to declare an entire cart being initiated
Coincides with the type of action we want to track.
Yes
‘pcid’ (product cart id)
String value. You can insert here the ID of the cart you are collecting
Coincides with the ID of the cart initiated by your visitor.
Yes
‘Pq’ (product quantity)
Parameter
Value
Definition
Mandatory
‘pit’ (product interaction type)
‘VIEW’: when a product is being viewed by your visitor. The hit we are about to collect is about a visitor that is viewing a specific product during its navigation.
This is a default value that you won’t have to change.
Yes
‘pp’ (product price)
Float value. This parameter accepts any numbers
Coincides with the product price the visitor is seeing
No (but recommended)
‘ps’ (product SKU)
String value.
Coincides with the ID of the product being viewed
Yes
Integer value. This parameter accepts only numbers
Coincides with the number of products inside the visitor cart
Yes
‘pp’ (product price)
Float value. This parameter accepts any numbers
Coincides with:
The product price for the ‘CART_ITEM’ scenario
The total cart amount for the ‘CART_TOTAL’ scenario
Yes
‘ps’ (product SKU)
String value.
Coincides with the ID of the product concerned with the page view or product put into the cart
Yes
‘pn’ (product name)
String value
Coincides with the name of the product. It should be an exhaustive reference to the product concerned with the visitor's action
No
‘pn’ (product name)
String value
Coincides with the name of the product. It should be an exhaustive reference to the product concerned with the visitor's action
No (but recommended)
Parameter
Value
Definition
Mandatory
Example
‘pit’ (product interaction type)
Two values are possible:
‘CART_ITEM’: when a new item is added to your visitor card
‘CART_TOTAL’: when you want to declare an entire cart being initiated
Coincides with the type of action we want to track.
Yes
‘pcid’ (product cart id)
String value. You can insert here the ID of the cart you are collecting
Coincides with the ID of the cart initiated by your visitor.
Yes
‘Pq’ (product quantity)
Parameter
Value
Definition
Mandatory
‘pit’ (product interaction type)
‘VIEW’: when a product is being viewed by your visitor. The hit we are about to collect is about a visitor that is viewing a specific product during its navigation.
This is a default value that you won’t have to change.
Yes
‘pp’ (product price)
Float value. This parameter accepts any numbers
Coincides with the product price the visitor is seeing
No (but recommended)
‘ps’ (product SKU)
String value.
Coincides with the ID of the product being viewed
Yes
Integer value. This parameter accepts only numbers
Option 4: With the Shopify app (one click activation) if you are using Shopify as your CMS.
implement the transaction tag at the bottom of the page - far from the generic tag. The transaction tag does need to be triggered after the generic tag. However, placing it at the bottom of the page will ensure the generic tag has fired already and that all values the transaction tag relies on have loaded as well.
no
You must not input the path (/xxx)
Input
Validity
Comment
example.com
yes
The tag will execute on example.com and all its subdomains.
sub.example.com
yes
The tag will only execute on sub.example.com and corresponding subdomains (eg. eshop.sub.example.com).
www.example.com
yes
The tag will execute on www.example.com only, excluding all others subdomains.
https://example.com
no
You must not input the protocol (http.s).
Set domain-s
Risk
Comment
website.com
No
The cookie will be set on .website.com
order.website.com website.com
No
The cookie will be set on .website.com. You should remove the subdomain as it is already included in the domain.
Visitors will be tracked along all subdomains.
order.website.com www.website.com
Yes
The cookie will be set either on order or on www, depending on where it is currently executed. Both cookies won't be shared. A visitor on order won't be recognized on www.
We strongly advise you to make sure this is what you want.
website.com other-website.com
No
Cookie will be set depending on the domain it is currently executed.





example.com/en_GB
Good to Know 💡
This feature is currently available only to new clients and AB Tasty accounts not using the legacy Transaction Tag Generator feature. If you need access, please contact your Customer Success Manager (CSM).
The page of transaction trackers enables you to create some transaction tracker rules directly linked to your DataLayer.
Thanks to this feature, you will be able to catch all purchase events based on the rules of the DataLayer. Each time one of your visitors complete one transaction, an automatic hit will be sent into the goals metrics page, and you’ll be able to analyze them:
Inside the reporting
To extract them from our Data Explorer
To create a Custom Tracker via DataLayer you must toggle on the button from the , select a DataLayer and save the step:
The available DataLayers are the following:
Google Tag Manager
Tealium
CommandersAct
Heads Up❗- Custom DataLayers
We don’t manage Custom DataLayers as we can’t predict its structure, we only support GTM, CommandersAct and Tealium providers.
If you use Google Tag Manager as a DataLayer. This feature is based on the documentation provided by Google here:
Here is a basic structure of one GTM purchase event:
That’s why, once an order is made on your website and once a purchase event is triggerred on your DataLayer, the event must be pushed inside your Google Tag Manager DataLayer this way (see items 10 of this DataLayer):
To create a new rule of Transaction tracker via DataLayer:
From the Transaction Tracker page (Settings > Implementation > Transaction Tracker Management) :
Click New Transaction Tracker on the top right of the table. A modal is displayed:
Good to Know 💡- Custom keys in your DataLayer
In order to avoid bugs or wrong configuration, and if you have some basic GA4 event, most of the inputs are already set up by default.
Please verify them and, if needed, enter the correct information in order to have a match between our keys (name of the field you can have on this modal and the keys/values provided by the GA4 event purchase).
Mandatory Fields:
Specify the event to check: By default, the name of this event is purchase. But it can be another one, and it’s not necessary to enter “purchase”. You need to define which event corresponds to your own purchase event on your datalayer. (e.g : transaction_collected, achat, checkout_completed, etc ..)
Enter a name for your Transaction Affiliation (ta) : Here you can define a name of the transaction. It’s not necessary to enter “purchase” (but you can). You can enter the name of your choice.
Transaction ID (tid)* : Refers to the transaction_id field (ex : T_12345_2 of the event inside ).
Optional Fields:
In addition to the required fields, you can add some optional fields in order to have more details inside your transaction.
Shipping (ts) : Refers to the shipping field (ex : 5.99 of the event inside ).
Transaction tax rate (tt) : Refers to the tax field (ex : 4.90 of the event inside ).
Currency (tc): Refers to the currency field (ex : USD of the event inside ).
If you have some purchase events from GA4 with the same structure as in the screenshot (or inside the documentation of GA4), you don’t need to edit the fields. The only action you have to is:
Define one Transaction Name (not necessarily purchase. It’s at your discretion)
Click Save
You can have another structure for your purchase event. The only requirement is that the name of the event must be purchase.
USE CASE 1
If you have another structure, you could define by yourself the correct key. Let’s imagine you have one purchase event with this structure:
You must enter the correct values inside the input. To illustrate and to track Coupon code (tcc) the correct input in our modal would be as follows: Coupon Code (tcc) : coupon_discount
USE CASE 2 (Managing the dot (“.”) inside a key
For any reason, you could have another structure with some sub-objects. Let’s imagine your purchase event has this kind of structure:
If you have some sub-objects, we are able to retrieve the associated value. Indeed, thanks to the dot (“.”), you can go inside a deeper object. That’s why, for this case, you could configure the rule of transaction tracker like this: order.coupon
Once a transaction is done on your website, and the purchase event is pushed inside your DataLayer, automatically, an AB Tasty hit (ariane.abtasty.com) is also sent into our AB Tasty collect. You can check it inside the network tab:
A TRANSACTION hit will be sent into your AB Tasty account.
Once a TRANSACTION hit is sent into your AB Tasty account, you will retrieve the transaction affiliation inside your Goal manager.
On this page : , all transaction affiliations are available.
Here an example of a transaction affiliation based on the transaction rule you have set up with the transaction tracker. You can see that the name of the transaction affiliation is exactly the same as the name of the transaction tracker you configured before.
The transaction affiliation will be displayed as soon as a few transaction hits will be sent into your AB Tasty account via our collect (cf. checking the AB Tasty hit).
As soon as a transaction affiliation is available, you are able to:
Add the transaction tracker as a goal for your campaigns
Export the listing of all your transactions from the Data Explorer.
Technical documentation about cookies and browser storage can be found here
HTTP-Only cookie are cookies that can’t be read in JavaScript. With the AB Tasty tag, you can’t access, read or modify an HTTP-Only cookie. Remember to target a non-HTTP-only cookie for your privacy settings.
The AB Tasty tag uses cookies and browser storage to retain data about visitors to your websites. The cookie stores the visitor’s ID (used to determine unique visitor counts), plus their campaign history, timestamp history for all sessions, and several other useful parameters.
In local storage, it records data to track each visitor’s navigation history: viewed pages, transactions, events, and the segments they belong to.
In session storage, the AB Tasty tag keeps the temporary data it gets from our external services such as geolocation, weather information, and user agent.
Find more information about data storage in .
AB Tasty uses first-party cookies that are defined by the URL of the website using AB Tasty. Cookies enable AB Tasty to work properly and guarantee campaign reliability by recognizing each time a unique visitor lands on the website (AB Tasty can remember if a visitor has been to the site before, without actually knowing the identity of each visitor).
Cookies log the campaign variation that the visitor has been previously assigned to, so it’s able to direct them back to the same variation for future visits. This system avoids behavioral differences and misleading results. These cookies don’t store any information about the visitor’s identity.
AB Tasty relies on two different cookies to collect and store data about visitors: and . AB Tasty also uses to operate properly. Read more about this in the corresponding section below.
This is a first-party cookie that has a lifetime of 13 months. The ABTasty cookie has two parts:
The first part includes data and details about the visitor:
The second part includes information about the campaign the visitor has been allocated:
This is a first-party cookie. Its lifetime depends on the duration of the session (a session ends after 30 minutes of inactivity on the website). Its purpose is to collect information about each user’s session.
A fourth parameter may be present: the referrer. This stores the URL the visitor came from before landing on the website. This data is only available when the “” or “” criteria are being used in the targeting of an active campaign.
AB Tasty enables you to modify a cookie’s validity period. To do so, go to: Settings > Implementation > Cookies & privacy > Cookie settings.
Switching from Cookie to Local Storage should not lead to any issues. It activates an automatic data migration from the Cookie to the Local Storage and vice-versa. However, the Local Storage method is not compatible with cross-domain tracking (article - section Specific implementation). When choosing Local Storage, data can’t be shared between subdomains. For more, please refer to the complete section about storage.
When a visitor doesn’t want to be assigned to any campaigns, they can opt out by adding the #abtastyoptout=1 parameter to the end of the website URL. For example: http://www.abtasty.com/#abtastyoptout=1
This creates a cookie in their browser that stores the opt-out information. For more information about this, refer to
The tag is setting several cookies to validate that it will be operational on the website. Some cookies tracking third-party tools might also discover the regular ABTasty and ABTastySession cookies even without consent being granted. This is because of how it is technically working, as explained in the section below.
These technical cookies are not used to store visitor's data and don't even contain anything for most of them. Moreover, their lifetime never exceeds a few milliseconds.
AB Tasty can't work with cookies. To avoid crashing and sending unexpected error messages, the tag first checks if it can write cookies in the current session.
The ABTasty cookie is created with a dummy value and then immediately removed if it succeeded.
If the operation is failing, the tag will stop its execution and logs the information if you are using the .
The tag then validates which domain it is executing on and if it matches its settings. This is done to avoid any tracking issues or unexpected further failures.
It creates the ABTastyDomainTest cookie with no value. If the operation is a success, it is immediately removed.
If the operation failed, the tag won't go further and will log the information if you are using the .
If consent is lost during the visitor's journey, AB Tasty has to erase all data stored for this visitor. To avoid losing any time and not risk any failure in this process, the tag doesn't bother checking if there is already existing data.
All cookies are erased, whether or not they exist. This means that the tag is setting both ABTasty and ABTastySession cookies with an already-expired date. For the browser, this consists of creating a cookie that is immediately removed due to its expiration date.
This results in both cookies being declared even without consent and for a very short period of time (in microseconds).
Some cookies tracking third-party tools might detect these "ghost" cookies without consent. We advise setting a lifetime threshold to filter them out.
For full technical information about AB Tasty cookies and storage, read the .
The cookie deposit method enables you to manage the way information about your visitors is collected on your website.
You can manage cookies and AB Tasty’s tag through the following three sections:
Secure cookies
Restrict cookie deposit
Storage method
For details about the best implementation method regarding your needs, please refer to this specific article: .
Heads up ⚡
Changing the cookie privacy settings while one or several campaigns are live may revoke the consent collection of your tested visitors at their next session on your website. It may also permanently erase all stored data (e.g. cookies, campaign history, events history, etc.).We recommend you configure your preferences once and do not modify them afterward.
To access the cookie deposit method, follow these steps:
Go to the dashboard and click , then click Settings
Click Cookies > Cookie deposit method
This option enables you to manage cookies on the pages of your website. Secure cookies can only be transmitted via the HTTPS protocol. HTTPS is a secure encrypted protocol aimed at increasing the security of data transfer.
By default, this option is disabled (the button is toggled to NO). This means that cookies are deposited on both the HTTPS and HTTP pages. When you enable this option (toggle the button to YES), cookies are deposited and usable on HTTPS pages only.
Generally speaking, many websites use HTTPS on all pages. In this case, we recommend enabling the secure cookie option. However, some websites still use HTTP pages, which is less secure. In this case, we recommend leaving the option disabled.
Some websites use HTTPS on most pages but still have some HTTP pages. In this case, if you choose to enable secure cookies (toggle the button to YES), HTTP pages won’t be tracked as the tag is not able to set an HTTPS cookie. This may become an issue for data collection and is not recommended.
This section enables you to choose how your visitor information is stored. By default, AB Tasty uses cookies to store all the information that will be displayed in your campaign reports. However, you can choose to use Local Storage to store your visitor data.
This is the default option. Data related to visitors is stored in cookies placed on their browsers. When a visitor lands on a website that uses our platform, AB Tasty automatically places an ABTasty cookie on their browser to collect information such as the visitor’s ID, the campaign ID, the variation ID, etc. For each of the visitor’s sessions, an ABTasty.sessioncookie is also placed on the browser.
This option enables you to store data in your visitor’s localStorage browser instead of cookies. This can be useful for websites where cookies have weight restrictions, as it makes your cookies lighter. If you select this option, AB Tasty renounces the use of cookies, although the option remains available in the interface.
The restrict cookie deposit option enables you to manage the AB Tasty tag’s behavior to comply with regulations and adapt the configuration to user specificities. Since the implementation of the Guidelines on consent under Regulation 2016/679 (GDPR) by the European Data Protection Board on May 4, 2020, you have a legal obligation to ask your visitors for their explicit consent before tracking them and collecting their personal information through the acceptance of a cookie banner (either fully or partially).
Moreover, you must provide proof of this consent and AB Tasty must help you do so.
As soon as consent is given, proof of this consent is automatically sent to AB Tasty’s servers and stored for 13 months.
Stored consent information includes the date and time, the condition and mode used, the visitor ID, and the perimeter.
It remains your full responsibility to implement the cookie banner on your website and make its content compliant with local data protection regulations.
In the page in the settings, you must select one of these three options:
Not restricting cookie deposits. This means no consent is requested from the visitors and the campaign is automatically displayed and data tracked. Select this option only if your country / geographical area does not require you to ask for consent before collecting data.
Managing the consent proper to AB Tasty within a third-party tool, such as a TMS. In this case, the TMS automatically checks the visitor’s consent before triggering the tags it contains. Proof of consent will still be collected; however, the consent will specify that it was collected by an uncited third-party source.
Delegating the consent to the AB Tasty. In this case, the tag will try to determine whether the visitor gave their consent on the website before tracking them and collecting their data.
For more information about how to choose the right configuration for your cookies deposit choice, please refer to the following .
window.abtasty.send("product", {
pit: "CART_ITEM",
pcid: yourCartIDVariable,
pq: yourProductQuantityVariable,
pp: yourProductPriceVariable,
ps: yourProductSKUVariable,
pn: yourProductNameVariable
});pit:“CART_ITEM”;pcid: “CARTPROD0001”;window.abtasty.send("product", {
pit: "VIEW",
pp: yourProductPriceVariable,
ps: yourProductSKUVariable,
pn: yourProductNameVariable
});window.abtasty.send("product", {
pit: "CART_ITEM",
pcid: yourCartIDVariable,
pq: yourProductQuantityVariable,
pp: yourProductPriceVariable,
ps: yourProductSKUVariable,
pn: yourProductNameVariable
});pit:“CART_ITEM”;pcid: “CARTPROD0001”;window.abtasty.send("product", {
pit: "VIEW",
pp: yourProductPriceVariable,
ps: yourProductSKUVariable,
pn: yourProductNameVariable
});// transaction tag
<script>
window.abtasty.send(“transaction”, {
tid: __TRANSACTION_ID__, // Format: STRING, value example: “OD564"
ta: __TRANSACTION_NAME__, // Format: STRING, value example: “Purchase”
tr: __TRANSACTION_REVENUE__, // Format: FLOAT, value example: 15.47
ts: __TRANSACTION_SHIPPING__, // Format: FLOAT, value example: 3.5
tt: __TRANSACTION_TAXES__, // Format: FLOAT, value example: 2.60
tc: __TRANSACTION_CURRENCY__, // Format: STRING, vLicalue example: “EUR”
tcc: __TRANSACTION_COUPON_CODE__, // Format: STRING, value example: “Coupon”
pm: __TRANSACTION_PAYMENT_METHOD__, // Format: STRING, value example: “Paypal”
sm: __TRANSACTION_SHIPPING_METHOD__, // Format: STRING, value example: “Fedex”
icn: __TRANSACTION_ITEM_COUNT_NUMBER__ // Format: INTEGER, value example: 12
});
</script>
// transaction items tag
<script>
window.abtasty.send(“item”, {
“tid”: __TRANSACTION_ID__, // Format: STRING, value example: “OD564”
“in”: __TRANSACTION_ITEMS[i].ITEM_NAME__, // Format: STRING, value example: “Shoe”
“ip”: __TRANSACTION_ITEMS[i].ITEM_PRICE__, // Format: FLOAT, value example: 3.5
“iq”: __TRANSACTION_ITEMS[i].ITEM_QUANTITY__, // Format: INTEGER, value example: 4
“ic”: __TRANSACTION_ITEMS[i].ITEM_CODE__, // Format: STRING, value example: “SKU47”
“iv”: __TRANSACTION_ITEMS[i].ITEM_CATEGORY__ // Format: STRING, value example: “Blue”
});
</script>document.cookie="abTastyDebug=true;path=/;";document.cookie="abTastyDebug=true;path=/;expires=Thu, 01 Jan 1970 00:00:00 GMT;";Transaction revenue (tr)*: Refers to the value field (ex : 30.03 of the event inside this doc).
Number of items (icn)* : Refers to the items field. If you select:
Default : If you have one key with the number of items. Let’s imagine a key items_count. This key should be a number.
Sum : If your key contains the quantity of each purchased item, select Sum (ex : 3).
Count : If your key contains unitary purchased items, select Count. (ex : 1).
Coupon Code (tcc): Refers to the coupon field (ex : SUMMER_SALE of the event inside this doc).
Payment method (pm): Define which method the visitor uses to pay. There’s no native link with the purchase method of GA4.
Shipping method (sm): Define which shipping method the visitor wants to have. There’s no native link with the purchase method of GA4.
Array of items (items): Coincides with the key corresponding to the array of objects of all items purchased during the transaction and their information. Allows you to define the following:
Item name (in) : Coincides with the name of the item purchased.
Item price (ip) : Coincides with the price of the item purchased.
Item quantity (iq) : Coincides with the number of times an item was purchased during the transaction.
Item SKU (ic) : Coincides with the product reference (SKU or product ID) of the item purchased.
Item category (iv) : Coincides with the category of the item purchased.




gtag("event", "purchase", {
transaction_id: "T_12345_2",
value: 30.03,
tax: 4.90,
shipping: 5.99,
currency: "USD",
items_count: 3
coupon: "SUMMER_SALE",
items: [
{
item_id: "SKU_12345",
item_name: "Stan and Friends Tee",
affiliation: "Google Merchandise Store",
coupon: "SUMMER_FUN",
discount: 2.22,
index: 0,
item_brand: "Google",
item_category: "Apparel",
item_category2: "Adult",
item_category3: "Shirts",
item_category4: "Crew",
item_category5: "Short sleeve",
item_list_id: "related_products",
item_list_name: "Related Products",
item_variant: "green",
location_id: "ChIJIQBpAG2ahYAR_6128GcTUEo",
price: 10.01,
quantity: 3
}]
});
});gtag("event", "purchase", {
transactionID: "T_12345_2",
value: 30.03,
tax: 4.90,
shipping: 5.99,
curr: "USD",
coupon_discount: "SUMMER_SALE",
articles: [.....]
});
});gtag("event", "purchase", {
transaction : {
id: T_12345_2
},
financial : {
tax: 4.90,
value: 30.03,
shipping: 5.99,
tax: 4.90,
curr: "USD",
},
order: {
coupon: "SUMMER_SALE",
},
articles: [...]
});QA and validate your AB Tasty tag
Learn how to check your implementation






pq: “5”;pp: “15.99”;ps: “ECOMPROD0001” pn: “Super basket 5008” pq: “5”;pp: “15.99”;ps: “ECOMPROD0001” pn: “Super basket 5008” 
Manage users and their privileges in this page.
The users tab is displayed by default for super admins when landing on the page.
The Organization checkup section displays the inactive and unsecured users to enable you to view at a glance users that may require an action.
Inactive users are those who have not logged in to AB Tasty in the past 3 months.
Unsecured users are those who have no MFA method setup.
By clicking "review list" for any of the two categories, the table below will be filtered to display only inactive or unsecured users.
The list of users (table) allows you to manage all your organization users, regardless of which AB Tasty account they're registered with. We gave the super admin new tools to easily manage widely:
User creation
User accesses
And user rights
All in one place, with easy search and filtering features for you to look actively for the right user.
To create a new user inside your organization, you can click “Add user” at the top of the page.
Inside a dedicated popin, you’ll then be able to add one to X new user(s) by filling in the following information:
New user email address
New user role (please refer to our dedicated section for detailed explanation about our different user roles)
Accounts on which the new user will be able to work on
You can add as many users as you want: this tool gives you the ability to add multiple users in just one manipulation, simply by clicking on the “Add user CTA”.
When adding multiple users at the same time, you can choose a different role for every user, but the account(s) on which they will be able to work on will be the same.
Once added, the new user (through the email you declared) will receive an email inviting him to log in to the platform (through an expirable link), to finalize its inscription.
Through the table, you can review every user that is working on your organization. By hovering over a specific user inside the table, you will be able to see two icons, the pen icon to edit the user rights, and the trash icon to delete the user from your organization.
Clicking on the trash icon will permanently delete the user from your organization (meaning from all accounts he had previously access to). Once you click on the icon, a popin will appear and ask you to confirm this permanent deletion for the concerned user.
You can select multiple users by clicking the checkboxes left to each user line, to delete permanently from your organization multiple users at once.
By clicking on the pen icon, we will display you the current state of this user rights. One column is dedicated to the accounts he has access to, and the other one is for the role related to this specific account. You can consider multiple different actions from there:
Add new account(s) on this user configuration, by clicking the “add account” call to action. You will have to define his rights on this new account
Remove access to a specific account, by clicking the cross icon left to the account you want to remove him from
Change the role a user have on a specific account, by selecting a different one inside the role dropdown (for example going through user to admin, and letting him manage the reporting)
And many more actions (or even all three listed above at once)
By hovering over any line of the table, you will notice a reset icon enabling you to reset the MFA method of a user.
By clicking the icon, a confirmation popin is displayed. If you confirm, the user will have to .
Performing this action can be useful for example when a user has lost their MFA device or backup codes.
Only a super admin can reset the MFA method of a user.
The super admins tab enables you to manage super admin rights. Super admin is the highest level of user management in our platform. They are the only role that has full ownership over the organization settings.
You will find every organization's super admin listed in a dedicated table. From there, you can perform two actions:
Revoke one’s super admin access by clicking on the trash icon appearing on hover to each super admin reference line inside the table. Revoking a super admin will automatically downgrade the user to the admin role. For a complete deletion, you will need to proceed with it from
Add a new super admin
To add a new super admin, you just have to click on the add super admin CTA, on the super admin table’s top right corner. Once you do that, you have two ways to validate a new super admin.
The first option allows you to upgrade an existing user to the super admin role. On click to the “add super admin” popin email field, we will display the complete list of all your users on the organization level. From there, you can select the one you want to upgrade as super admin, or refine you search to look for a specific user
The second option allows you to directly create a new user as a super admin. To do that, you just need to enter the right email address. This will be a new creation, and the new added user will go through our new user process: he will receive an email to connect and create its password, and will be directly a new super admin on your organization.
The following tables list the rights associated with each role. These rights are the same for tests and personalization campaigns.
❌
Modify a campaign (name, editor, targeting, traffic allocation, third party tools)
✅
✅
✅
✅
❌
Archive a campaign
✅
✅
✅
❌
❌
Launch a campaign
✅
✅
✅
❌
❌
Pause a campaign
✅
✅
✅
❌
❌
Schedule a campaign
✅
✅
✅
❌
❌
Duplicate a campaign
✅
✅
✅
✅
❌
Delete a campaign
✅
✅
✅
❌
❌
Add a campaign to a folder
✅
✅
✅
✅
❌
Remove a campaign from a folder
✅
✅
✅
✅
❌
Add a label to a campaign
✅
✅
✅
✅
❌
Remove a label from a campaign
✅
✅
✅
✅
❌
❌
Modify a folder
✅
✅
✅
✅
❌
Delete a folder
✅
✅
✅
✅
❌
Update script
✅
✅
✅
❌
❌
✅
Create a goal
✅
✅
✅
✅
❌
Modify a goal
✅
✅
✅
✅
❌
Delete a goal
✅
✅
✅
✅
❌
Add a filter
✅
✅
✅
✅
❌
Modify a filter
✅
✅
✅
✅
❌
Delete a filter
✅
✅
✅
✅
❌
Refresh tag
✅
✅
✅
❌
❌
Launch / pause the campaign
✅
✅
✅
❌
❌
Clear data
✅
✅
✅
❌
❌
Access Clarity Session Recording
✅
✅
✅
✅
✅
Access Clarity Heatmap
✅
✅
✅
✅
✅
Export aggregated data
✅
✅
✅
✅
❌
Export raw data
✅
✅
✅
✅
❌
❌
Manage organization page settings (MFA activation for all accounts, manage user rights on all account at once)
✅
❌
❌
❌
❌
Access account management section
✅
✅
✅
✅
❌
Access general information page
✅
✅
❌
❌
❌
Access user rights page
✅
✅
❌
❌
❌
Access page builder
✅
✅
✅
✅
❌
Access account JavaScript page
✅
✅
❌
❌
❌
Access transaction indicators management page
✅
✅
✅
✅
❌
Access profile section
✅
✅
✅
✅
✅
Access personal information page
✅
✅
✅
✅
✅
Access settings section
✅
✅
✅
✅
✅
Access tags implementation subsection
✅
✅
✅
✅
❌
Access generic tag page
✅
✅
✅
✅
❌
Access generic tag for Chinese audience page
✅
✅
✅
✅
❌
Access transaction tag page
✅
✅
✅
✅
❌
Access framework page
✅
✅
❌
❌
❌
Access cookies subsection
✅
✅
❌
❌
❌
Access cookie deposit method page
✅
✅
❌
❌
❌
Access cookie domain page
✅
✅
❌
❌
❌
Access cookie path page
✅
✅
❌
❌
❌
Access advanced settings subsection
✅
✅
❌
❌
❌
Access data export page
✅
✅
❌
❌
❌
Access cross domain page
✅
✅
❌
❌
❌
Access IP exclusion page
✅
✅
❌
❌
❌
Access 1 visitor 1 test page
✅
✅
❌
❌
❌
Access visitor attributes page
✅
✅
❌
❌
❌
Access sensitive data page
✅
✅
❌
❌
❌
Access URLs grouping page
✅
✅
❌
❌
❌
Access redirect parameters page
✅
✅
❌
❌
❌
Access public API page
✅
✅
❌
❌
❌
Access integrations section
✅
✅
❌
❌
❌
Access web analytics page
✅
✅
❌
❌
❌
Access DPM page
✅
✅
❌
❌
❌
Access data layer integration page
✅
✅
❌
❌
❌
Access experience analytics page
✅
✅
❌
❌
❌
Access performance center page
✅
✅
❌
❌
❌
✅
❌
Create a new NPS
✅
✅
✅
✅
❌
Modify an NPS
✅
✅
✅
❌
❌
Delete an NPS
✅
✅
✅
❌
❌
Launch an NPS (make it run)
✅
✅
✅
❌
❌
Pause an NPS
✅
✅
✅
❌
❌
Access the NPS report
✅
✅
✅
✅
❌
Action
Super Admin
Admin
User
Creator
Viewer
Create a campaign
✅
✅
✅
Action
Super Admin
Admin
User
Creator
Viewer
Create a folder
✅
✅
✅
Action
Super Admin
Admin
User
Creator
Viewer
Access the report
✅
✅
✅
Action
Super admin
Admin
User
Creator
Viewer
Access organization management section
✅
✅
❌
Action
Super Admin
Admin
User
Creator
Viewer
Access ROI dashboard page
✅
✅
✅
Action
Super Admin
Admin
User
Creator
Viewer
Access an NPS
✅
✅
✅











✅
✅
✅
❌
✅
✅