fbpx

Thinkific Gamification Integration

Want to motivate students to complete courses and engage as a community? Use Pointagram to gamify your Thinkific course!

With Pointagram, you can add a point system to a course’s activities and create a fun and more interactive experience. Generate competitions between students with leaderboards, badges awarded as they progress, and display metrics. You can even set it up so students can convert points to virtual coins for buying rewards.

It’s a great way to increase course completion rates while also giving students well-deserved recognition for their hard work. But that’s not all! You can also fetch data from other data sources as well!

Installing Thinkific

PointagramonThinkificAppstoregamified
  1. Click on install, and the Thinkific AppStore will redirect you to an installation page.
  2. Consent to grant Pointagram access to your data.
  3. Sign up to Pointagram. If you already have an account, log in instead.
  4. After the signup process, the system will prompt for adding integration steps. Press on add. See the image below.

Installation is done, what now?

Players and Teams

On Thinkific student sign-in and sign-up, Pointagram receives student data and creates students as players in Pointagram. Students’ avatars will be loaded from Thinkific to Pointagram on the next sign-in.

Fetch Thinkific Groups and create Pointagram Teams, and link students to Pointagram Teams. Watch the video. 

Points

Pointagram has added two score series; Points and user sign-ins. So, now we are starting to track students in Pointagram.

PointsThinkific

Thinkific course activities are added as point types in Pointagram. When editing Points score series from the 3-dotted menu, you will find point types under point input. Here you can configure how much each Thinkific lesson type is worth.

PointTypesThinkific

Point tags

Every point added to Pointagram gets tagged with a course name. It gives the point context and more filtering options. A use case can be that only specific course points should qualify for a badge, competition, or a KPI widget. Read more about the score series in general. Continue reading here.

Naming a course: How to excel in #Sales ?

Pointagram will add the whole course name as a tag and Sales as a separate tag. This gives more flexibility to gamify a specific topic like sales when using this type of naming convention. So, hashtags in the course name will generate an extra tag. 

PointsHistoryThinkificTag

How to embed Profile page

Pointagram adds a profile page into Thinkific by utilizing Thinkifics own Design your site – Site builder function. Embed Pointagram by adding a section in Thinkific. The most common way is to add a custom page, then add a Pointagram section block and link it to a header.

Watch the video below or follow our step guide.

Thinkific Own Guides, Good To Read:
How to add a custom page
How to add a section
How to modify header

  • Press on Design Your Site – Site Builder
  • Press on the Custom Pages menu button
  • Add custom page, name your page. 
  • Now add a section and search for Pointagram Gamification and add it. 
ThinkificSectionPointagram

Settings and text, there are some options:

  • Active tab: which tab should be open when logging into the page.
  • Force single table layout: option for only showing the selected Active tab. 
  • Hide banner: hides the banner, profile picture, and name. 

That is how easy it is to embed Pointagram into Thinkific.

How to embed Competition

Add the Pointagram Competition section to a custom page. Just like the Profile page, please read above. Also, under the settings text, add the Competition ID.

The competition id is found when browsing the competition, in the browser link in Pointagram. Please add that to the section.

In this example the 16379 is the competition id. https://app.pointagram.com/v_competition/16379?ret=competitionsactive

Important, you need to login to the Thinkific School to see the end result.

How to embed Widgetboard

Add the Pointagram Widget board section to a custom page. Just like the Profile page, please read above. Also, under the settings text, add the Widgetboard ID.

The Widgetboard id is found when browsing the widgetboard, in the browser link in Pointagram. Please add that to the section.

In this example the 21 is the widgetboard id. https://app.pointagram.com/v_dashboard/21?ret=widgetboardsactive

Important, you need to login to the Thinkific School to see the end result.

How to embed Reward Store

Add the Pointagram Reward store section to a custom page. Just like the Profile page, please read above. That is it. 

Important, you need to login to the Thinkific School to see the end result.

How to add course player notifications

The course players fire events on a lesson and course completion that trigger a pop-up notification. The pop-up shows how many points the student scored in Pointagram for the Points score series and any linked scores series to Points.

A notification will also appear on ongoing/awarded badges. 

At the moment, if you have custom domain, you need to reach out to support@pointagram.com for us to enable your custom domain. 

Are you looking to customize your pop-up design or add specific links to your notification? We are using Toast.js for pop-up messages, which are highly customizable: Read here. 

How to Install
Copy the code below and paste it to your Thinkific site footer.  The footer code is found under settings and the tab called Code & Analytics

				
					<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css"> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/toastify-js"></script> <script>$(function() {
	function pg_get_points_data(data, counter, pointsnotificationshown ) {
		let xhr = new XMLHttpRequest();
		xhr.open("POST", "https://tv.pointagram.com/api/thinkific/points");
		
		data.counter = counter;
		data.pointsnotificationshown = pointsnotificationshown;
		sessionStorage.setItem('pgeventdata', JSON.stringify(data));
		
		xhr.onreadystatechange = function() { // Call a function when the state changes.
			if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
				// Request finished. Do processing here.
				responseData = JSON.parse(this.responseText);
				
				let allread = true;
				let pointsscored = false;
				for (let i = 0; i < responseData.length; i++) {
				  pointsscored = true;
				  if( responseData[i].have_read == "0" ) {
					allread = false;
				  }
				  
				  // Show notification for points scored
				  if( pointsnotificationshown !== true ) {
					  Toastify({
						text: 'You scored '+responseData[i].Score+' in ' + responseData[i].name,
						duration: 3000,
						avatar: responseData[i].icon,
						gravity: 'bottom'
					  }).showToast();
				  }
				  // Show notification for badge award and progress
				  if( responseData[i].have_read == "1" && responseData[i].badges.length > 0 ) {
						for (let j = 0; j < responseData[i].badges.length; j++) {
							// Show notification for awarded badge
							if( responseData[i].badges[j].status == "won" ) {
								  Toastify({
									text: 'You earned a '+responseData[i].badges[j].name,
									duration: 3000,
									avatar: responseData[i].badges[j].icon,
									gravity: 'bottom'
								  }).showToast();
							}
							// Show notification for ongoing badge
							else if( responseData[i].badges[j].status == "ongoing" ) {
								  Toastify({
									text: responseData[i].badges[j].name + ' (' + responseData[i].badges[j].current_value + '/'+responseData[i].badges[j].target_value + ")",
									duration: 3000,
									avatar: responseData[i].badges[j].icon,
									gravity: 'bottom'
								  }).showToast();
							}
						}
				  }
				}
				if( pointsscored === true ) {
					pointsnotificationshown = true;
				}

				if( !allread && counter < 10) {
					// console.log("Points scored, badges not calculated. Setting timeout to call in 10 seconds");
					setTimeout(pg_get_points_data, 10000, data, ++counter, pointsnotificationshown);
				}
				else if( !pointsscored && counter < 3 ) {
					// console.log("No points scored. Setting timeout to call in 10 seconds");
					setTimeout(pg_get_points_data, 10000, data, ++counter, pointsnotificationshown);					
				}
				else {
					// All done, clean up session storage
					sessionStorage.removeItem('pgeventdata');
				}
			}
		}			
		let body = {};
		
		// data.user.avatar_url
		// data.user.last_name;
		// data.user.first_name;
		body.user = data.user.id;
		body.lesson = data.lesson.id;
		body.account = data.user.subdomain;
		body.course = data.course.id;
		body.event = data.event;

		xhr.send(JSON.stringify(body));
	}
		
	if(typeof(CoursePlayerV2) !== 'undefined') { 
	    // console.log("Setting hook");
		CoursePlayerV2.on('hooks:contentWasCompleted', function(data) { 
			// console.log("Setting timeout to call in 2 seconds");

			data.counter = 1;
			data.pointsnotificationshown = false;
			data.event = 'contentWasCompleted';
			sessionStorage.setItem('pgeventdata', JSON.stringify(data));
			
			setTimeout(pg_get_points_data, 2000, data, 1, false);
		}); 
	}
	else {
	  // console.log("Not course player, Not setting hook");  
	  if( sessionStorage.getItem('pgeventdata') ) {
		let data = JSON.parse(sessionStorage.getItem('pgeventdata'));
		pg_get_points_data(data, data.counter, data.pointsnotificationshown);
	  }
	}	
});</script>
				
			

Common questions

No, it only tracks new events from Thinkific. Adding history can be done manually in Pointagram with tags and specific dates. 

Yes, you can. Important that the Thinkific User and Pointagram User have the same email address. On Thinkific sign-in or sign up we will then pair the users. 

If you only are embedding Pointagram into Thinkific, make sure to only add the players as Offline players. Read more about managing players. 

Yes. Pointagram has a team function. At the moment adding players to teams is done manually. There are Pointagram APIs that can handle this type of automation. Get in touch with our team if you need any help. 

Read more about managing players. 

At the moment, it requires the student to have Pointagram login credentials. Admins have to convert the Pointagram players to regular players by sending an invite. The student will then log in through Pointagram’s regular login site. 

Read more about managing players. 
Read more about Reward store. 

Content