Suds It Purple – Natural Brightening Purple Shampoo - Horse Queened
Suds It Purple – Natural Brightening Purple Shampoo - Horse Queened
Suds It Purple – Natural Brightening Purple Shampoo - Horse Queened
Suds It Purple – Natural Brightening Purple Shampoo - Horse Queened
Suds It Purple – Natural Brightening Purple Shampoo - Horse Queened
Suds It Purple – Natural Brightening Purple Shampoo - Horse Queened
Suds It Purple – Natural Brightening Purple Shampoo - Horse Queened
Suds It Purple – Natural Brightening Purple Shampoo - Horse Queened
Suds It Purple – Natural Brightening Purple Shampoo - Horse Queened
Suds It Purple – Natural Brightening Purple Shampoo - Horse Queened
Suds It Purple – Natural Brightening Purple Shampoo - Horse Queened
Suds It Purple – Natural Brightening Purple Shampoo - Horse Queened

Suds It Purple – Natural Brightening Purple Shampoo

$29.95
Tax included.

“Instantly cool, vibrant, and my horse loves it!”

James L., Horse Owner

SIZE
Only 76 left in stock!

Pickup available at 578 Coorong Avenue, Red Cliffs, VIC

Usually ready in 24 hours

same day shipping for orders before 11:30am AEST

30 day money back guarantee

Satisfaction guaranteed or your money back

Product Description

For white socks, silver coats, and show-day glow-ups.

Suds It Purple is your natural, botanical-based brightening shampoo made specially for light and white coats. Its gentle purple hue helps reduce the look of yellowing and dullness, supporting a fresher, more vibrant appearance- all without harsh whitening chemicals.

Unlike some purple shampoos that rely on strong violet pigments, Suds It Purple uses gentle colourants designed to visually enhance the appearance of white and light-coloured coats without harsh bleaching agents. This means you get a brighter, fresher-looking finish without stripping the coat or leaving unwanted stains when used as directed.

Made from plant-derived cleansers and conditioning botanicals, it leaves the coat feeling soft, clean, and naturally luminous. Perfect for greys, paints, palominos, and those iconic white legs that somehow attract every bit of dirt in the paddock.

✨ Why You'll Love It

• Natural, plant-derived formula - gentle on sensitive coats
• Purple colourants help enhance the appearance of white and light-coloured areas
• Leaves hair fresh, soft, and vibrant
• Won't stain coats, skin, rugs, hands, or surfaces when used as directed
• No bleaches, no harsh detergents
• Ideal for show prep, weekly brightening routines, and white leg touch-ups
• Rinses clean with no residue

🌿 Made With Natural HQ Care

Crafted with mild cleansers, plant-based moisturisers, and conditioning agents to support a smooth, touchable coat while enhancing brightness visually. Beautifully scented with natural fragrance for that "freshly bathed horse" moment.

💜 How to Use

Apply Suds It Purple to a wet coat and massage evenly. For enhanced brightening, leave on for 1–5 minutes before rinsing. Repeat if needed. Avoid eyes, face, and sensitive areas. Patch test before first use.

💧 Ingredients

Aqua, Plant-Derived Cleansers, Conditioning Agents, Natural Colourants, Natural Fragrance, Preservative.

Cosmetic product - not a veterinary treatment. Discontinue use if irritation occurs.

🐴 Perfect For

• Greys wanting that clean silver look
• Paints and palominos needing a lift
• White socks before the ring
• Horses photographed, shown, or simply spoiled

How to Use

+
Store in a cool, dry place away from direct sunlight

Not a veterinary or therapeutic product

Ingredients & Safety

+
Cosmetic product for external use only

Avoid eyes, face, and sensitive areas

Patch test before first use, especially on sensitive horses

Discontinue immediately if irritation occurs

Keep out of reach of children

Lightweight gel with a fresh, cooling feel

Subtle herbal scent — no overpowering odours

Non-greasy, fast-absorbing formula

Gentle on sensitive skin

Made in Australia with natural ingredients

FREQUENTLY ASKED QUESTIONS

Whether you've got questions about your gear, shipping, or anything in between - we've got answers. And if we don't, we'll get back to you fast.

When will my order ship?

Same day shipping if placed before 11.30am AEST, fast daily shipping

How do I track my order?

Head to our Track Order page and enter your email and order number. You’ll get real-time updates on your shipment status.

What’s your return policy?

We offer a 30-day performance guarantee. If you’re not satisfied with your purchase, reach out to us and we’ll make it right - no questions asked.

Do you offer international shipping?

Yes! We ship worldwide. Shipping rates and delivery times are calculated at checkout based on your location.

How do I contact customer support?

Use the contact form from the “Support” page. Please allow 24 business hours for a response from our support team.

are your products safe?

Sure! All natural, cosmetic formulas, external use only, not a veterinary product.

Recently viewed

/* 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. }); })();