The pymetrics widget is an iframeable pymetrics experience that you may embed onto your website. Your users can play the pymetrics games and receive their trait and career reports. You can then access their results via our partner API.


You will receive the following information from your pymetrics rep in order to implement the widget onto your website.

Key Required Description
Widget ID always Used to serve up your widget experience to your users


Embed the iframe onto your webpage with the following HTML and your Widget ID:

 <iframe src=”<widget_id>/” frameborder="0"></iframe>

Please replace the widget_id variable with your Widget ID given to you by pymetrics.


You can embed the pymetrics widget on whichever page of your site you'd like, but the widget must be at least 620px in height and 800px in width. The pymetrics web games are not meant to be played on a screen smaller than that.

We recommend giving the pymetrics widget fixed positioning so that your user does not experience a scrollbar within our iframe and on your site simultaneously.

An example of the widget can be found at

User Login

By default, users will log into the widget by creating an account on pymetrics.

SAML Login

If you wish to bypass the pymetrics login and use your own, you need to set up a SAML2 Identity Provider. If you wish to go this route, send your pymetrics rep the link to your IdP metadata after setting up SAML2 and then your pymetrics rep will send you a link to the pymetrics SAML2 Service Provider metadata.

An example of the pymetrics SP metadata can be found


You may subscribe to events from the widget, for example to ping our partner API when a user completes a game or all games.

You may do so by implementing the following javascript code on the page that contains the widget:

 // Create IE + others compatible event handler
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";

// Listen to message from child window
eventer(messageEvent,function(e) {
    console.log('parent received message!: ',;
    // do what you want depending on the event that got sent from the widget

Here are the events that the widget will send:

Value Description
pymetrics.widget.login User logs into the widget using the pymetrics authentication system
pymetrics.widget.register User signs up (this will be followed by a "pymetrics.widget.login" action)
pymetrics.widget.initialize User is authenticated (pymetrics auth/SAML/Oauth) and enters logged-in widget state
pymetrics.widget.played_game User has completed playing a game
pymetrics.widget.completed_games User has completed all required games, and their results have started to calculate
pymetrics.widget.navigate.* User has navigated to a state within the widget (for example, or pymetrics.widget.navigate.main.traits)