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!
The #PhysEd Blog
Latest posts and updates.
Curriculum
July 3, 2025
A Curriculum of Their Own: How I Designed Bespoke PE Outcomes for My School
I designed a bespoke set of P-5 outcomes for my school. Here's how.
Joey Feith
Author
More posts
All
Teacher Wellness
Advocacy
Reflections
Curriculum
Assessment
Teaching
Resources
Teaching
How I Start My School Year: Lesson One
Read more
Assessment
Plickers Assessment Magnets
Read more
Curriculum
Unpacking The National Standards: Backwards Design In #PhysEd
Read more
Advocacy
Funding Your Physical Education Program
Read more
Resources
Getting Started With OPEN
Read more
Curriculum
International Dance Showcase Unit Teacher Pack
Read more
Curriculum
Chasing & Fleeing Games Teacher Pack
Read more
Reflections
On Student Reflection In Physical Education
Read more
Resources
The ActivityDex
Read more
Teaching
Twitter Chats for Beginners
Read more
Assessment
How I Grade in Physical Education
Read more
Assessment
Physical Education Student Portfolios
Read more
Assessment
Mini Coaching In Physical Education
Read more
Resources
Live From #PhysEd! My Television Setup!
Read more
Assessment
Simple Assessment With Plickers & Magnets
Read more
Curriculum
How To Create Your Physical Education Curriculum Map
Read more
Advocacy
The #MaxYourDays Mural: Celebrating Physical Literacy Journeys
Read more
Curriculum
Spikeball in Physical Education
Read more
Teaching
Setting Up Successful Lessons with What?/Why?/How?
Read more
Curriculum
Elementary Wellness Month Activities
Read more
Assessment
Team #PhysEd Stories: Standards-Based Instruction
Read more
Reflections
What Learning Opportunities Are You Creating For Your Students?
Read more
Reflections
Great Job!
Read more
Curriculum
Purposeful #PhysEd: A Visual Guide
Read more
Curriculum
Building A Team Handball Unit
Read more
Previous
Next
Newsletter
Sign up and never miss a blog post again.
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'); } } });