About
Resources
Blog
Games
Visuals
Podcast
Professional Development
Resources
Guides
Courses
Membership
Events
#PEChat
Speaking
Workshops
Contact
Join #PhysEdU!
Cart
0
Your Cart
$ 0 USD
:
Remove
Nothing in your cart
Go to Visuals
Product is not available in this quantity.
Join #PhysEdU!
Blog categories
Take your learning further.
Blog posts
All
Teacher Wellness
Advocacy
Reflections
Curriculum
Assessment
Teaching
Resources
Curriculum
July 3, 2025
A Curriculum of Their Own: How I Designed Bespoke PE Outcomes for My School
Joey Feith
Author
Curriculum
February 16, 2023
Teaching Rhythm and Dance In Physical Education
Joey Feith
Author
Curriculum
March 16, 2022
Birding In PE: Building Connections To The Natural World
Joey Feith
Author
Curriculum
May 7, 2021
The Interplanetary Games: A Field Day Guide
Joey Feith
Author
Curriculum
November 23, 2020
The Striking & Fielding Games Teacher Pack
Joey Feith
Author
Curriculum
September 24, 2019
S.M.A.R.T. Goals Fitness Unit Teacher Pack
Joey Feith
Author
Curriculum
February 7, 2019
Jump Rope Deli: Developing Performance Confidence In Physical Education
Joey Feith
Author
Curriculum
November 13, 2017
Obstacle Course Racing In Physical Education
Joey Feith
Author
Curriculum
April 18, 2017
Unpacking The National Standards: Backwards Design In #PhysEd
Joey Feith
Author
Curriculum
March 29, 2017
International Dance Showcase Unit Teacher Pack
Joey Feith
Author
Curriculum
March 22, 2017
Chasing & Fleeing Games Teacher Pack
Joey Feith
Author
Curriculum
January 10, 2017
How To Create Your Physical Education Curriculum Map
Joey Feith
Author
Curriculum
October 7, 2015
Spikeball in Physical Education
Joey Feith
Author
Curriculum
July 7, 2014
Elementary Wellness Month Activities
Joey Feith
Author
Curriculum
November 28, 2013
Purposeful #PhysEd: A Visual Guide
Joey Feith
Author
Curriculum
November 13, 2013
Building A Team Handball Unit
Joey Feith
Author
Curriculum
May 28, 2013
S.M.A.R.T. Goals Fitness Unit
Joey Feith
Author
Curriculum
October 30, 2012
Halloween Games For #Physed
Joey Feith
Author
Curriculum
September 4, 2012
Purposeful #Physed: Curriculum Mapping
Joey Feith
Author
Curriculum
April 8, 2012
Crowdsourced Survivor Unit
Joey Feith
Author
Newsletter
Sign up and never miss another blog post!
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
// Blog CTA Click Tracking for GA4 // Add this script to your Webflow site's custom code section // Function to track CTA clicks function trackBlogCTA(ctaLocation, ctaText, destinationUrl) { // Send event to GA4 if (typeof gtag !== 'undefined') { gtag('event', 'blog_cta_click', { 'event_category': 'Blog CTA', 'event_label': ctaText, 'cta_location': ctaLocation, // 'top', 'middle', 'bottom', 'inline' 'blog_post': window.location.pathname, 'destination_url': destinationUrl }); console.log('Blog CTA tracked:', { location: ctaLocation, text: ctaText, post: window.location.pathname }); } } // Automatically track all CTA clicks on blog posts document.addEventListener('DOMContentLoaded', function() { // Only run on blog post pages if (!window.location.pathname.includes('/blog/')) return; // Find all CTA links (adjust selectors based on your site structure) const ctaSelectors = [ 'a[href*="/membership"]', 'a[href*="/join"]', 'a[href*="physedu"]', 'a.cta-button', // If you have a specific class 'a.button-primary' // Adjust to match your button classes ]; // Combine all selectors const allCTALinks = document.querySelectorAll(ctaSelectors.join(', ')); allCTALinks.forEach(function(link) { link.addEventListener('click', function(e) { // Determine CTA location based on position on page const rect = link.getBoundingClientRect(); const scrollPos = window.scrollY + rect.top; const pageHeight = document.body.scrollHeight; const relativePos = scrollPos / pageHeight; let ctaLocation = 'middle'; if (relativePos < 0.25) ctaLocation = 'top'; else if (relativePos > 0.75) ctaLocation = 'bottom'; // Get CTA text const ctaText = link.textContent.trim() || link.getAttribute('aria-label') || 'Unknown'; // Get destination URL const destinationUrl = link.getAttribute('href'); // Track the click trackBlogCTA(ctaLocation, ctaText, destinationUrl); }); }); console.log('Blog CTA tracking initialized. Found ' + allCTALinks.length + ' CTA links.'); }); // Alternative: Manual tracking function you can call from specific CTAs // Usage:
window.trackBlogCTA = trackBlogCTA; // #PhysEdU Membership Conversion Tracking // Add this to Webflow Project Settings > Custom Code > Footer Code // Track when someone clicks to join #PhysEdU (starts checkout) document.addEventListener('DOMContentLoaded', function() { // Find all links to Circle checkout pages const checkoutLinks = document.querySelectorAll('a[href*="physedu.circle.so/checkout"]'); checkoutLinks.forEach(function(link) { link.addEventListener('click', function(e) { // Determine which tier based on URL let tier = 'unknown'; let value = 0; if (link.href.includes('/checkout/community')) { tier = 'community'; value = 10; } else if (link.href.includes('/checkout/plus')) { tier = 'plus'; value = 49; } else if (link.href.includes('/checkout/pro')) { tier = 'pro'; value = 99; } // Track the checkout initiation if (typeof gtag !== 'undefined') { gtag('event', 'begin_checkout', { 'event_category': 'PhysEdU Membership', 'event_label': tier, 'value': value, 'currency': 'USD', 'items': [{ 'item_id': 'physedu_' + tier, 'item_name': '#PhysEdU ' + tier.charAt(0).toUpperCase() + tier.slice(1), 'price': value, 'quantity': 1 }] }); console.log('Tracked: Begin checkout for #PhysEdU ' + tier); } }); }); console.log('PhysEdU checkout tracking initialized. Found ' + checkoutLinks.length + ' checkout links.'); }); // Track successful membership signup (when they return from Circle) // This checks if they're landing on a page after successful Circle checkout window.addEventListener('load', function() { // Check if URL contains success parameters // Circle typically adds parameters like ?success=true or redirects to a specific page const urlParams = new URLSearchParams(window.location.search); // Check for common success indicators const hasSuccess = urlParams.get('success') === 'true' || urlParams.get('checkout') === 'success' || urlParams.get('member') === 'new' || document.referrer.includes('circle.so/checkout'); // Also check if landing on a "welcome" or "success" page const isWelcomePage = window.location.pathname.includes('/welcome') || window.location.pathname.includes('/success') || window.location.pathname.includes('/getting-started'); if (hasSuccess || (isWelcomePage && document.referrer.includes('circle.so'))) { // Try to determine tier from URL or page content let tier = 'community'; // default assumption let value = 10; // Check URL for tier indicators if (urlParams.get('tier') === 'plus' || window.location.href.includes('plus')) { tier = 'plus'; value = 49; } else if (urlParams.get('tier') === 'pro' || window.location.href.includes('pro')) { tier = 'pro'; value = 99; } // Fire the conversion event if (typeof gtag !== 'undefined') { gtag('event', 'physedu_signup', { 'event_category': 'PhysEdU Membership', 'event_label': tier, 'value': value, 'currency': 'USD', 'transaction_id': 'physedu_' + Date.now(), // Simple unique ID 'items': [{ 'item_id': 'physedu_' + tier, 'item_name': '#PhysEdU ' + tier.charAt(0).toUpperCase() + tier.slice(1), 'price': value, 'quantity': 1 }] }); // Also fire a generic conversion event gtag('event', 'conversion', { 'send_to': 'AW-CONVERSION-ID/physedu_signup', // Update with your conversion ID if using Google Ads 'value': value, 'currency': 'USD', 'transaction_id': 'physedu_' + Date.now() }); console.log('Tracked: PhysEdU signup conversion - ' + tier + ' tier ($' + value + ')'); // Set a flag so we don't track this twice if they refresh sessionStorage.setItem('physedu_signup_tracked', 'true'); } } });