PageSourceSearch

https://www.schoolbuyersonline.com/

html schoolbuyersonline.com collected 2026-10-08 07:31:53 UTC 41,726 bytes, 911 lines download raw bytes

1
2
3<!DOCTYPE html>
4<html>
5<head>
6    
7    <link rel="shortcut icon" type="image/x-icon" href="https://vertassets.blob.core.windows.net/sites/favicons/vm-favicon.ico"/>
8    <title>School Buyer's Online: Digital Marketplace for the education industry</title>
9    <link rel="preconnect" href="https://munchkin.marketo.net" crossorigin/>
10    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/>
11    <link rel="dns-prefetch" href="https://cdn.onesignal.com" crossorigin/>
12    <link rel="dns-prefetch" href="https://www.googletagmanager.com" crossorigin/>
13    <link rel="dns-prefetch" href="https://vertassets.blob.core.windows.net/" crossorigin/>
14    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Arimo|Roboto+Condensed|Oswald|Oxygen|Open+Sans"/>
15    
16
17
18<meta charset="utf-8" />
19<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2" />
20<meta http-equiv="X-UA-Compatible" content="IE=edge" />
21
22<meta name="title" content="School Buyer&#x27;s Online: Digital Marketplace for the education industry" />
23<meta name="description" content="Resource for professionals in the education industry- Information on education, public schools, school finance, board of education, teachers, assistant superintendents, principals, special education and more" />
24    <meta property="og:image" content="https://vertassets.blob.core.windows.net/sites/logos/sbuys.png">
25<link rel="canonical" href="https://www.schoolbuyersonline.com/" />
26
27    
27<script src="https://code.jquery.com/jquery-3.5.1.min.js"
28            integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="
29            crossorigin="anonymous"></script>
29
30    
31        
31<script src="/js/site.js?v=_DeyMHfVIhCGMr2jRZCw30fVpBAfwYigqkTnCeURzxE"></script>
vendor: 114 bytes, lines 31-35
31
32    
33    
34
35    <script async src="https://www.google.com/recaptcha/enterprise.js?onload=loadRecaptcha&render=
356Lcl0Z8qAAAAADRTBFqol-uEvsmwWHnNiedoGJdv
vendor: 35 bytes, lines 35-36
35&trustedtypes=true"></script>
36    
36<script type="text/javascript">
37        window['__RECAPTCHA_PUBLIC_KEY__'] = '6Lcl0Z8qAAAAADRTBFqol-uEvsmwWHnNiedoGJdv';
38
39        window['__OPT_IN_CONFIRMATION_PAGE__'] = '';
40    </script>
40
41
42    
43
44        <link rel="stylesheet" href="/css/lib.css?v=_c4rzDumxhYdb0MZ6QnCtnjJH4swr6ivicSO31k7D1w">
45        <link rel="stylesheet" href="/css/themes/default.css?v=apvU8hrAeEpe7C1_knSBwRnBCWDq2uz0pDUz9PYMELM" />
46        <link rel="stylesheet" href="/css/gdpr-consent.css" />
47    
48    
49    
49<script type="text/javascript">
50        window["__currentOnline__"]= 'SBUYS';        
51        window["__mainPopUpFormId__"] = '';
52        window.googletag = window.googletag || {};
53        window.googletag.cmd = window.googletag.cmd || [];
54    </script>
54
55    
56
57<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async=""></script>
vendor: 2 bytes, line 57
57
58<script>
59  var OneSignal = window.OneSignal || [];
60  OneSignal.push(function() {
61    OneSignal.init({
62      appId: '90aa9b3f-762c-4d15-a7e5-a865c006d031'
63    });
64  });
65</script>
65
66    
67    
68<!-- AdDaptive Pixel -->
69<script>
70(function () {
71    var tagUrl = "s.dpmsrv.com/dpm_2ef94c5be6406817949fc2211a9cdf209bdd4a1b.min.js";
72
73    function hasAdvertisingConsent() {
74        var match = document.cookie.match(/(?:^|; )cookieyes-consent=([^;]*)/);
75        if (!match) { return false; }
76        var value = decodeURIComponent(match[1]);
77        return /(?:^|,)advertisement:yes(?:,|$)/.test(value);
78    }
79
80    function loadPixel() {
81        var h = document.getElementsByTagName('head')[0];
82        var s = document.createElement('script');
83        var sc = 'https:' == document.location.protocol ? 'https://' : 'http://';
84        s.type = 'text/javascript';
85        s.async = true;
86        s.src = sc + tagUrl;
87        h.appendChild(s);
88    }
89
90    if (hasAdvertisingConsent()) {
91        loadPixel();
92        return;
93    }
94
95    document.addEventListener('cookieyes_consent_update', function onUpdate() {
96        if (hasAdvertisingConsent()) {
97            document.removeEventListener('cookieyes_consent_update', onUpdate);
98            loadPixel();
99        }
100    });
101
102    // CookieYes is installed via a GTM tag here, so its cookie may not exist yet when
103    // this script runs (it renders before GTM's bootstrap). Poll briefly as a fallback
104    // in case this account's CookieYes version doesn't dispatch cookieyes_consent_update.
105    var attempts = 0;
106    var poll = window.setInterval(function () {
107        attempts += 1;
108        if (hasAdvertisingConsent()) {
109            window.clearInterval(poll);
110            loadPixel();
111        } else if (attempts >= 40) {
112            window.clearInterval(poll);
113        }
114    }, 500);
115})();
116</script>
116
117<!-- End AdDaptive Pixel -->
118
119    
119<script src="https://go.lifescienceconnect.com/js/lsc-enhance.js" defer></script>
119
120
121
122    
123
124        <!-- Google Tag Manager -->
125        
125<script>
vendor: 379 bytes, lines 125-129
125(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
126            new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
127            j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
128            'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
129            })(window,document,'script','dataLayer','
129GTM-KCQCQ96
vendor: 3 bytes, line 129
129');
129</script>
129
130        <!-- End Google Tag Manager -->
131    <!-- Initialize GetSiteControl var-->
132    
132<script>
133        window.gsc = window.gsc || function () {
134            (gsc.q = gsc.q || []).push(arguments);
135        };
136    </script>
136
137</head>
138<body>
139    
140    <!-- Google Tag Manager (noscript) -->
vendor: 73 bytes, lines 140-141
140
141    <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
141GTM-KCQCQ96
vendor: 95 bytes, lines 141-143
141"  
142    height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
143    
143<!-- End Google Tag Manager (noscript) -->
144
145
146
147
148<div class="container-fluid vm-full-width-header-container">
149    <div class="container vm-header-container">
150        <div class="row pt-2 align-items-end vert-header">
151            <div class="col-sm-auto col-md">
152                <a href="/">
153                    <img src="https://vertassets.blob.core.windows.net/sites/logos/sbuys.png" alt="School Buyer&#x27;s Online: Digital Marketplace for the education industry" class="mb-1"/>
154                </a>
155            </div>
156            <div class="col-auto text-sm-right ml-sm-auto pr-0">
157                    <div class="vm-logged-out-container d-print-none">
158                        <a data-ga-event data-ga-category="Sign-In" data-ga-action="Site-Request" data-ga-label="NA" href="/usersession/login?referringlink=header&amp;docUrl=NA">
159                            Log In
160                        </a> or
161                        <a data-ga-event data-ga-category="Register" data-ga-action="Site-Start" data-ga-label="NA" href="/user/new?referringlink=header&amp;docUrl=NA">
162                            Subscribe
163                        </a>
164                    </div>
165            </div>
166        </div>
167    </div>
168</div>
169<header class="vert-nav">
170    <nav class="navbar navbar-dark bg-dark navbar-expand-md">
171        <div class="container vm-nav-container pr-0 pl-0">
172            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
173                <span class="navbar-toggler-icon text-white"></span>
174            </button>
175            <div class="collapse navbar-collapse" id="navbarNavAltMarkup">
176                <div class="navbar-nav mr-auto">
177                            <a class="nav-item nav-link" href="/hub/bucket/products" target="">Product Showcase</a>
178                            <a class="nav-item nav-link" href="/resource/news" target="">News</a>
179                </div>
180            </div>
181            <form method="get" class="form-inline nav-search pr-0" action="/search">
182                <input class="form-control-sm" name="keyword" type="search" maxlength="250" placeholder="Search" aria-label="Search"/>
183                <button type="submit" class="btn-sm btn-dark">
184                    <i class="fas fa-search fa-sm"></i>
185                </button>
186            </form>
187        </div>
188    </nav>
189</header>
190
191<div class="container-fluid p-1 vm-top-ads-container overflow-hidden d-print-none">
192    <div class="row mobile-hide justify-content-center">
193        <div class="col-auto">
194            
195
196<!-- Adds PubAds Section -->
197<script>
198    googletag.cmd.push(function () {
199        googletag
200        .defineSlot('/52748101/schoolbuyersonline/sbuys-leaderboard', [728,90], 'Ad_9e76f401-732a-4d57-873f-c44edd022aec')
201        .addService(googletag.pubads());
202        googletag.pubads().enableLazyLoad({
203            fetchMarginPercent: 50,
204            renderMarginPercent: 0,
205            mobileScaling: 2.0,
206        });
207        googletag.pubads().enableSingleRequest();
208        googletag.enableServices();
209    });
210</script>
210
211<div id="Ad_9e76f401-732a-4d57-873f-c44edd022aec" class="ad ">
212        
212<script>
213        googletag.cmd.push(function () { googletag.display("Ad_9e76f401-732a-4d57-873f-c44edd022aec"); });
214        </script>
214
215    
216</div>
217
218
219        </div>
220        <div class="col-auto d-none d-lg-block">
221            
222
223<!-- Adds PubAds Section -->
224<script>
225    googletag.cmd.push(function () {
226        googletag
227        .defineSlot('/52748101/schoolbuyersonline/sbuys-earpiece', [230,90], 'Ad_e3da40d4-e75d-4d37-b60f-074406d0f692')
228        .addService(googletag.pubads());
229        googletag.pubads().enableLazyLoad({
230            fetchMarginPercent: 50,
231            renderMarginPercent: 0,
232            mobileScaling: 2.0,
233        });
234        googletag.pubads().enableSingleRequest();
235        googletag.enableServices();
236    });
237</script>
237
238<div id="Ad_e3da40d4-e75d-4d37-b60f-074406d0f692" class="ad ">
239        
239<script>
240        googletag.cmd.push(function () { googletag.display("Ad_e3da40d4-e75d-4d37-b60f-074406d0f692"); });
241        </script>
241
242    
243</div>
244
245
246        </div>
247    </div>
248</div>
249
250
251<div class="container vm-main-container">
252    <main role="main">
253        
254
255
256
257<div class="row no-gutters p-3 pl-md-0 pr-md-0">
258        <div class="vm-layout-content-primary">
259            
260    <div class="vm-content-item vm-bucket vm-titlesummary">
261
262<h2 class="vm-section-header">LATEST HEADLINES</h2>
263<h6></h6>
264
265        
266<ul class="separated-items list-unstyled">
267        <li class="image-title-summary-container">
268            <div class="summary ellipsis">
269                <a href="/doc/red-rover-accelerates-growth-as-k-districts-seek-modern-workforce-management-solutions-to-overcome-0001" title="Red Rover Accelerates Growth As K-12 Districts Seek Modern Workforce Management Solutions To Overcome Operational Complexities" class="title-link">
270                    Red Rover Accelerates Growth As K-12 Districts Seek Modern Workforce Management Solutions To Overcome Operational Complexities
271                </a>
272                <div style="padding-bottom: 5px">
273                      <em class="vm-hub-date">
274                           6/9/2026
275                      </em>
276                </div>
277                <span class="mobile-hide"><p>Red Rover, the fastest-growing provider of human capital management (HCM) solutions for K-12 education, today announced significant milestones marked by technology advancements in its K-12 HCM platform, new district partnerships, and increased adoption of more solutions among current school systems, resulting in market dominance across K-12 districts nationwide.</p>
278</span>
279            </div>
280        </li>
281        <li class="image-title-summary-container">
282            <div class="summary ellipsis">
283                <a href="/doc/school-culture-compass-launches-to-help-k-leaders-build-stronger-school-culture-through-data-driven-support-0001" title="School Culture Compass Launches To Help K-12 Leaders Build Stronger School Culture Through Data-Driven Support And Actionable Strategy" class="title-link">
284                    School Culture Compass Launches To Help K-12 Leaders Build Stronger School Culture Through Data-Driven Support And Actionable Strategy
285                </a>
286                <div style="padding-bottom: 5px">
287                      <em class="vm-hub-date">
288                           6/2/2026
289                      </em>
290                </div>
291                <span class="mobile-hide"><p>School Culture Compass launched today&mdash; offering K&ndash;12 school leaders a practical, measurable approach to improving school culture at a time when educator burnout, staffing instability, and communication breakdowns continue to impact schools across the country.</p>
292</span>
293            </div>
294        </li>
295        <li class="image-title-summary-container">
296            <div class="summary ellipsis">
297                <a href="/doc/cognia-and-el-education-merger-creates-a-coherent-ecosystem-for-school-improvement-0001" title="Cognia And EL Education Merger Creates A Coherent Ecosystem For School Improvement" class="title-link">
298                    Cognia And EL Education Merger Creates A Coherent Ecosystem For School Improvement
299                </a>
300                <div style="padding-bottom: 5px">
301                      <em class="vm-hub-date">
302                           5/28/2026
303                      </em>
304                </div>
305                <span class="mobile-hide"><p>For decades, schools and districts nationwide have been forced to assemble their own improvement ecosystems &mdash; piecing together disparate curricula, assessments, professional development, and continuous improvement support from different providers with no common thread.</p>
306</span>
307            </div>
308        </li>
309        <li class="image-title-summary-container">
310            <div class="summary ellipsis">
311                <a href="/doc/schooldata-launches-connect-ai-giving-every-educator-analyst-level-insight-to-drive-proactive-student-interventions-0001" title="SchoolData Launches Connect AI, Giving Every Educator Analyst-Level Insight To Drive Proactive Student Interventions" class="title-link">
312                    SchoolData Launches Connect AI, Giving Every Educator Analyst-Level Insight To Drive Proactive Student Interventions
313                </a>
314                <div style="padding-bottom: 5px">
315                      <em class="vm-hub-date">
316                           5/27/2026
317                      </em>
318                </div>
319                <span class="mobile-hide"><p>SchoolData today announced the launch of Connect AI, a built-in Digital Analyst that gives every educator in every building the ability to move from time-consuming data-mining to immediate, insight-driven action. The result: earlier interventions and better outcomes for students.</p>
320</span>
321            </div>
322        </li>
323        <li class="image-title-summary-container">
324            <div class="summary ellipsis">
325                <a href="/doc/leading-security-technology-provider-launches-advanced-detection-solutions-for-law-enforcement-0001" title="Leading Security Technology Provider Launches Advanced Detection Solutions For Law Enforcement, Correctional, Healthcare, And K-12 School Facilities" class="title-link">
326                    Leading Security Technology Provider Launches Advanced Detection Solutions For Law Enforcement, Correctional, Healthcare, And K-12 School Facilities
327                </a>
328                <div style="padding-bottom: 5px">
329                      <em class="vm-hub-date">
330                           5/21/2026
331                      </em>
332                </div>
333                <span class="mobile-hide"><p>CEIA USA, a leading innovator in security detection technology, today announced the launch of three advanced detection solutions designed to meet the emerging security and safety challenges faced by law enforcement agencies, correctional facilities, healthcare institutions, and K-12 schools in North America.</p>
334</span>
335            </div>
336        </li>
337        <li class="image-title-summary-container">
338            <div class="summary ellipsis">
339                <a href="/doc/presence-acquires-digital-platform-to-streamline-special-education-workflows-and-advance-student-support-0001" title="Presence Acquires Digital Platform To Streamline Special Education Workflows And Advance Student Support" class="title-link">
340                    Presence Acquires Digital Platform To Streamline Special Education Workflows And Advance Student Support
341                </a>
342                <div style="padding-bottom: 5px">
343                      <em class="vm-hub-date">
344                           5/19/2026
345                      </em>
346                </div>
347                <span class="mobile-hide"><p>Presence, a leading provider of preK12 special education technology and teletherapy services, today announced it acquired Education Modified, a special education technology solution.</p>
348</span>
349            </div>
350        </li>
351</ul>
352
353
354    <div class="text-right">
355        <a href="/hub/bucket/HomeLatestHeadlines">More Headlines</a>
356    </div>
357    </div>
358    <div class="vm-content-item vm-ad ">
359                
360<div class="row justify-content-center">
361    <div class="col-auto">
362        
363
364<!-- Adds PubAds Section -->
365<script>
366    googletag.cmd.push(function () {
367        googletag
368        .defineSlot('/52748101/schoolbuyersonline/sbuys-medium-rectangle', [300,250], 'Ad_sbuys-medium-rectangle_1_2')
369        .addService(googletag.pubads());
370        googletag.pubads().enableLazyLoad({
371            fetchMarginPercent: 50,
372            renderMarginPercent: 0,
373            mobileScaling: 2.0,
374        });
375        googletag.pubads().enableSingleRequest();
376        googletag.enableServices();
377    });
378</script>
378
379<div id="Ad_sbuys-medium-rectangle_1_2" class="ad ">
380        
380<script>
381        document.addEventListener("DOMContentLoaded", function () { 
382        vertLib.site.Common.setupObserverIntersection("#Ad_sbuys-medium-rectangle_1_2", () => {
383                googletag.cmd.push(function () {
384                    googletag.display("Ad_sbuys-medium-rectangle_1_2");
385                    });
386                });   
387        });        
388        </script>
388
389    
390</div>
391
392
393    </div>
394</div>
395
396    </div>
397    <div class="vm-content-item vm-intensedebate vm-default">
398                                
399
400    <div class="vm-unknown-content-item">
401        <h1>&#xA0;Intense Debate</h1>
402        _IntenseDebate_Default
403    </div>
404    </div>
405    <div class="vm-content-item vm-adlist vm-default">
406                
407
408<div class="row justify-content-center">
409    <div class="col-auto" style="min-width: 155px;">
410        
411
412<!-- Adds PubAds Section -->
413<script>
414    googletag.cmd.push(function () {
415        googletag
416        .defineSlot('/52748101/schoolbuyersonline/sbuys-square-button', [125,125], 'Ad_sbuys-square-button_1_4_0')
417        .addService(googletag.pubads());
418        googletag.pubads().enableLazyLoad({
419            fetchMarginPercent: 50,
420            renderMarginPercent: 0,
421            mobileScaling: 2.0,
422        });
423        googletag.pubads().enableSingleRequest();
424        googletag.enableServices();
425    });
426</script>
426
427<div id="Ad_sbuys-square-button_1_4_0" class="ad ">
428        
428<script>
429        document.addEventListener("DOMContentLoaded", function () { 
430        vertLib.site.Common.setupObserverIntersection("#Ad_sbuys-square-button_1_4_0", () => {
431                googletag.cmd.push(function () {
432                    googletag.display("Ad_sbuys-square-button_1_4_0");
433                    });
434                });   
435        });        
436        </script>
436
437    
438</div>
439
440
441    </div>
442    <div class="col-auto" style="min-width: 155px;">
443        
444
445<!-- Adds PubAds Section -->
446<script>
447    googletag.cmd.push(function () {
448        googletag
449        .defineSlot('/52748101/schoolbuyersonline/sbuys-square-button', [125,125], 'Ad_sbuys-square-button_1_4_1')
450        .addService(googletag.pubads());
451        googletag.pubads().enableLazyLoad({
452            fetchMarginPercent: 50,
453            renderMarginPercent: 0,
454            mobileScaling: 2.0,
455        });
456        googletag.pubads().enableSingleRequest();
457        googletag.enableServices();
458    });
459</script>
459
460<div id="Ad_sbuys-square-button_1_4_1" class="ad ">
461        
461<script>
462        document.addEventListener("DOMContentLoaded", function () { 
463        vertLib.site.Common.setupObserverIntersection("#Ad_sbuys-square-button_1_4_1", () => {
464                googletag.cmd.push(function () {
465                    googletag.display("Ad_sbuys-square-button_1_4_1");
466                    });
467                });   
468        });        
469        </script>
469
470    
471</div>
472
473
474    </div>
475</div>
476    </div>
477
478        </div>
479        <div class="vm-layout-content-secondary pr-1 pl-4">
480            
481    <div class="vm-content-item vm-newsletterbribe vm-default">
482                
483
484
485<h3 class="vm-signup-header">Newsletter Signup</h3>
486<form class="vm-email-signup-form" action="/useremailonly/register?referringlink=sidebar-widget" method="post">
487    <input type="hidden" data-val="true" data-val-required="The ConsentType field is required." id="ConsentType" name="ConsentType" value="Generic" />
488    <div class="ajax-loader">
489        <span></span>
490    </div>
491    <div class="validation-summary validation-summary-valid" style="display: none;" data-valmsg-summary="true"><ul><li style="display:none"></li>
492</ul></div>
493    <p>Get the latest industry news, insights, and analysis delivered to your inbox.</p>
494    <p class="vm-signup-highlighted-text">Join your peers</p>
495    <input type="hidden" data-val="true" data-val-required="The Source field is required." id="Source" name="Source" value="EmailReg-SBUYS" />
496    <div class="form-group row">
497        <div class="col-sm-12">
498            <input type="text" class="form-control form-control-sm email-input-consent-check-trigger" placeholder="Email" maxlength="100" data-val="true" data-val-regex="The E-mail field is not a valid e-mail address." data-val-regex-pattern="^(?!.*([!#$%&amp;&#x27;*&#x2B;-/=?^_`{|])\1)[A-Za-z0-9]&#x2B;([!#$%&amp;&#x27;*&#x2B;-/=?^_`{|]?[A-Za-z0-9]&#x2B;\.?){1,4}@[A-Za-z0-9]&#x2B;([.-]?[A-Za-z0-9]&#x2B;)*\.[A-Za-z]{2,}$" data-val-required="You must enter a valid email address" id="Email" name="Email" value="" />
499            <span class="field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span>
500        </div>
501    </div>
502    <div class="form-row">
503        <div class="col-sm-12">
504            <div class="nl-consent-container" style="display: none;">
505                <div class="consent-field nl-consent-container form-check" data-gdpr-mode="false"><label class="form-check-label"><strong class="standard-consent-content"><input aria-describedby="NlConsent-description" aria-required="true" class="form-check-input" data-val="true" data-val-range="You must accept the Terms And Conditions." data-val-range-max="True" data-val-range-min="True" data-val-required="The NlConsent field is required." name="NlConsent" type="checkbox" value="true" /><span id="NlConsent-description">I agree to the <a href="/static/legal" target=""><strong>Terms</strong></a>.</span></strong></label><span class="field-validation-valid validation-message" data-valmsg-for="NlConsent" data-valmsg-replace="true"></span></div>
506            </div>
507            <div class="client-consent-container" style="display: none;">
508                <div class="consent-field client-consent-container form-check" data-gdpr-mode="false"><label class="form-check-label"><strong class="standard-consent-content"><input aria-describedby="ClientConsent-description" aria-required="true" class="form-check-input" data-val="true" data-val-required="The ClientConsent field is required." data-val-requiredforconsenttype="This consent is required for your region." data-val-requiredforconsenttype-consentfield="ConsentType" data-val-requiredforconsenttype-requiredtypes="GDPR" name="ClientConsent" type="checkbox" value="true" /><span id="ClientConsent-description">I agree to the <a href="/static/privacy" target=""><strong>Privacy Policy</strong></a>.</span></strong></label><span class="field-validation-valid validation-message" data-valmsg-for="ClientConsent" data-valmsg-replace="true"></span></div>
509            </div>
510        </div>
511    </div>
512    <div class="row justify-content-end mt-3">
513        <div class="col-12">
514            <button type="submit" class="btn btn-block btn-sm vm-button">
515                <i class="fa fa-user"></i>
516                <span class="vm-button-text">SIGN ME UP</span>
517            </button>
518        </div>
519    </div>
520<input name="__RequestVerificationToken" type="hidden" value="CfDJ8L4Tx_kqk_hOqQdWmadsynQPhO8AiCyq_SODtiK-H-sS5jOIxbu2eF6JWR2ec1AyDa7R6RHAMOZR-gc0g8km9BAfXxpjPdVxwcqUwSvAkJBMW04TThm5HJlA7YYpgoo2KKYkspC5a6nEKGNrJCs-gVU" /></form>
521
522
523
524
525    </div>
526
527        </div>
528
529</div>
530<div class="row no-gutters p-3 pl-md-0 pr-md-0">
531    <div class="vm-layout-content-full-width">
532        
533
534    </div>
535</div>
536
537
538<script type="text/javascript">
539 document.addEventListener("DOMContentLoaded", function() {
540   const optInConfirmationPage = window['__OPT_IN_CONFIRMATION_PAGE__'];
541
542   if (optInConfirmationPage && window.location.href.indexOf(optInConfirmationPage) > -1) {
543      vertLib.site.Common.verifyOptInCaptchaEvent({
544        url: '/opt-in',
545        userId: window.location.href.split("userId=")[1].split("&")[0],
546        status: window.location.href.split("status=")[1].split("&")[0],
547        online: window["__currentOnline__"],
548        captchaTokenUrl: '/recaptcha',
549        recaptchaKey: '6Lcl0Z8qAAAAADRTBFqol-uEvsmwWHnNiedoGJdv'
550      });
551   }
552})
553</script>
553
554    </main>
555</div>
556
557
558<footer class="border-top vert-footer d-print-none">
559    <div class="container">
560        <div class="row">
561                <div class="col-sm">
562
563                        <h5 class="text-dark text-primary">About Us</h5>
564                        <ul class="list-unstyled">
565                                <li>
566                                    <a href="/static/about" >Contact School Buyers Online</a>
567                                </li>
568                                <li>
569                                    <a href="/doc/guest-expert-article-guidelines-0001&#x9;" >Editorial Submission Guidelines</a>
570                                </li>
571                        </ul>
572                </div>
573        </div>
574    </div>
575        <div class="container pb-3">
576            <div class="d-print-none row no-gutters justify-content-center">
577                <div class="d-none d-md-block col-auto">
578                    
579
580<!-- Adds PubAds Section -->
581<script>
582    googletag.cmd.push(function () {
583        googletag
584        .defineSlot('/52748101/schoolbuyersonline/sbuys-leaderboard', [728,90], 'Ad_3e270862-d4e8-4392-896d-94449cdcb6f7')
585        .addService(googletag.pubads());
586        googletag.pubads().enableLazyLoad({
587            fetchMarginPercent: 50,
588            renderMarginPercent: 0,
589            mobileScaling: 2.0,
590        });
591        googletag.pubads().enableSingleRequest();
592        googletag.enableServices();
593    });
594</script>
594
595<div id="Ad_3e270862-d4e8-4392-896d-94449cdcb6f7" class="ad ">
596        
596<script>
597        document.addEventListener("DOMContentLoaded", function () { 
598        vertLib.site.Common.setupObserverIntersection("#Ad_3e270862-d4e8-4392-896d-94449cdcb6f7", () => {
599                googletag.cmd.push(function () {
600                    googletag.display("Ad_3e270862-d4e8-4392-896d-94449cdcb6f7");
601                    });
602                });   
603        });        
604        </script>
604
605    
606</div>
607
608
609                </div>
610                <div class="d-none d-md-block col-auto pl-2">
611                    
612
613<!-- Adds PubAds Section -->
614<script>
615    googletag.cmd.push(function () {
616        googletag
617        .defineSlot('/52748101/schoolbuyersonline/sbuys-earpiece', [230,90], 'Ad_bf4f5e3a-00c0-434f-b7ba-36b30539a170')
618        .addService(googletag.pubads());
619        googletag.pubads().enableLazyLoad({
620            fetchMarginPercent: 50,
621            renderMarginPercent: 0,
622            mobileScaling: 2.0,
623        });
624        googletag.pubads().enableSingleRequest();
625        googletag.enableServices();
626    });
627</script>
627
628<div id="Ad_bf4f5e3a-00c0-434f-b7ba-36b30539a170" class="ad ">
629        
629<script>
630        document.addEventListener("DOMContentLoaded", function () { 
631        vertLib.site.Common.setupObserverIntersection("#Ad_bf4f5e3a-00c0-434f-b7ba-36b30539a170", () => {
632                googletag.cmd.push(function () {
633                    googletag.display("Ad_bf4f5e3a-00c0-434f-b7ba-36b30539a170");
634                    });
635                });   
636        });        
637        </script>
637
638    
639</div>
640
641
642                </div>
643            </div>
644        </div>
645
646    <div class="container small pb-3 text-center">
647        <a href="/static/copyright">Copyright</a>
648        &copy; 1996-2026 <a href="https://www.vertmarkets.com">VertMarkets, Inc.</a>
649        All Rights Reserved.
650        <a href="/static/legal">Terms of Use</a>.
651        <a href="/static/privacy">Privacy Statement</a>.
652        <a href="/user-request">Subscriber Request Form</a>.
653        <a href="/user-request?privacyType=ccpa">Don't sell my information</a>
654    </div>
655</footer>
656
657
658
659<!-- Google Tag Manager -->
660<script type="text/javascript">
661    let score = '';
662    let gtmEvents = [];
663    
664    function loadRecaptcha () {
665        if (vertLib && typeof vertLib.site.Common.getRecaptchaToken === 'function') {
666            // when load and library is loaded then execute           
667                vertLib.site.Common.setupGTM(dataLayer);
668            vertLib.site.Common.getRecaptchaToken('ga').then(function (token) {
669                return $.post('/recaptcha', { token: token });
670            }).then(function (response) {
671                score = response.score.toString();
672                    gtmEvents = [{"$type":"Vert.Sites.Web.Models.Analytics.Events.GtmUserDataEvent, Vert.Sites.Web","event":"page_view","event_category":"","event_action":"","event_source":"server_side","portal":"SBUYS"}] || [];
673                    vertLib.site.Common.logGTMEvents(gtmEvents, score, dataLayer);
674            });
675        }
676    }
677</script>
677
678
679<script async='async' src='https://www.googletagservices.com/tag/js/gpt.js'></script>
679
680
681<!-- End Google Tag Manager -->
682    
683 
683<script type="text/javascript">
684    window["munchkinUrl"] = 'https://app-ab30.marketo.com';
685    window["munchkinFormId"] ='1067'
686    window["munchkinInstanceId"] = '075-NVC-086';
687</script>
687
688
689<script>
690    window.addEventListener('load', initMunchkin);
691    
692    function initMunchkin() {
693        if (vertLib && typeof vertLib.site.Common.associateMunchkin === 'function') {
694            vertLib.site.Common.associateMunchkin({ Email: window['__USER_EMAIL__'], UserId: window['__USER_ID__'] });                
695        }
696    }
697</script>
697
698
699<div id="userSubscriptionFormModal" class="modal">
700    <div class="modal-dialog vm-modal">
701        <div class="modal-content">
702            <div class="modal-header">
703                <img src="https://vertassets.blob.core.windows.net/sites/logos/sbuys.png" alt="School Buyer&#x27;s Online: Digital Marketplace for the education industry" class="mt-3" />
704                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
705            </div>
706            <div class="modal-body">
707                <div id="userSubscriptionContainer">
708    <div id="areaOfFocus" class="mt-3 mx-4 mb-4"></div>
709    <div id="login" class="mt-3 mx-4 mb-4"></div>
710</div>
711
712<script id="areaOfFocusTemplate" type="text/x-template">
713    {{@if (it.message)}}
714        <div class="alert alert-success d-flex flex-row p-2 m-0">
715            <i class="fa fa-info mr-2 mt-1"></i>
716            <div>{{it.message | safe}}</div>
717        </div>
718    {{/if}}
719    <form method="post" action="/user-subscription/update" id="areaOfFocusForm" class="vm-form-alt">
720        {{@if (it.showUserInfoFields)}}
721            <div>
722                <div class="pt-3">Please tell us more about you so that we can customize our newsletters to your specific interests:</div>
723                <div class="row">
724                    <div class="form-group col-md-6">
725                        <label for="JobTitle">Job Title</label>
726                        <input type="text" class="form-control form-control-sm" id="JobTitle" name="JobTitle" value="{{ it.jobTitle }}" />
727                    </div>
728                    <div class="form-group col-md-6">
729                        <label for="Company">Company</label>
730                        <input type="text" class="form-control form-control-sm" id="Company" name="Company" value="{{ it.company }}" />
731                    </div>
732                </div>
733            </div>
734        {{/if}}
735        {{@if (it.subscriptions.length)}}
736            <div class="vm-checkbox-container primary">
737                 <div class="form-check-inline p-2 input-container form-check">
738                    {{@if (it.subscriptions[0].isSelected)}}
739                        <input type="checkbox" name="subscriptions" checked="checked" value="{{it.subscriptions[0].id}}" class="form-check-input"/> <label class="form-check-label">{{it.subscriptions[0].text}}</label>
740                    {{#else}}
741                        <input type="checkbox" name="subscriptions" value="{{it.subscriptions[0].id}}" class="form-check-input"/> <label class="form-check-label">{{it.subscriptions[0].text}}</label>
742                    {{/if}}
743                </div>
744            </div>
745        {{/if}}
746        {{@if (it.personas.length)}}
747            <div class="vm-checkbox-container">                
748                <div class="p-4 input-container">
749                    <div class="topics-blurb">What topics interest you?  (Check all that apply.)</div>
750                    {{@each(it.personas) => pers, index}}                        
751                        {{@if (index%2 === 0)}}
752                            <div class="row pl-3 vm-checkbox-container">
753                        {{/if}}
754                         <div class="col-md-6 text-capitalize form-check">
755                            {{@if (pers.isSelected)}}
756                                <input type="checkbox" name="personas" checked="checked" value="{{pers.id}}" class="form-check-input"/> <label class="form-check-label">{{pers.text}}</label>
757                            {{#else}}
758                                <input type="checkbox" name="personas" value="{{pers.id}}" class="form-check-input"/> <label class="form-check-label">{{pers.text}}</label>
759                            {{/if}}
760                        </div>
761                        {{@if (index%2 !== 0 && index > 0)}}
762                            </div>
763                        {{/if}}                       
764                    {{/each}}
765                    {{@if (it.personas.length%2 === 0)}}
766                        </div>
767                    {{/if}}
768                </div>
769            </div>
770        {{#elif (it.subscriptions.length)}}
771            <div class="pt-3">You may also be interested in these industry newsletters:</div>
772            <div class="p-4 input-container">
773                {{@each(it.subscriptions) => sub, index}}
774                    {{@if (index > 0)}}
775                        {{@if (index%2 !== 0)}}
776                            <div class="row pl-3 vm-checkbox-container">
777                        {{/if}}
778                        <div class="col-md-6 text-capitalize form-check">
779                            {{@if (sub.isSelected)}}
780                                <input type="checkbox" name="subscriptions" checked="checked" value="{{sub.id}}" class="form-check-input"/> <label class="form-check-label">{{sub.text}}</label>
781                            {{#else}}
782                                <input type="checkbox" name="subscriptions" value="{{sub.id}}" class="form-check-input"/> <label class="form-check-label">{{sub.text}}</label>
783                            {{/if}}
784                        </div>                        
785                        {{@if (index%2 === 0)}}
786                            </div>                        
787                        {{/if}}
788                    {{/if}}
789                {{/each}}
790                {{@if (it.subscriptions.length%2 === 0)}}
791                    </div>
792                {{/if}}
793                <button id="selectAll" type="button" class="btn btn-link pl-0 pt-2">Select All</button>
794            </div>            
795        {{/if}}
796        <div class="row justify-content-end">
797            <div class="col-12">
798                <button type="submit" class="btn vm-alt-button mt-4">
799                    <span class="vm-button-text">Finish</span>
800                </button>
801            </div>
802        </div>
803        <input type="hidden" name="OnlineId" id="OnlineId" value="{{it.onlineId}}" />
804    </form>
805</script>
805
806
807<script id="loginTemplate" type="text/x-template">
808    {{@if (it.message)}}
809        {{@if (it.hasError)}}
810            <div class="alert alert-danger d-flex flex-row p-2 m-0">
811        {{ #else }}
812            <div class="alert alert-warning d-flex flex-row p-2 m-0">
813        {{/if}}
814            <i class="fa fa-info mr-2 mt-1"></i>
815            <div>{{it.message | safe}}</div>
816        </div>
817    {{/if}}
818    <form method="post" action="/user-subscription/login" id="loginForm" class="vm-form-alt">
819        <div class="row">
820            <div class="form-group col">
821                <label for="Email">Email</label>
822                <input type="text" class="form-control form-control" id="Email" name="Email" maxlength="100" value="{{it.email}}" />
823            </div>
824        </div>
825        <div class="row">
826            <div class="form-group col">
827                <label for="Password">Password</label>
828                <input type="password" class="form-control form-control" id="Password" name="Password" />
829            </div>
830        </div>
831        <div class="row">
832            <div class="form-group col">
833                <small>
834                    <a href="/password/forgotpassword">Forgot your password?</a>
835                </small>
836            </div>
837        </div>
838        
839        <div class="vm-oauth-providers">
840            <span class="small mb-4">... or you can:</span>
841            <a class="btn btn-lg rounded-circle" role="button" href="/user-oauth/login?oAuthType=Google&source=user-sub">
842                <i class="fa fa-google" aria-hidden="true"></i>
843            </a>
844            <a class="btn btn-lg rounded-circle" role="button" href="/user-oauth/login?oAuthType=Facebook&source=user-sub">
845                <i class="fa fa-facebook" aria-hidden="true"></i>
846            </a>
847            <a class="btn btn-lg rounded-circle" role="button" href="/user-oauth/login?oAuthType=LinkedIn&source=user-sub">
848                <i class="fa fa-linkedin" aria-hidden="true"></i>
849            </a>
850        </div>
851
852        <div class="row justify-content-end">
853            <div class="col-12">
854                <button type="submit" class="btn vm-alt-button mt-4">
855                    <span class="vm-button-text">Sign In</span>
856                </button>
857            </div>
858        </div>        
859        
860        <input type="hidden" name="JobTitle" id="JobTitle" value="{{it.jobTitle}}" />
861        <input type="hidden" name="Company" id="Company" value="{{it.company}}" />
862        <input type="hidden" name="OnlineId" id="OnlineId" value="{{it.onlineId}}" />
863        <input type="hidden" name="Privacy" id="OnlineId" value="{{it.privacy}}" />
864    </form>
865</script>
865
866
867<script>
868    window.userSubSettings = undefined;
869</script>
869
870            </div>
871        </div>
872    </div>
873</div>
874
875
876    
877
878
879
880<script id="modalTemplate" type="text/x-template">
881    <div class="modal fade" id="{{ it.id }}" role="dialog" tabindex="-1" data-keyboard="false" data-backdrop="{{ (it.backdrop || 'true') }}">
882        <div class="modal-dialog vm-modal">
883            <div class="modal-content">
884                {{ @if(it.title) }}
885                <div class="modal-header no-gutters justify-content-between">
886                    <div class="col">
887                        <h2>{{ it.title | safe }}</h2>
888                    </div>
889                    <div class="col-auto">
890                        <div class="vm-ajax-loader"><span></span></div>
891                        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
892                    </div>
893                </div>
894                {{ /if }}
895                <div class="modal-body">{{ it.body | safe }}</div>
896                {{ @if (it.hideFooter !== true) }}
897                <div class="modal-footer">
898                    <div class="row justify-content-end">
899                        <div class="col-12">
900                            <button type="button" data-dismiss="modal" class="btn vm-button">Close</button>
901                        </div>
902                    </div>
903                </div>
904                {{ /if }}
905            </div>
906        </div>
907    </div>
908</script>
908
909
910</body>
911</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.