Actions FAQ

What is the difference between actions created by Monetate and client-created actions?

The actions that Monetate builds, as designated by its logo, were tested by its engineers. Only Monetate employees can edit or delete these actions.

Each Monetate client can create, test, and revise actions. Individual users must have the appropriate user role to build actions. See Manage Users for more information.

Can Monetate build custom actions for me?

Yes, you can contact your dedicated Customer Success Manager (CSM) to request a custom action.

What are your quality assurance (QA) standards and processes for actions?

All actions built by Monetate undergo QA and browser-compatibility testing. Monetate QA performs code and user experience audits before releasing an action to clients. Additionally, QA engineers review and validate the platform's code and actions on standard browsers and operating systems, including the latest versions of Firefox, Chrome, Safari, and Internet Explorer versions 8 to 11.

You should take your own quality assurance measures on and test browser compatibility for any actions that you create using Action Builder.

How do I load external JavaScript files into an Action Builder JavaScript action?

If you are a Web developer, you may be familiar with referencing external JavaScript files in the <head> section of HTML code by using the following tag:

<script language="text/JavaScript" src="http://example.com/file.js"></script>

Placing this tag in the source code of a JavaScript action doesn't work because Action Builder disregards HTML <script> tags due to the way that these files load within a browser.

Therefore, to load external JavaScript on a page, you must create in Action Builder an action to insert the JavaScript. The JavaScript in this action must include instructions that append the external JavaScript to the <head> tag on your page.

Here's an example:

function externalJS(src, callback) {
    var s = document.createElement('script');
    s.src = src;
    s.async = true;
    s.onreadystatechange = s.onload = function() {
        var state = s.readyState;
        if (!callback.done && (!state || /loaded|complete/.test(state))) {
            callback.done = true;
            callback();
        }
    };
    document.getElementsByTagName('head')[0].appendChild(s);
}


externalJS('https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js', function() { 
    // Place any JavaScript code that should be executed after the script loads here
});

If you want to reference third-party JavaScript that inserts inline content into the <body> section of your site's HTML, such as a Facebook Like button, then you must work with that third-party to determine alternative solutions for loading that content from the <head> section of your HTML instead.

If you need additional guidance or assistance to troubleshoot loading external JavaScript files, submit a support ticket using the Monetate Technical Support portal (support.monetate.com).

When does the platform execute JavaScript actions?

JavaScript actions are executed at the same time as other actions in an experience. This occurs after the tag loads and the platform collects information about the page used in experiences.

If JavaScript executes before you expect, then you can add JavaScript element poling to the code to check for other elements on the page before executing.

Here's an example:

var elementSelector = $("div#element"); // jQuery Example
var elementSelector = document.getElementById('element'); // JS 

function jsPolling(){
    if ((elementSelector) || (elementSelector.length > 0)) {
        // Your JS here
        console.log('Element exists');
    }
    else {
        // Check Again for the element
        setTimeout(jsPolling, 100);
    }
}
jsPolling();

Why isn't my Edit HTML action configured to replace the contents of a selected element working?

If an Edit HTML action configured to replace the contents of a selected element isn't working as expected, then most likely the element selector that you used in the action is an <img> element.

Image elements cannot contain other elements, which is why the action content isn't rendering. Change the action placement to replace the selected element, or use a different selector.

How does Monetate define a landing page?

A landing page is the first page on your site that a visitor reaches at the beginning of a new Monetate session.

Can I set more than one page type for a page with the setPageType API method?

You cannot assign more than one page type to a page with the setPageType API method. Instead, you use the addCategories method to apply multiple categories to a page. Monetate manages categories in a similar manner to page type. Use the Page category = action condition to constrain the display of the action's content adjustments.