Instant access in the MBA Toolkit app · One-time purchase
For rec, select & travel coaches
Practice plans that do the thinking, so you can do the coaching.
Situations guides your players learn by playing, 150 ready-to-run practices, and a drill library, all in the MBA Toolkit app on your phone. Built for coaches short on prep time, not know-how.
Pay once, yours to keep · Phone, tablet or computer · 90 days of the practice planner free
The Sunday-night scramble
You didn't sign up to build practice plans from scratch every week.
Between lineups, parent texts, and an actual job, most coaches get maybe 20 minutes to plan a practice. Here's the difference a system makes.
Without a system
✕Same five drills, every practice
✕Pitchers & catchers with no development plan
✕No real practice plan — just a rough idea
✕No way to track player progress
✕Improvising defense before every game
With the system
✓150 ready-to-run practices (60, 90 or 120 minutes)
✓Every defensive situation, animated so players see where to go
✓Quiz games that test what your players actually learned
✓A drill library that grows every day
✓A planner that builds practice around what your team needs to fix
Find your bundle
Three levels. One system.
Every bundle builds on the last and opens in the MBA Toolkit app. Pay once, keep it, and get 90 days of the practice planner free. Upgrade any time and pay only the difference.
Level 1 · New & rec coaches
Beginner Coach Bundle
The defense and base running every team needs, plus a ready-made practice for every day.
Defensive Situations Guide: all 40 situations, with Animated Defense showing where all 9 fielders go
Base Running Guide: all 46 situations, plus the Read & Run quiz game
150 ready-made practices: 50 plans, each in 60, 90 and 120-minute versions
All four guides and every drill, for teams chasing tournament wins.
Everything in Advanced
Pitch Selection Guide: all 40 situations, plus the Call the Pitch quiz game
The full drill library: 344 drills across pitching, catching, every infield position, outfield, hitting, base running and conditioning, with new ones added every day
Build practices around what your team actually needs to fix
Every bundle comes with 90 days of the MBA Toolkit practice planner, starting the day you buy.
Fix a problem: pick what your team is struggling with (overthrows, missed grounders, a pitcher who can’t find the zone) and get the drills that fix the cause
Build your own: put together a practice station by station from your drills
Saved plans: save your practices and pull them up at the field
15 Team Passes: share the quiz games and up to 12 situations from your guides with players and assistant coaches, on their own phones
After 90 days: keep the planner for $9.99/month, cancel anytime. Or let it end. Your guides, games, ready-made practices and drills stay yours either way, and your saved plans are kept for when you turn it back on. We’ll email you before the trial ends.
Why it works
Built for the practice you're actually running Tuesday.
01
Grab-and-go structure
Pick a ready-made practice and you’ve got the whole thing timed out, with every drill one tap away. Not a checklist you still have to turn into a plan.
02
Scales with your team
Start with defense and base running in Beginner, then add hitting, pitch selection and more drills as your players progress. Upgrades cost only the difference.
03
Players learn by playing
Every guide comes with a quiz game. Your players see the play, make the call, and find out right away if they got it right, on any phone at the field or at home.
The bottom line
Coaches who plan win more.
Compare bundles
The full lineup card.
Exactly what's in each bundle — nothing hidden, nothing assumed.
14-day money-back guarantee on Advanced and Travel. If either bundle isn’t right for your team, email support@mbaseballacademy.com within 14 days of buying for a full refund. The Beginner bundle is final sale.
If a drill’s unclear, something in the app isn’t working, or a bundle isn’t the right fit for your team’s level, email us at support@mbaseballacademy.com. We’ll help you get it working, or point you to the bundle that fits better.
★★★★★
"Best coaching resource I've ever bought for my team."
— Coach Mike, Georgia
Questions
Before you head to the dugout
Is this a one-time purchase?
Yes. The bundle is a one-time purchase and everything in it is yours to keep: the guides, quiz games, ready-made practices and drills. The only optional subscription is the practice planner, at $9.99/month after your 90 free days.
How do I get my bundle after I buy?
You create your account at checkout and land right in the MBA Toolkit app. After that, log in any time at mbaseballacademy.com/practice-planner-app/. It works in the browser on your phone, tablet or computer, and you can add it to your phone’s home screen like an app.
Is there a money-back guarantee?
Yes, on the Advanced and Travel bundles. If either isn’t right for your team, email support@mbaseballacademy.com within 14 days of buying and we’ll refund you in full. The Beginner bundle is final sale. The $9.99/month planner, if you keep it after your 90 free days, isn’t refunded for partial months.
Is it still a PDF download?
No. The bundles now live in the MBA Toolkit app instead of PDFs, so you get the animated plays, the quiz games, ready-made practices and drills in one place, always up to date, on whatever device you have at the field. Already bought the PDF bundle? It’s in the app too, with 90 days of the practice planner free from the first time you open it. Claim your bundle.
What’s the difference between the three bundles?
Beginner has the Defensive Situations and Base Running guides with their games, the 150 ready-made practices and every drill in them. Advanced adds the Hitting Situations guide and game plus the Hitting, Infield, Outfield and Base Running drills. Travel adds the Pitch Selection guide and game plus the full drill library: pitching, catching, every infield position, conditioning and more.
What’s the practice planner, and what happens after 90 days?
The planner is Fix a problem, Build your own, saved practice plans and 15 Team Passes for your players. It’s free for 90 days with any bundle, and we’ll email you before it ends. Keep it for $9.99/month (cancel anytime), or let it end: your saved plans are kept for later, and everything else in your bundle stays open.
Can I upgrade later?
Yes. Log in and choose Advanced or Travel any time. You pay only the difference from the bundle you already own.
Is this for new coaches or experienced ones?
Both. New coaches get a ready-made structure so nothing gets missed. Experienced coaches get the situational detail and drill depth most rec-level resources skip.
Does this work for any age group?
Yes. The practices come in versions for different age groups, and the situations and games work from youth rec up through travel ball.
Ready when you are
Your next practice is already planned.
Pick the bundle that matches where your team is right now. Pay once, get 90 days of the practice planner free, and upgrade any time as they grow.
(function () {
// Live drill counts per bundle. If this block didn't run the shortcodes,
// hide the numbers until the status call below fills them in.
// No backslashes in this block: WordPress strips them from Custom HTML.
var countEls = document.querySelectorAll('.mba-landing [data-bundle-drills]');
countEls.forEach(function (el) {
var n = el.querySelector('.n');
if (n && n.textContent.indexOf('[') === 0) { n.textContent = ''; el.style.visibility = 'hidden'; }
});
if (!window.fetch) return;
function money(n) { return '$' + (Math.round(n * 100) / 100).toString().replace(/[.]00?$/, ''); }
fetch('/wp-admin/admin-ajax.php?action=mba_bundle_status', { credentials: 'same-origin', cache: 'no-store' })
.then(function (r) { return r.ok ? r.json() : null; })
.then(function (d) {
if (!d) return;
countEls.forEach(function (el) {
var c = d.drills && d.drills[el.getAttribute('data-bundle-drills')];
var n = el.querySelector('.n');
if (c && n) { n.textContent = Number(c).toLocaleString(); el.style.visibility = ''; }
});
// Coaches who already own a bundle see upgrade prices (everyone else: full prices).
if (!d.loggedIn || (!d.own && !d.full)) return;
document.querySelectorAll('.mba-landing [data-tier]').forEach(function (el) {
var tier = Number(el.getAttribute('data-tier'));
var owned = d.full || tier <= d.own;
var btn = el.querySelector('.btn');
var now = el.querySelector('.now');
var head = el.querySelector('.price');
if (owned) {
if (el.classList.contains('bundle-card')) el.classList.add('is-owned');
if (now) now.innerHTML = '<span class="owned-tag">' + (d.full ? 'Included in your subscription' : (tier === d.own ? 'You own this' : 'Included in yours')) + '</span>';
if (head) head.textContent = d.full || tier === d.own ? 'Owned' : 'Included';
if (btn) { btn.textContent = 'Open the Toolkit'; btn.href = d.appUrl; }
return;
}
var up = d.upgrade && d.upgrade[tier];
if (up === undefined) return;
if (now) now.innerHTML = money(up) + ' <span style="font-family:Karla,sans-serif;font-size:15px">to upgrade</span>';
if (head) head.textContent = money(up) + ' upgrade';
if (btn) btn.textContent = 'Upgrade for ' + money(up);
var anchor = el.querySelector('.anchor');
if (anchor) anchor.textContent = 'You own the ' + d.ownName + ' bundle, so you pay only the difference (normally ' + money(d.prices[tier]) + ').';
});
})
.catch(function () {});
})();
var iconic_wsb_frontend_vars = {"ajax_url":"/wp-admin/admin-ajax.php","nonce":"dbfd319f93","fbt_use_ajax":"1","is_checkout":"","i18n":{"error":"Please Try Again","success":"Added to Cart","add_selected":"Add Selected to Cart","disabled_add_to_cart":"Please select a variation before adding the selected products to your cart."},"modal_options":{"showCloseBtn":false}};
//# sourceURL=iconic_wsb_frontend_scripts-js-extra
/*!
* jQuery Cookie Plugin v1.4.1
* https://github.com/carhartl/jquery-cookie
*
* Copyright 2006, 2014 Klaus Hartl
* Released under the MIT license
*/
(function (factory) {
if (typeof define === 'function' && define.amd) {
// AMD (Register as an anonymous module)
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS
module.exports = factory(require('jquery'));
} else {
// Browser globals
factory(jQuery);
}
}(function ($) {
var pluses = /\+/g;
function encode(s) {
return config.raw ? s : encodeURIComponent(s);
}
function decode(s) {
return config.raw ? s : decodeURIComponent(s);
}
function stringifyCookieValue(value) {
return encode(config.json ? JSON.stringify(value) : String(value));
}
function parseCookieValue(s) {
if (s.indexOf('"') === 0) {
// This is a quoted cookie as according to RFC2068, unescape...
s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
}
try {
// Replace server-side written pluses with spaces.
// If we can't decode the cookie, ignore it, it's unusable.
// If we can't parse the cookie, ignore it, it's unusable.
s = decodeURIComponent(s.replace(pluses, ' '));
return config.json ? JSON.parse(s) : s;
} catch(e) {}
}
function read(s, converter) {
var value = config.raw ? s : parseCookieValue(s);
return $.isFunction(converter) ? converter(value) : value;
}
var config = $.cookie = function (key, value, options) {
// Write
if (arguments.length > 1 && !$.isFunction(value)) {
options = $.extend({}, config.defaults, options);
if (typeof options.expires === 'number') {
var days = options.expires, t = options.expires = new Date();
t.setMilliseconds(t.getMilliseconds() + days * 864e+5);
}
return (document.cookie = [
encode(key), '=', stringifyCookieValue(value),
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
options.path ? '; path=' + options.path : '',
options.domain ? '; domain=' + options.domain : '',
options.secure ? '; secure' : ''
].join(''));
}
// Read
var result = key ? undefined : {},
// To prevent the for loop in the first place assign an empty array
// in case there are no cookies at all. Also prevents odd result when
// calling $.cookie().
cookies = document.cookie ? document.cookie.split('; ') : [],
i = 0,
l = cookies.length;
for (; i < l; i++) {
var parts = cookies[i].split('='),
name = decode(parts.shift()),
cookie = parts.join('=');
if (key === name) {
// If second argument (value) is a function it's a converter...
result = read(cookie, value);
break;
}
// Prevent storing a cookie that we couldn't decode.
if (!key && (cookie = read(cookie)) !== undefined) {
result[name] = cookie;
}
}
return result;
};
config.defaults = {};
$.removeCookie = function (key, options) {
// Must not alter options, thus extending a fresh object...
$.cookie(key, '', $.extend({}, options, { expires: -1 }));
return !$.cookie(key);
};
}));
( function( $ ) {
if ($.cookie) {
$.cookie("ulpb_count34959", 'yes', {path: '/', expires : 30 });
}
})(jQuery);
jQuery(document).ready(function(){
jQuery(".pb_img_thumbnail").on("click",function(){
var clikedElID = jQuery(this).attr("id");
jQuery("#pb_lightbox"+clikedElID).css("display","block");
});
jQuery(".pb_single_img_lightbox").on("click",function(){
jQuery(this).css("display","none");
});
jQuery(window).scroll();
});
(function($) {
/**
* Copyright 2012, Digital Fusion
* Licensed under the MIT license.
* http://teamdf.com/jquery-plugins/license/
*
* @author Sam Sehnert
* @desc A small plugin that checks whether elements are within
* the user visible viewport of a web browser.
* only accounts for vertical position, not horizontal.
*/
$.fn.visible = function(partial) {
var $t = $(this),
$w = $(window),
viewTop = $w.scrollTop(),
viewBottom = viewTop + $w.height(),
_top = $t.offset().top,
_bottom = _top + $t.height(),
compareTop = partial === true ? _bottom : _top,
compareBottom = partial === true ? _top : _bottom;
return ((compareBottom <= viewBottom) && (compareTop >= viewTop));
};
jQuery(document).on("click", 'a[href^="#"]', function (event) {
event.preventDefault();
var clickedLinkElAttr = jQuery(this ).attr("href");
if(typeof(jQuery(clickedLinkElAttr).offset() ) != "undefined"){
jQuery("html, body").animate({
scrollTop: jQuery(jQuery.attr(this, "href")).offset().top
}, 500);
}
});
})(jQuery);
if(typeof pluginOpsCheckElViewFrame != "function" ){
function pluginOpsCheckElViewFrame (el) {
if (typeof jQuery === "function" && el instanceof jQuery) {
el = el[0];
}
if( typeof(el.getBoundingClientRect) == "function" ){
var rect = el.getBoundingClientRect();
windowInnerHeight = window.innerHeight;
if(rect.height >= windowInnerHeight){
rect.height = windowInnerHeight - 50;
}
docClientHeight = document.documentElement.clientHeight;
if( rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= (windowInnerHeight) &&
rect.right <= (window.innerWidth || document.documentElement.clientWidth) ) {
return "InView";
}else{
return "NotInView";
}
}else{
return "Function didnt work";
}
}
}
jQuery(window).scroll();
//# sourceURL=pluginops-landingpage-scripts-inline-js-footer-js-after
document.addEventListener( 'wpcf7submit', function ( event ) {
var detail = event.detail || {};
if ( 'mail_sent' !== detail.status ) {
return;
}
var apiResponse = detail.apiResponse || {};
if ( ! apiResponse.fb_pxl_code ) {
return;
}
try {
var s = document.createElement( 'script' );
s.textContent = apiResponse.fb_pxl_code;
document.head.appendChild( s );
} catch ( e ) {
// no-op
}
}, false );
(function() {
// Always start from a fresh object: a `||` fallback would keep a same-named DOM element alive.
window.wcAnalytics = {};
const wcAnalytics = window.wcAnalytics;
// Set the assets URL for webpack to find the split assets.
wcAnalytics.assets_url = 'https://mbaseballacademy.com/wp-content/plugins/jetpack/jetpack_vendor/automattic/woocommerce-analytics/src/../build/';
// Set the REST API tracking endpoint URL.
wcAnalytics.trackEndpoint = "https://mbaseballacademy.com/wp-json/woocommerce-analytics/v1/track";
// Set common properties for all events.
wcAnalytics.commonProps = {"ui":0,"blog_id":214105619,"store_id":"9e9485fd-e095-4895-b00c-6f417d1ee0ad","url":"https://mbaseballacademy.com","woo_version":"11.2.1","wp_version":"7.1.3","store_admin":0,"device":"desktop","store_currency":"USD","timezone":"-04:00","is_guest":1,"package_version":"0.18.0"};
// Set the event queue.
wcAnalytics.eventQueue = [];
// Features.
wcAnalytics.features = {
ch: false,
sessionTracking: false,
proxy: false,
};
wcAnalytics.breadcrumbs = ["Youth Baseball Coaching Bundle: Drills Practice Plans"];
// Page context flags.
wcAnalytics.pages = {
isAccountPage: false,
isCart: false,
};
})();
// Listen for clicks on the entire document
document.addEventListener('click', function(event) {
console.log(event.target.dataset)
// Check if the clicked element has the 'track-click' class
if (event.target.classList.contains('trk-clk-ulbp')) {
// Get the unique ID from the data-id attribute
const elementTxt = event.target.dataset.btntxt;
const elementUrl = event.target.dataset.btnhref;
// Create a FormData object to send data
const formData = new FormData();
formData.append('clicked_element_text', elementTxt);
formData.append('clicked_element_url', elementUrl);
formData.append('clicked_element_psid', 34959);
//console.log(formData.get('clicked_element_psid'));
// Use the Fetch API to send the data to our PHP script
fetch(
"https://mbaseballacademy.com/wp-admin/admin-ajax.php?action=ulpb_rc_current_usr_click&POPB_CTA_Nonce=4143ebe46f"
, {
method: 'POST',
body: formData
})
.then(response => response.text())
.then(data => {
console.log(data); // Log the response from PHP (e.g., "Success!")
})
.catch(error => {
console.error('Error tracking click:', error);
});
}
});