Statistics

On this page

You can hook into statistics sent by Sirv JS when users interact with a gallery or a spin.

If you open your browser console, you will see all stats request as they are triggered in the "Console" section. Each statistic is sent to stats.sirv.com and you can also collect that data.

GTM integration

An easy way to collect the data is via Google Tag Manager. Read the article to track 360 spins with Google Tag Manager and import them to analytics platform.

Custom integration

You can listen for stats events by adding this script to your page:

document.addEventListener('sirv:viewer:stats', e => {
    console.log(e.detail.statsData);
});

Example of the data returned in the sessionStart stats event:

e.detail.statsData = {
    browser: {
        width: 892,
        height: 823
    },
    screen: {
        width: 1512,
        height: 982,
        availWidth: 1512,
        availHeight: 950,
        colorDepth: 30,
        pixelDepth: 30
    }
    name: "sessionStart",
    origin: "///sirv.sirv.com/website/demos/vivo/vivo-hotspots.spin",
    sessionId: 3415941547,
    ts: 1757498189424,
    type: "spin"
};

List of statistics

sessionStart

sessionStart - returns information about the browser, screen and session.

statsData: {
    data: {
        browser: {
            width: Number,
            height: Number
        },
        screen: {
            availHeight: Number,
            availWidth: Number,
            width: Number,
            height: Number,
            colorDepth: Number,
            pixelDepth: Number
        },
    },
    name: String, // sessionStart - statistics type name
    origin: String, // url path of spin
    sessionId: Number,
    ts: Number, // timestamp Date.now()
    type: String // spin - component type
}

sessionEnd

sessionEnd - when the Sirv Media Viewer instance is destroyed.

statsData: {
    data: {
        message: String // Stopped
    },
    name: String, // sessionEnd - statistics type name
    origin: String, // url path of spin
    sessionId: Number,
    time: Number, // time in milliseconds from start of session to current moment
    type: String // spin - component type
}

framesPreloaded

framesPreloaded - the initial 360 spin images have loaded (spin can be used, whilst remaining images load seamlessly in background).

statsData: {
    data: {
        duration: Number // time in milliseconds from start of session to current moment
    },
    name: String, // framesPreloaded - statistics type name
    origin: String, // url path of spin
    sessionId: Number,
    time: Number, // time in milliseconds from start of session to current moment
    type: String // spin - component type
}

viewerReady

viewerReady - the Sirv Media Viewer instance is ready for interaction.

statsData: {
    data: {
        columns: Number,
        rows: Number,
        viewerSize: {
            width: Number,
            height: Number
        }
    },
    name: String, // viewerReady - statistics type name
    origin: String, // url path of spin
    sessionId: Number,
    time: Number, // time in milliseconds from start of session to current moment
    type: String // spin - component type
}

framesLoaded

framesLoaded - all images have loaded.

statsData: {
    data: {
        duration: Number // time in milliseconds from start of session to current moment
    },
    name: String, // framesLoaded - statistics type name
    origin: String, // url path of spin
    sessionId: Number,
    time: Number, // time in milliseconds from start of session to current moment
    type: String // spin - component type
}

dragStart

dragStart - the user grabbed the spin to start rotation - triggered by drag, mouse-scroll or API rotate.

statsData: {
    data: {
        clientX: Number,
        clientY: Number,
        pageX: Number,
        pageY: Number
    },
    name: String, // dragStart - statistics type name
    origin: String, // url path of spin
    sessionId: Number,
    time: Number, // time in milliseconds from start of session to current moment
    type: String // spin - component type
}

rotate

rotate - the spin is rotating.

statsData: {
    data: {},
    name: String, // rotate - statistics type name
    origin: String, // url path of spin
    sessionId: Number,
    time: Number, // time in milliseconds from start of session to current moment
    type: String // spin - component type
}

dragEnd

dragEnd - the user released the spin.

statsData: {
    data: {
        clientX: Number,
        clientY: Number,
        pageX: Number,
        pageY: Number,
        duration: Number // time in milliseconds from start of session to current momentThis is the time in milliseconds from the dragStart to the current moment.
    },
    name: String, // dragEnd - statistics type name
    origin: String, // url path of spin
    sessionId: Number,
    time: Number, // time in milliseconds from start of session to current moment
    type: String // spin - component type
}

fullscreenOpen

fullscreenOpen - when user opens fullscreen mode.

statsData: {
    data: {},
    name: String, // fullscreenOpen - statistics type name
    origin: String, // url path of spin
    sessionId: Number,
    time: Number, // time in milliseconds from start of session to current moment
    type: String // spin - component type
}

fullscreenClose

fullscreenClose - when user closes fullscreen mode.

statsData: {
    data: {
        duration: Number // time in milliseconds from start of session to current moment
    },
    name: String, // fullscreenClose - statistics type name
    origin: String, // url path of spin
    sessionId: Number,
    time: Number, // time in milliseconds from start of session to current moment
    type: String // spin - component type
}

zoomIn

zoomIn - when user zooms in to an image.

statsData: {
    data: {
        clientX: Number,
        clientY: Number,
        pageX: Number,
        pageY: Number,
        frame: {
            row: Number,
            column: Number
        }
    },
    name: String, // zoomIn - statistics type name
    origin: String, // url path of spin
    sessionId: Number,
    time: Number, // time in milliseconds from start of session to current moment
    type: String // spin - component type
}

zoomOut

zoomOut - when user zooms out of an image.

statsData: {
    data: {
        clientX: Number,
        clientY: Number,
        pageX: Number,
        pageY: Number,
        duration: Number, // time in milliseconds from start of session to current moment
        frame: {
            row: Number,
            column: Number
        }
    },
    name: String, // zoomOut - statistics type name
    origin: String, // url path of spin
    sessionId: Number,
    time: Number, // time in milliseconds from start of session to current moment
    type: String // spin - component type
}

Page Unload

Page Unload - when the user closes the page.

statsData: {
    data: {
        message: String // Stopped
    },
    name: String, // Page Unload - statistics type name
    origin: String, // url path of spin
    sessionId: Number,
    time: Number, // time in milliseconds from start of session to current moment
    type: String // spin - component type
}

Was this article helpful?

Array

Get help from a Sirv expert

help ukraine help ukraine Powered by Ukrainian determination and British ingenuity

How can you support Ukraine