LogoLogo
PlatformsPricingRessources
  • User documentation
  • Onboarding
  • Help Center
  • Release Notes
  • Welcome to AB Tasty documentation
  • Dashboard
    • Global Experience Dashboard discovery
    • How to filter the Global Experience Dashboard
    • How to customize your Global Experience Dashboard
    • Uplift card
  • Web Experimentation and Personalization
    • Campaign creation and dashboard
      • Types of campaigns
        • Choosing the right type of campaign with Ally, our assistant
      • How to create a campaign
        • Experimentations
          • How to create an A/B Test
          • How to create a Multipage Test
          • How to create a Split Test/Test by Redirection
          • How to create an A/A Test
          • How to create a Patch / Multipage Patch
          • How to create a Multivariate Test
        • Personalizations
          • How to create a Multi-Experience Personalization
          • How to create a Multipage Personalization
          • How to create a Simple Personalization
      • Campaign duplication
        • How to duplicate a campaign
      • How to set-up Main Information step
      • Understanding campaign duration
      • Campaign loading (deferred/ instant)
      • The "Comment" section of the campaign creation flow
      • Campaign statuses
      • How to exclude IP addresses from your campaigns
      • How to use MDE Calculator
      • Campaigns Dashboard
      • Campaign Scheduler
      • Mutually Exclusive Experiments
      • How to use Campaign Prioritization
        • Prioritization of Personalizations
    • Editors and Widget
      • How to create and edit content in the visual editor
      • How to use our Visual Editor - Interactive demo
      • Discovering the Visual Editor
      • Visual editor - History and review of modifications
      • Code Editor
      • Using the Editor Copilot
      • Prompt Inspiration library for Visual Editor Copilot
      • How to create an Action Tracker in the editor
      • How to use redirection option
      • How to create trackers in the editor
      • Widgets
        • Widgets configuration in the visual editor
        • AB Tasty prebuilt Widgets
          • Action Button Widget
          • Banner Widget
          • Before-After Image Widget
          • CSAT Widget
          • Celebrate Widget
          • Countdown widget
          • Drawer Widget
          • Dwell Time Tracking Widget
          • Element Visible Tracking Widget
          • Iframe Click Tracking Widget
          • IFrame Widget
          • Image Pop-in Widget
          • NPS® (Net Promoter Score) Widget
          • Progress Bar Widget
          • Scratch card Widget
          • Scroll Rate Tracking Widget
          • Search & Replace Widget
          • Simple Popin Widget
          • Snowflake Animation Widget
          • Social proof Widget
          • Social Sharing Widget
          • Spotlight Widget
          • Sticky Element Widget
          • Tooltip Widget
          • Video Pop-in Widget
          • Virtual Click Widget
        • Custom widget
          • Custom Widgets: List of propname Fields and Their Specificities
          • Custom widgets: Global usage and information
        • Custom code widget
      • Chrome extension
      • Shadow DOMs & iFrames
        • Understanding Shadow DOM
        • How to edit Shadow DOM in the visual editor
        • Understanding iframes
        • How to edit Iframes in the visual editor
    • Goals step
    • Targeting step
      • How to set up a campaign Targeting
      • How to create a Segment (Who section)
      • How to define Targeted Pages (Where section)
      • How to create a Trigger (How section)
      • How to define a Targeting Frequency (When section)
      • How to set-up targeting verifications
      • How to use the replicate targeting option
      • How to use URL operators to build URL patterns
    • Traffic allocation step
      • Campaign flow: Traffic Allocation step
      • Dynamic allocation
      • Even allocation
    • Advanced Options step
      • Sequential Testing Alerts
    • QA step
      • QA Mode & QA Assistant
        • How to use the QA mode
        • How to use the QA Assistant on desktop
        • How to use the QA Assistant on mobile
      • How to use the browser console to QA a campaign
  • Feature Experimentation & Rollout
    • Managing campaigns in FE&R
    • How to create server-side A/B tests
    • How to create feature toggles and manage rollouts
    • How to create server-side personalization
    • Managing Flags
    • Managing Context Keys
    • Managing folders in FE&R
    • FE&R Glossary
  • Recommendations & Merchandising
    • Recommendations
      • Web recommendation
        • Most popular recommendation filters
        • Variables by placement
        • Placement
        • Products groups
        • Filters
        • Exceptions
        • Options
      • Recommendation Banner
        • Recommendation banner with tag and custom JS
          • Adding Recos Tag to a website
          • Enriching Recommendations Banner HTML to send events to DataLayer through Recos Tag
          • Setting up GTM to send Recos Datalayer Events
          • Connect Tag Assistant from GTM
          • Check that the events arrive correctly in GA
          • Check the display of recommendations
          • Retrieving recos products from a RECO_ID with Recos Tag
        • Deploying a Recommendations Banner Custom Widget
        • Retrieving a Recommendation RECO_ID
        • How to push recommendations with Adobe Campaign
        • How to build recommendations (recommendation builder variant)
      • Mail recommendations
        • How to push recommendations into your Brevo emails
        • Brevo Feed
        • Products groups
        • Filters
        • Products highlights
        • Exceptions
        • Options
        • Parameters
        • Preview
        • Most popular recommendation filters
    • Merchandising
      • Introduction
      • Category
      • Products groups
      • Filters
      • Products highlights
      • Exceptions
      • Result to refine
      • How to deploy a merchandised product list through Algolia
    • Recos & Merch analytics
      • How to track performances
      • Recos Analytics Event format
      • The impact of BigQuery exports in terms of cost
      • Setup analytics retrieve events with Recos Tag
      • Key indicators over the period & Segment
      • Overview data
      • Evolution metrics
    • Recos & Merch API
      • Getting a product list
      • Accessing Recos API (endpoint)
      • Accessing Recommendations API (only specific accounts)
    • Recos & Merch account management
      • How to manage users in Recommandation & Merchandising module
      • How to manage roles
      • How to manage synchronisations
      • How to manage invoices
    • Security and GDPR
      • Procedure for Reporting Personal Data Breaches
      • Backup Policy
      • Security Configuration of Our Servers
      • PSSI
    • Recos & Merch Algorythms
      • How to manage algorithms
      • How to create your algorithms
      • Better understanding
      • Default algorithms
      • Data used to train Algorithms
    • Recos & Merch integrations
      • Integrations with Recos & Merch
      • Brevo Integration
      • Analytic integrations
        • Google Analytics integration
        • Matomo integration
        • Random data integration
      • Recos & Merch CMS integration
        • PrestaShop integration
        • Shopify Integration
        • Custom integration
  • Emotions AI
    • Understand EmotionsAI
      • EmotionsAI in a nutshell
      • Leverage EmotionsAI to get more value from A/B tests
      • Leverage EmotionsAI to get high-potential A/B test ideas
    • First steps with EmotionsAI
      • Onboarding
      • EmotionsAI functioning
      • Navigating the interface
      • FAQ about EmotionsAI
    • Using EmotionsAI
      • How to activate EmotionsAI features
      • EmotionsAI Website Mapping configuration
      • EmotionsAI Journey Analysis
      • EmotionsAI Page Analysis
      • Target EmotionsAI segments
      • QA a campaign on Desktop with EmotionsAI Chrome Extension
      • Use EmotionsAI targeting on hard-coded personalizations
      • Usage of EmotionsAI in some Push integrations
    • Read EmotionsAI campaigns’ report
  • Library
    • How to set-up your libraries
    • Widget Library
      • Creating and managing Widgets
      • How to create a preset Widget
      • How to create a Custom Widget
        • How to configure Custom Widgets Custom Forms
      • How to declare your Widget Theme
    • Assets Library
    • Trackers library
      • Action Trackers
        • How to create and manage Action Trackers
      • How to create a Custom Tracker with custom JavaScript code
      • How to create a Custom Tracker via the DataLayer
      • How to Set Up an Exit Rate Tracker
    • Creating and managing Segments
      • List of Segment criteria
        • CSAT criterion (Customer Satisfaction)
        • NPS® criterion (Customer Satisfaction)
        • Engagement Level criterion
        • EmotionsAI criterion
        • Content Interest criterion
        • Page interest criterion
        • Device criterion
        • Cookie criterion
        • New/Returning visitors criterion
        • Campaign Exposure criterion
        • Number of sessions criterion
        • Day(s) Since Last Session criterion
        • Day(s) Since First Session criterion
        • Action & Custom Tracker criterion
        • Cart Abandonment criterion
        • Last Purchase criterion
        • Purchase Frequency criterion
        • Geolocation criterion
        • DMP, CDP, 3rd party tool criterion
      • Segments Library - Metrics
      • Segments Recommendations
      • Inspiration with Engagement Level segmentation
    • Creating and managing Triggers
      • List of Trigger criteria
        • Device criterion
        • Geolocation criterion
        • Screen size criterion
        • IP address criterion
        • Weather criterion
        • Landing Page criterion
        • Source & source type criterion
        • Previous Page criterion
        • URL Parameter criterion
        • Minimum Pages viewed criterion
        • Visited Pages criterion
        • Same day visit criterion
        • Browser language criterion
        • Browser criterion
        • Adblocker criterion
        • JS Variable criterion
        • Code-based criterion
        • CSS Selector criterion
        • DataLayer criterion
        • Visitor attributes criterion
    • Creating and managing Saved Pages
  • Integrations
    • Integrations general information
    • Push integrations
      • Adobe Analytics
      • Air
      • Amplitude (analytics browser)
      • Amplitude
      • AT Internet Smart Tag
      • Contentsquare
      • Google Analytics (Audience creation)
      • Google Analytics (UA)
      • Google Analytics (event only)
      • FullStory
      • Heap Analytics
      • Hubspot
      • Matomo
      • Mixpanel
      • Piano Analytics
      • SalesForce Marketing Cloud (Push)
      • Segment
      • Setting up Microsoft Clarity Integration with AB Tasty
      • Tealium
    • Pull integrations
      • Air
      • Commander Act
      • EmotionsAI
      • Fullstory
      • Google Analytics
      • Heap Analytics
      • Mixpanel
      • mParticle
      • Piano Analytics (Pull)
      • SalesForce Marketing Cloud (Pull)
      • Segment
      • Tealium : Import Audiences
      • Weborama
    • Other integrations
      • Productivity
        • How to Set Up the AB Tasty Connector with Notion
        • How to connect AB Tasty to Google Sheets
        • Connect your Slack Workspace to AB Tasty
      • Data Warehouse
        • Data Warehouse integrations: General information
        • Big Query - Daily exports from AB Tasty to Big Query
        • Snowflake - Daily exports from AB Tasty to Snowflake
        • Redshift - Daily exports from AB Tasty to Redshift
      • Microsoft Dynamics Commerce
      • Didomi
    • Custom integrations
      • Universal Data Connector
      • Configure your own way to send data to your favorite tools (Custom Push)
      • Import Audience data from any 3rd-party solution (Custom pull)
      • AB Tasty public API
  • Reporting & Performances
    • Data Explorer
      • How to analyze page traffic via Data Explorer
      • How to get metrics breakdown by multiple dimensions via Data Explorer
      • How to get a list of recent hits via Data Explorer
      • Data Explorer - List of Metrics and Dimensions
    • ROI dashboard
    • Performance Center
      • List of Performance Guidelines
    • Reporting
      • Campaign reporting
        • Reporting Copilot
        • Analysis Copilot
      • Data & reports: generalities and definitions
      • AB Tasty reports Metrics
        • Live hits of the reporting
        • Metrics based on tracking widgets
        • Browsing metrics
        • Metrics based on pageviews
        • Metrics based on clicks
        • Metrics based on transactions
      • Reporting Filters
        • General Reporting filters
        • EmotionsAI Reporting filter templates
      • Using the NPS®️ report
        • How does Feedback Analysis Copilot work
      • Sample ratio mismatch
      • Refresh reporting data using Refresh On Demand
      • Data export from the reporting
      • Frequentist Analysis mode
      • Understand the statistics behind your Reports
        • Statistics for the reporting
        • Statistical metrics
        • Avoiding Pitfalls in AOV Analysis for Conversion Rate optimization
        • Conversion mechanisms & concepts
        • Reporting Readiness
  • Account
    • Tag integration
      • All About Tags
      • How to implement the Generic Tag
        • AB Tasty hosted tag implementation
        • Tag Domain Delegation
          • Tag domain delegation implementation
      • How-to QA the Generic Tag
      • How to implement the Generic Tag via Google Tag Manager
      • How-to join the Next tag program
      • AB Tasty integration with Shopify
        • Understanding Shopify App features
        • How to implement the AB Tasty tag via Shopify
        • How to set-up Shopify Custom Pixel App
      • AB Tasty tag compilation
      • How the AB Tasty tag is designed to handle Single Page Apps (SPA)
    • Technical implementation
      • How to choose your cookies deposit method
      • How to declare my Account Domain?
      • JavaScript in AB Tasty
        • How to configure JavaScript
        • Javascript files execution
        • Campaign JavaScript Execution
      • How to configure jQuery loading
      • How to integrate Product hits
      • Product Hits integration principles
        • How to set-up segment criteria "Content Interest" and "Cart Abandonment"
    • Transaction Tag integration
      • How to implement the Transaction tag
      • How to create a Transaction Tracker via DataLayer
      • How to use the Transaction Tag Generator
      • How to QA the Transaction tag
    • Performance and security
      • How to manage visitor identity
      • How to deactivate AB Tasty
      • Consent policy - cookies, storage and privacy
    • Account management
      • The organization page
      • Subscription page
      • How to manage users?
Powered by GitBook
LogoLogo

AB Tasty Website

  • Home page AB Tasty
  • Blog
  • Sample size calculator
  • Release note

AB Tasty Plateform

  • Login

© Copyright 2025 AB Tasty, Inc, All rights reserved

On this page

Was this helpful?

Edit on GitLab
Export as PDF

Last updated 17 days ago

Was this helpful?

👉 To learn how to create a custom widget, refer to .

👉 To learn more about the functioning od Custom Widgets, refer to .

Here is the list of propname fields and their specificities​:

Displays a list of input numbers It is primarily used to define box-model dimensions (top, right, bottom, left) for many uses, margins, padding, positioning, etc.

value: array containing an object The number of elements in your object will define the number of inputs. Input labels are object keys and the values are the key/values from the object.

Displays a checkbox in the form

value: checkboxes do not have a value property but a checked property instead, which is a boolean

Displays a code editor input You can specify the code type (JS or CSS).

value: character string

Specific Property

rows: enables you to define the number of rows to display by default in the UI.

colorpicker

Displays a color picker

value: character string

Displays a simple date picker

value: date object or valid date string

Displays an all-in-one date and time picker, enabling you to get a requested date and time from users. Can be used for a countdown, for instance.

value: date object or valid date string. An empty date string will use the current date as the default value.

return value: Unix timestamp

Displays a datetimepicker, in addition to a collapsed group to set further information :

  • a toggle to follow the sun (will end at this time in each timezone or not)

  • a selection input to choose a timezone when needed (when the "follow the sun" toggle is off)

value: object with two properties at init :

  • type: should be set to init on the form part

  • value: same as datetimepicker but also allows a GMT timezone string

DATA value: a complete object

  • previewTimestamp: timestamp number (value to be used for the editor preview when the "follow the sun" toggle is on)

  • type: local or global value, depending on whether the "follow the sun" toggle is on or off.

  • timecustom widgets: object, in numbers, corresponding to the minute, hour, day, month, or year.

  • raw: object with all data:

  • followTheSun: boolean

  • previewTimezone: character string for geolocation timezone Ex: 'Europe/Paris' (value to be used for the editor preview when "follow the sun" toggle is on)

  • timedef: object. Same as timecustom widgets.

  • timezone: character string for geolocation timezone ex: 'America/Los_Angeles'

  • userContext: object with complete data related to the current user:

  • isInDST: boolean describing whether the user is currently in daylight - saving time or not.

  • local: object similar to timecustom widgets but with current user date and time values

  • offset: number resulting from getTimezoneOffset

  • timestamp: timestamp number

  • timezone: character string for geolocation timezone ex: 'Asia/Tokyo'

Hides an input

value: character string

Displays information to the user about the features of your form or custom widget

value: This custom widget does not need a value property.

Specific Properties:

label: character string corresponding to the message to be displayed

hrefUrl: character string corresponding to the URL you want the user to be redirected to

Displays an input of type number

value: number

Specific Properties:

You are also able to provide more properties:

min: number (default value is 0);

max: number (default value is 9999);

step: number (default value is 1).

Displays text into the form. It can be used to inform, alert, and so on

value: no value is needed in this case.

Content should be placed in the text property - character string.

Displays a radio input with multiple radios

value: character string || number || boolean

Specific Property for Radio:

options [Array of objects: {label: type label, value: same as value}]

Display a radio input with images/icons as buttons

value: character string

Specific Property: options are the same as for radio label and style The character string should be long or short, depending on the desired button size.

Displays a select that includes a search input for selects that have several values

value: character string

Specific Property:options are the same as for radio

Specific Options Properties:

placeholder: character string. Text to be displayed when the search field is empty.

Displays a select

value: character string

Special Property: options are the same as for radio

Displays an input used to fill selectors containing a button. It will enable the user to select a website element.

value: character string (more likely formatted as a CSS selector)

Displays a slider to select a number as a value

value: number

Specific Properties: min and max of type Number Both are optional. The default values are 0 and 100.

Displays a switch that enables the user to select an option

value: boolean

Displays a text area that enables the user to enter text

value: character string

Specific Property: rows of Number type to define the number of rows of your textarea

Displays a simple text input

value: character string

A text type input dedicated to the URL Format checking and error handling are managed by default.

value: character string

Displays a textarea input enriched with text styling features

value: character string

areainput

checkbox

codeeditor

datepicker

datetimepicker

datetimetimezonepicker

hidden

inlinenotification

number

paragraph

radio

radioImage

searchselect

select

selectelement

slider

switch

textarea

text

url

wysiwyg

const paddingForm = {
   type: 'areainput',
   label: 'Container padding',
   propName: 'containerPadding',
   value: [{ top: 35, left: 60, bottom: 35, right: 60 }],
};
const triggerOnPageLoadForm = {
   type: 'checkbox',
   label: {
       en: 'Page load',
       fr: 'Au chargement de la page',
       es: 'Al cargar la página',
       de: 'Beim Laden der Seite',
   },
   propName: 'pageLoad',
   checked: true,
};
export const triggerEventCustomScript = {
   type: 'codeeditor',
   label: 'Custom Trigger JavaScript Code',
   propName: `TriggerEventCustom`,
   value: `
       async function launchIfScroll() {
           return new Promise(resolve => {
               document.addEventListener('scroll', () => resolve(true), {once: true});
           });
       }
       const result = await launchIfScroll();
       return resolve(result);`,
   rows: 15
   };
const backgroundColorForm = {
   type: 'colorpicker',
   label: 'Background color',
   propName: 'backgroundColor',
   value: "rgba(247, 247, 247, 1)",
};
DATA value: Date.tostring()
const inputDate = {
   type: 'datepicker',
   label: 'Pick a date to display',
   propName: 'date',
   value: new Date(),
};
const inputDateTime = {
   type: 'datetimepicker',
   label: 'Pick a date and time to display',
   propName: 'datetime',
   value: '',
};
const inputDateTimeTimeZone = {
   type: 'datetimetimezonepicker',
   label: 'Pick a date and time to display',
   propName: 'datetimeTimezone',
   value: {
       type: 'init',
       value: '+0100'
   },
};
const hiddenInput = {
   type: 'hidden',
   value: window.innerHeight,
   propName: 'innerHeightSetup',
};
const documentationNotification = {
   type: 'inlinenotification',
   label: 'Click here to access documentation',
   hrefUrl: 'https://developers.abtasty.com/',
};
const zindexCustomForm = {
   type: 'number',
   label: 'Custom z-index value',
   propName: 'zindexCustom',
   value: 1,
   min: -2147483647,
   max: 2147483647,
};
const styleHelper = {
   type: 'paragraph',
   text: `In that part you can add styles to your custom widget.`,
};
const insertPositionForm = {
   type: 'radio',
   label: 'Select where to insert the custom widget compared to selected element',
   propName: 'insertPositionType',
   value: 'afterbegin',
   options: [
       {
           label: 'Before selected element',
           value: 'beforebegin'
       },
       {
           label: 'At the beginning of selected element',
           value: 'afterbegin'
       },
       {
           label: 'At the end of selected element',
           value: 'beforeend'
       },
       {
           label: 'After selected element',
           value: 'afterend'
       }
   ]
};
const textAlignmentForm = {
   type: 'radioImage',
   label: 'Text alignment',
   propName: 'textAlign',
   value: 'center',
   style: 'little',
   options: [
       {
           label: 'Left',
           value: 'left',
           src: `https://widgets-images.abtasty.com/style/icon-text-alignLeft.png`
       },
       {
           label: 'Center',
           value: 'center',
           src: `https://widgets-images.abtasty.com/style/icon-text-alignCenter.png`
       },
       {
           label: 'Right',
           value: 'right',
           src: `https://widgets-images.abtasty.com/style/icon-text-alignRight.png`
       }
   ]
};
const textFontNameForm = {
   type: 'searchselect',
   label: 'Select font',
   propName: 'fontName',
   value: 'inherit',
   placeholder: 'Search for a font',
   options: [
       {
           'label': 'Inherited from element',
           'value': 'inherit',
           'description': '',
       }
       {
           'label': 'Roboto',
           'value': 'Roboto',
           'description': '12 styles',
       },
       {
           'label': 'Open Sans',
           'value': 'Open Sans',
           'description': '10 styles',
       },
       {
           'label': 'Lato',
           'value': 'Lato',
           'description': '10 styles',
       },
       {
           'label': 'Montserrat',
           'value': 'Montserrat',
           'description': '18 styles',
       },
   ],
};
const backgroundPositionForm = {
   type: 'select',
   label: 'Background position',
   propName: 'backgroundPosition',
   value: 'center',
   options: [
       {
           label: 'Top',
           value: 'top'
       },
       {
           label: 'Bottom',
           value: 'bottom'
       },
       {
           label: 'Center',
           value: 'center'
       },
       {
           label: 'Left',
           value: 'left'
       },
       {
           label: 'Right',
           value: 'right'
       },
   ]
};
const triggerEventClick = {
   type: 'selectelement',
   label: 'Select the element that will trigger the custom widget on click'
   propName: `triggerElementClick`,
   value: 'body',
};
const borderWidthForm = {
   type: 'slider',
   label: 'Border width',
   propName: 'borderWidth',
   value: 2,
   min: 0,
   max: 50,
};
const displayCloseButtonSwitchForm = {
   type: 'switch',
   label: 'Display close button',
   propName: 'closeButton',
   value: true,
};
const textContentForm = {
   type: 'textarea',
   label: 'Text to set in your custom widget',
   propName: 'textContent',
   value: `Your message goes here.
Keep it short and to the point. Make short sentences.
Invite your users to consider your idea.


You can do multi-line messages.`,
   rows: 6,
};
const buttonTextForm = {
   type: 'text',
   label: `Button's text`,
   propName: 'buttonText',
   value: 'See the offer',
};
const linkForm = {
   type: 'url',
   label: `Button's URL`,
   propName: 'redirectionUrl',
   value: window.location.origin,
};
const custom widgetTextContent = {
   type: 'wysiwyg',
   label: 'Text',
   propName: 'content',
   value: `Your message goes here. Keep it short and to the point. Make short sentences. Invite your users to consider your idea.

​​​​​​​You can do multi-line messages.`,
};
  1. Web Experimentation and Personalization
  2. Editors and Widget
  3. Widgets
  4. Custom widget

Custom Widgets: List of propname Fields and Their Specificities

PreviousCustom widgetNextCustom widgets: Global usage and information
  • areainput​
  • checkbox​
  • codeeditor​
  • colorpicker
  • datepicker​
  • datetimepicker​
  • datetimetimezonepicker​
  • hidden​
  • inlinenotification​
  • number​
  • paragraph​
  • radio​
  • radioImage​
  • searchselect​
  • select​
  • selectelement​
  • slider​
  • switch​
  • textarea​
  • text​
  • url​
  • wysiwyg​
How to create a Custom Widget
Custom widgets: global usage and information
areainput
checkbox
codeeditor
colorpicker
datepicker
datetimepicker
datetimetimezonepicker
hidden
inlinenotification
number
paragraph
radio
radioimage
searchselect
select
selectelement
slider
switch
textarea
text
url
wysiwyg
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
png