fbpx

Thinkific Gamification Integration

 

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

With Pointagram, you can add a point system to course activities, including community-based contributions, to create a fun and interactive experience. Foster friendly competition with leaderboards, award badges as students progress, and display key metrics. You can even allow students to convert points into virtual coins to redeem rewards.

Community Points allow you to recognize not only individual achievements but also contributions to the wider learning community. Plus, Pointagram can fetch data from other sources, making it easy to track all types of engagement. It’s a great way to boost course completion rates and build a thriving learning community where students get recognized for both their personal efforts and community involvement.

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. 

In addition, administrator has the possibility to track Community Points which is a own score series. 

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

In Pointagram, community activities are added as different “point types” in the Community Points score series. When you edit the score series (by clicking the 3-dotted menu), you’ll find these point types under “point input.” This is where you decide how much each community activity is worth.

Also, each point will be tagged with the community and space it belongs to.

Thinkific Community Points

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 Create a Custom Profile page in Thinkific Using a Thinkific Custom Sections

We’ve added four custom sections that let you fully customize your profile instead of using our embedded version. This gives you more flexibility to match your brand’s style. You can choose to use all four sections or just one on any custom page, depending on your needs.

Profile Banner

Profile Stats

Profile Badge

Profile Competitions

How to Create a Custom Leaderboard in Thinkific Using a Thinkific Section

Easily add a leaderboard to any custom page in Thinkific using the special Leaderboard section designed for Thinkific. You can customize it to match your brand’s look and feel. This is just one way to display Pointagram data in Thinkific. Best of all, you can handle all the settings right within Thinkific. Watch the video to learn how!

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 enable Communities gamification

Under Integration settings, there is a TAB called Communites. Just switch on the communities you wish to fetch data from. Note that the Community Steps from the integrations needs to be enabled. 

Community gamification Thinkific

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