Everything you need to connect meaningfully with students, families, and staff—from two-way texting to schoolwide notifications to voice memos and video conferencing.
Remind meets the highest privacy compliance standards and certifications for education.
Learn more
Connect with teachers, students, and families on any device, from one convenient platform.
Onboard
Rostering makes it easy to create accounts and classes for your entire organization.
Engage
Tailor outreach to families
with preferred languages
and devices.
Track
Engagement statistics give you a bird's-eye view of school and district communciation.
For teachers or activity leaders who need a simple way to message groups
For admins of schools or districts who need oversight and expanded features
Send messages and attachments via text, mobile app, email, or web
Connect teacher tools to Remind to share content, resources, and more
Create more classes to communicate with different groups
Communicate with larger groups at your organization
Send messages with up to 10,000 characters
Automatic translation into recipients' preferred languages, including via text
Manage settings to safeguard and support communication
Monitor and measure teacher, student, and family communication
Create and sync accounts and classes
Send notifications to your entire community or specific roles
Call any number from Remind, including landlines
Connect your LMS and video conferencing platforms to Remind
Alert your entire community in emergency situations
Teachers and activity leaders can use Remind Chat for free to communicate with classes and other small groups.
Remind Chat is designed for classes and other smaller groups like clubs and teams, while Remind Hub is able to support organizations like districts and schools. Along with expanded communication features for teachers and staff, organizations also get the ability to onboard families, tailor outreach to your community, and access statistics about stakeholder engagement.
Remind Hub is only available for purchase by districts, schools, and other organizations.
A number of districts have switched to using only Remind Hub for mass communication (read our case study with Iron County School District in Utah). Remind Hub includes organization-wide messaging for communicating at scale, plus features like automatic translation to recipients’ preferred languages, role-based messaging, urgent messaging, and more. Find the right plan for your organization here.
tag * ppcUrlCookiePart1 and ppcUrlCookiePart2 must be called, see bottom of script * update ppcUrlCookiePart2 and ppcUrlCookiePart2 to match your querystring and form field names * */ //Leave this as true to always use querystring values if they exist, if no querystring will attempt to get cookie values var ppcUseLatestValues = true; //set this to false to use cookie values if they exist (if false, will not check querystring first). //function to grab params from cookie function getCookie(param_name) { var i, x, y, cookie = document.cookie.split(";"); for (i = 0; i < cookie.length; i++) { x = cookie[i].substr(0, cookie[i].indexOf("=")); y = cookie[i].substr(cookie[i].indexOf("=") + 1); x = x.replace(/^\s+|\s+$/g, ""); if (x == param_name) { return unescape(y); } } } //function to create cookie function setCookie(param_name, value, exdays) { var exdate = new Date(); exdate.setDate(exdate.getDate() + exdays); //CHANGE DOMAIN BELOW TO MATCH SITE var c_value = escape(value) + ((exdays == null) ? "" : "; domain=remind.com; path=/; expires=" + exdate.toUTCString()); document.cookie = param_name + "=" + c_value; } //function to check if cookie exists and, if so, run the setCookie function function checkCookie(param_name, param_url_name) { var param_value = getCookie(param_name); if ((param_value != null && param_value != "" && param_value != "undefined") && ppcUseLatestValues == false) { //this means the param name/value pair exists - and we don't want to use latest } else { //this means the param name/value pair does not exist - so create it //grab values from URL var pageURL = window.location.search.substring(1); var URLVariables = pageURL.split('&'); for (var i = 0; i < URLVariables.length; i++) { var parameterName = URLVariables[i].split('='); if (parameterName[0] == param_url_name) { //filter out "#" in case that is in the last URL param param_value = parameterName[1].split("#")[0]; } } if (param_value != "undefined" && param_value != "" && param_value != null) { //create cookie setCookie(param_name, param_value, 365); } } } //function to setup the parameters and save the cookie values function ppcUrlCookiePart1() { //setup list/array of parameters desired. names on right should match querystring names var param_names = new Array( 'ppcSource;utm_source', 'ppcMedium;utm_medium', 'ppcCampaign;utm_campaign', 'ppcAdGroup;utm_adgroup', 'ppcKeyword;utm_term', 'ppcContent;utm_content' ); //loop through all params and create cookie for (i = 0; i < param_names.length; i++) { var param_object = param_names[i].split(";");//split out the cookie name and url name var param_name = param_object[0]; var param_url_name = param_object[1]; //start the cookie creation checkCookie(param_name, param_url_name); } } //function to grab cookie params function mGetCookie(param_name) { var i, x, y, cookie = document.cookie.split(";"); for (i = 0; i < cookie.length; i++) { x = cookie[i].substr(0, cookie[i].indexOf("=")); y = cookie[i].substr(cookie[i].indexOf("=") + 1); x = x.replace(/^\s+|\s+$/g, ""); if (x == param_name) { return unescape(y); } } } //function to check if cookie exists and, if so, fill out the corresponding form fields function mCheckCookie(param_name, param_field_name) { var param_value = mGetCookie(param_name); if (param_value != null && param_value != "" && param_value != "undefined") { try { var obj1 = document.getElementsByName(param_field_name); obj1[0].value = param_value; return true; } catch (err) { return false; } } return false; } //function to setup parameters and begin cookie value insertion into marketo form function ppcUrlCookiePart2() { //setup list/array of parameters desired. names on right should match hidden form field names var param_names = new Array( 'ppcSource;utm_source__c', 'ppcMedium;utm_medium__c', 'ppcCampaign;utm_campaign__c', 'ppcAdGroup;utm_adgroup__c', 'ppcKeyword;utm_term__c', 'ppcContent;utm_content__c' ); //loop through all params and create cookie for (i = 0; i < param_names.length; i++) { var param_object = param_names[i].split(";");//split out the cookie name and url name var param_name = param_object[0]; var param_field_name = param_object[1]; //start the cookie creation mCheckCookie(param_name, param_field_name); } } //ppcUrlCookiePart1 will grab values from the querystring and save them in cookies ppcUrlCookiePart1(); //ppcUrlCookiePart2 will retrive values from the cookies and populate the hidden form fields - should be in the onload try { //attempt for Marketo form MktoForms2.whenReady(function (form){ ppcUrlCookiePart2(); }); } catch (err) { //if error on Marketo form, try loading for regular form. ppcUrlCookiePart2(); }