Tack Box Picks

Horse Queened favourites — made by horse people, loved in the tack room.

Loading products...
480 RESULTS

Swash It.

Wow! Spray, Wipe, And Suddenly They Look Like They’ve Had A Full Pamper. Amazing Products. Love Horse Queened

Jordan C. - Sydney
★★★★★
Detangle It - Horse QueenedDetangle It - Horse Queened

Detangle It

Lightweight gloss with zero sticky residue
Effortless spray-through detangling
Instant glass-like shine. No water dilution
1000ml
$24.95

Swash It.

Wow! Spray, Wipe, And Suddenly They Look Like They’ve Had A Full Pamper. Amazing Products. Love Horse Queened

Jordan C. - Sydney
★★★★★
14% Off
Hoof Rescue Pack – Clean, Conditioned Hooves, Every Day - Horse QueenedHoof Rescue Pack – Clean, Conditioned Hooves, Every Day - Horse Queened

Hoof Ritual Pack – Clean, Conditioned Hooves, Every Day

Perfect for healthy-looking hooves year-round
Easy targeted frog/sole routine
Daily hoof conditioning & care
SMALL 500ml Hoof It 60ml Thrush It
$89.00
Polish It – Hoof Royalty - Horse QueenedPolish It – Hoof Royalty - Horse Queened

Polish It – Hoof Royalty

Designed to come off easily after use (not a long-term coating)
Dries quickly for stress-free show mornings
Delivers a sleek, polished, show-ready hoof finish
Crowned Clear- clear gloss
$47.95
The Essentials Kit - Horse Queened

The Essentials Kit

Perfect for every horse owner’s routine
Cooling, soothing + conditioning all in one pack
Complete daily care for hooves, legs + coat
Various Size
$149.95
Purple Chaos Caddy - Horse QueenedPurple Chaos Caddy - Horse Queened

Purple Chaos Caddy

Made for chaos, cleans up nicely
Stands upright, easy access
Corrals your care and grooming chaos
Purple
$79.95
15% Off
Soothe, Salve & Cool Pack - Horse Queened

Soothe, Salve & Cool Pack

Perfect post-ride or rest-day pack
Cooling, softening, and soothing routine
Daily comfort for legs + coat
500ml Spray
$140.95
20% Off
They Earned It Pack - Horse QueenedThey Earned It Pack - Horse Queened

They Earned It Pack

Perfect for horse recovery days
Cooling, softening, and conditioning care
Post-work routine for legs, hooves + coat
Spray 500ml
$199.00
New

The Shed Happens Duo – Horse Shedding Made Simple

Leaves a healthy-looking shine
Lifts dirt, dust and buildup from the coat
Helps loosen shedding hair for easier removal
1000ml & 500ml
$79.95
1 of 1

UNLEASH YOUR HORSE'S BEST SHINE

Transform every grooming session into a spa-like experience, so your horse enjoys a healthy, glossy coat every day.

Premium Care Proven Results

Trusted by riders for stronger hooves and softer coats, this is the quality care your horse truly deserves.

/* Product zoom: mouse-follow + touch toggle Works with: product-zoom-element[data-magnify], .product-zoom--wrapper, .product-zoom--enlarged */ (() => { const ZOOM_ATTR = 'data-magnify'; const roots = Array.from(document.querySelectorAll(`product-zoom-element[${ZOOM_ATTR}]`)); if (!roots.length) return; roots.forEach(root => { // ensure root is focusable for keyboard access if (!root.hasAttribute('tabindex')) root.setAttribute('tabindex', '0'); const wrapper = root.querySelector('.product-zoom--wrapper'); const enlarged = root.querySelector('.product-zoom--enlarged'); if (!wrapper) return; const rawZoom = parseFloat(root.getAttribute('data-magnify')) || 1.7; let effectiveZoom = rawZoom; // may be increased if high-res image is larger let isZoomed = false; // compute effective zoom based on the natural size of the enlarged image (if available) function updateEffectiveZoom() { try { if (enlarged && enlarged.naturalWidth && root.offsetWidth) { const imageRatio = enlarged.naturalWidth / root.offsetWidth; // we want at least rawZoom but if enlarged image is bigger, allow larger zoom effectiveZoom = Math.max(rawZoom, imageRatio); } else { effectiveZoom = rawZoom; } } catch (err) { effectiveZoom = rawZoom; } } if (enlarged) { if (enlarged.complete) updateEffectiveZoom(); else enlarged.addEventListener('load', updateEffectiveZoom, { once: true }); // also update on window resize (image/container geometry changes) window.addEventListener('resize', () => { updateEffectiveZoom(); }); } // Utility: set transform-origin and scale for enlarged image function setOriginAndScale(clientX, clientY) { const rect = root.getBoundingClientRect(); // clamp values 0..100 const x = Math.min(100, Math.max(0, ((clientX - rect.left) / rect.width) * 100)); const y = Math.min(100, Math.max(0, ((clientY - rect.top) / rect.height) * 100)); if (enlarged) { enlarged.style.transformOrigin = `${x}% ${y}%`; enlarged.style.transform = `scale(${effectiveZoom})`; } // slight parallax: move wrapper transform-origin to follow cursor (subtle) wrapper.style.transformOrigin = `${x}% ${y}%`; } // Activate zoom (add class, set scale) function activateZoom(clientX, clientY) { updateEffectiveZoom(); root.classList.add('is-zoomed'); isZoomed = true; if (typeof clientX === 'number' && typeof clientY === 'number') { setOriginAndScale(clientX, clientY); } else { // center if no coordinates provided if (enlarged) { enlarged.style.transformOrigin = `50% 50%`; enlarged.style.transform = `scale(${effectiveZoom})`; } wrapper.style.transformOrigin = `50% 50%`; } } // Deactivate zoom (reset transforms) function deactivateZoom() { root.classList.remove('is-zoomed'); isZoomed = false; if (enlarged) { enlarged.style.transform = 'scale(1)'; enlarged.style.transformOrigin = '50% 50%'; } wrapper.style.transform = 'scale(1)'; wrapper.style.transformOrigin = '50% 50%'; } // Mouse handlers function onMouseMove(e) { if (!isZoomed) activateZoom(e.clientX, e.clientY); else setOriginAndScale(e.clientX, e.clientY); } function onMouseEnter(e) { // activate but don't force a jump — set origin from event activateZoom(e.clientX, e.clientY); } function onMouseLeave() { deactivateZoom(); } // Touch handlers (simple toggle on first tap; move origin while zoomed) let lastTouchEnd = 0; function onTouchStart(e) { if (e.touches.length > 1) { // ignore pinch for now — allow browser default return; } const t = e.touches[0]; // toggle on tap if (!isZoomed) { activateZoom(t.clientX, t.clientY); } else { // if already zoomed, just update origin (user may pan) setOriginAndScale(t.clientX, t.clientY); } } function onTouchMove(e) { if (!isZoomed || e.touches.length === 0) return; const t = e.touches[0]; setOriginAndScale(t.clientX, t.clientY); } function onTouchEnd(e) { // if touchend with no subsequent touches, keep zoom active; second tap will close. // implement a quick double-tap-to-close const now = Date.now(); if (now - lastTouchEnd < 300) { // double-tap detected -> close deactivateZoom(); } lastTouchEnd = now; } // Keyboard (Enter/Space toggles) function onKeyDown(e) { if (e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar') { e.preventDefault(); if (!isZoomed) activateZoom(root.getBoundingClientRect().left + root.offsetWidth / 2, root.getBoundingClientRect().top + root.offsetHeight / 2); else deactivateZoom(); } else if (e.key === 'Escape' && isZoomed) { deactivateZoom(); } } // Bind events root.addEventListener('mousemove', onMouseMove); root.addEventListener('mouseenter', onMouseEnter); root.addEventListener('mouseleave', onMouseLeave); // touch: use passive listeners where safe root.addEventListener('touchstart', onTouchStart, { passive: true }); root.addEventListener('touchmove', onTouchMove, { passive: true }); root.addEventListener('touchend', onTouchEnd, { passive: true }); root.addEventListener('keydown', onKeyDown); // Clean up in case element is removed (optional) // If you dynamically remove elements, consider removing listeners to avoid leaks. }); })();