You can interact with Mouseflow on your website when Mouseflow is installed and is tracking. This website describes how you can identify end users, add tags, custom variables, manage virtual pageviews and a lot more.

In case you're looking for a server-side API, please visit our REST API documentation

The _mfq object

window._mfq = window._mfq || [];

The _mfq object is the entry point for all communication with the Mouseflow tracking script. Since the tracking script is loaded asynchronously you need to make sure the _mfq object is present before calling it. That's done my declaring it as an empty array if it's not declared already (see code to the right).

The array object is used as a queue, and you use it by pushing commands onto the array. Once Mouseflow is fully loaded, the queue is processed, and any new commands pushed only it will be processed immediately.

_mfq.push([commandName, argument1, argument2, ...]);

_mfq.push( function(_mouseflow) { console.log("Mouseflow loaded. Session ID: " + _mouseflow.getSessionId()); } );

Adding custom data

Identifying a user

_mfq.push(["identify", _userName]);

If you have a user name or email of the current user, you can add this information to Mouseflow which makes it much easier to find your users in the dashboard.

Tagging a recording

_mfq.push(["tag", _tag]);

Sometimes it's useful to add a custom tag to a recording. A tag is a string value that you choose yourself. Examples include "product-added", ...

Setting a custom variable

_mfq.push(["setVariable", _key, _value]);

If a tag isn't enough, and it's more useful for you to add a key and a value, you can use custom variables. Values are always treated as strings, ...

Star recording


Virtual paths and pageviews

Setting a virtual path

_mfq.push(["config", "path", _virtualPath]);

Adding a virtual pageview

_mfq.push(["newPageView", _virtualPath]);

Starting and stopping recording

Disabling auto-start

_mfq.push(["config", "autoStart", false]);

If you for some reason don't want Mouseflow to start recording immediately when a user enters a page, you can set the "autoStart" configuration to false. When at some point you would like the recording to start, use the mouseflow.start() call which is explained below.

Start recording


If you have set "autoStart" to false (see previous section), this call starts recording a page.

Please note that this is the only call where you don't use the _mfq variable, but call a method directly on the "mouseflow" global object. You should check if the object is available prior to calling it, to avoid throwing a javascript exception.

Stop recording


Getting Mouseflow recording data

Get session ID

_mfq.push(function(mf) {

Get pageview ID

_mfq.push(function(mf) {

Check if Mouseflow recording is currently recording

_mfq.push(function(mf) {
    console.log("Mouseflow is recording: " + mf.isRecording());

Get website ID

_mfq.push(function(mf) {

Get recording rate

_mfq.push(function(mf) {

Custom form events

Add form submit event

_mfq.push(["formSubmitAttempt", formId]);

Add form submit success event

_mfq.push(["formSubmitSuccess", formId]);

Form ID is optional and defaults to form with latest registered form submit attempt.

Add form submit failure event

_mfq.push(["formSubmitFailure", formId]);

Form ID is optional and defaults to form with latest registered form submit attempt.

Advanced configuration

Excluding all keystrokes

_mfq.push(["config", "keyLogging", false]);

Default: true

Controlling the timing of the HTML snapshot

_mfq.push(["config", "htmlDelay", _delayInMilliseconds]);

Default: 1000

Disabling auto-tagging

_mfq.push(["config", "autoTagging", false]);

Default: true