happyfarmerna.com
Open in
urlscan Pro
23.227.38.65
Public Scan
URL:
https://happyfarmerna.com/
Submission Tags: sansec.io magecart Search All
Submission: On June 27 via api from US — Scanned from CA
Submission Tags: sansec.io magecart Search All
Submission: On June 27 via api from US — Scanned from CA
Form analysis
12 forms found in the DOMPOST /localization
<form method="post" action="/localization" id="nav-localization" accept-charset="UTF-8" class="form localization no-js-hidden" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization"><input type="hidden" name="utf8"
value="✓"><input type="hidden" name="_method" value="put"><input type="hidden" name="return_to" value="/?syclid=cpundncom04s73bsubo0&utm_campaign=emailmarketing_180652179744&utm_medium=email&utm_source=shopify_email">
<div class="localization__grid">
<div class="localization__selector">
<input type="hidden" name="country_code" value="CA">
<country-selector><label class="label visually-hidden no-js-hidden" for="nav-localization-country-button">Country/Region</label>
<div class="custom-select relative w-full no-js-hidden"><button class="custom-select__btn input items-center" type="button" aria-expanded="false" aria-haspopup="listbox" id="nav-localization-country-button">
<span class="text-start">Canada (CAD $)</span>
<svg width="20" height="20" viewBox="0 0 24 24" class="icon" role="presentation" focusable="false" aria-hidden="true">
<path d="M20 8.5 12.5 16 5 8.5" stroke="currentColor" stroke-width="1.5" fill="none"></path>
</svg>
</button>
<ul class="custom-select__listbox absolute invisible" role="listbox" tabindex="-1" aria-hidden="true" hidden="" aria-activedescendant="nav-localization-country-opt-0">
<li class="custom-select__option flex items-center js-option" id="nav-localization-country-opt-0" role="option" data-value="CA" aria-selected="true">
<span class="pointer-events-none">Canada (CAD $)</span>
</li>
</ul>
</div>
</country-selector>
</div>
<div class="localization__selector">
<input type="hidden" name="locale_code" value="en">
<custom-select id="nav-localization-language"><label class="label visually-hidden no-js-hidden" for="nav-localization-language-button">Language</label>
<div class="custom-select relative w-full no-js-hidden"><button class="custom-select__btn input items-center" type="button" aria-expanded="false" aria-haspopup="listbox" id="nav-localization-language-button"
style="--custom-select-button-width: -32px;">
<span class="text-start">English</span>
<svg width="20" height="20" viewBox="0 0 24 24" class="icon" role="presentation" focusable="false" aria-hidden="true">
<path d="M20 8.5 12.5 16 5 8.5" stroke="currentColor" stroke-width="1.5" fill="none"></path>
</svg>
</button>
<ul class="custom-select__listbox absolute invisible" role="listbox" tabindex="-1" aria-hidden="true" hidden="" aria-activedescendant="nav-localization-language-opt-0">
<li class="custom-select__option flex items-center js-option" id="nav-localization-language-opt-0" role="option" data-value="en" aria-selected="true">
<span class="pointer-events-none">English</span>
</li>
<li class="custom-select__option flex items-center js-option" id="nav-localization-language-opt-1" role="option" data-value="fr">
<span class="pointer-events-none">Français</span>
</li>
</ul>
</div>
</custom-select>
</div>
</div>
<script>
customElements.whenDefined('custom-select').then(() => {
if (!customElements.get('country-selector')) {
class CountrySelector extends customElements.get('custom-select') {
constructor() {
super();
this.loaded = false;
}
async showListbox() {
if (this.loaded) {
super.showListbox();
return;
}
this.button.classList.add('is-loading');
this.button.setAttribute('aria-disabled', 'true');
try {
const response = await fetch('?section_id=country-selector');
if (!response.ok) throw new Error(response.status);
const tmpl = document.createElement('template');
tmpl.innerHTML = await response.text();
const el = tmpl.content.querySelector('.custom-select__listbox');
this.listbox.innerHTML = el.innerHTML;
this.options = this.querySelectorAll('.custom-select__option');
this.loaded = true;
} catch {
this.listbox.innerHTML = '<li>Error retrieving countries, please try again.</li>';
} finally {
super.showListbox();
this.button.classList.remove('is-loading');
this.button.setAttribute('aria-disabled', 'false');
}
}
setButtonWidth() {
return;
}
}
customElements.define('country-selector', CountrySelector);
}
});
</script>
<script>
document.getElementById('nav-localization').addEventListener('change', (evt) => {
const input = evt.target.previousElementSibling;
if (input && input.tagName === 'INPUT') {
input.value = evt.detail.selectedValue;
evt.currentTarget.submit();
}
});
</script>
</form>
GET /search
<form class="search relative search--speech" role="search" action="/search" method="get">
<label class="label visually-hidden" for="header-search">To search</label>
<script src="//happyfarmerna.com/cdn/shop/t/1/assets/search-form.js?v=43677551656194261111712563169" defer="defer"></script>
<search-form class="search__form block">
<input type="hidden" name="type" value="product,">
<input type="hidden" name="options[prefix]" value="last">
<input type="search" class="search__input w-full input js-search-input h6" id="header-search" name="q" placeholder="Sea" data-placeholder-one="What are you searching for?" data-placeholder-two="Search by name"
data-placeholder-three="Search by item number" data-placeholder-prompts-mob="true" data-typing-speed="100" data-deleting-speed="60" data-delay-after-deleting="500" data-delay-before-first-delete="2000" data-delay-after-word-typed="2400"
role="combobox" autocomplete="off" aria-autocomplete="list" aria-controls="predictive-search-results" aria-owns="predictive-search-results" aria-haspopup="listbox" aria-expanded="false" spellcheck="false"><button
class="search__submit text-current absolute focus-inset start"><span class="visually-hidden">To search</span><svg width="21" height="23" viewBox="0 0 21 23" fill="currentColor" aria-hidden="true" focusable="false" role="presentation"
class="icon">
<path
d="M14.398 14.483 19 19.514l-1.186 1.014-4.59-5.017a8.317 8.317 0 0 1-4.888 1.578C3.732 17.089 0 13.369 0 8.779S3.732.472 8.336.472c4.603 0 8.335 3.72 8.335 8.307a8.265 8.265 0 0 1-2.273 5.704ZM8.336 15.53c3.74 0 6.772-3.022 6.772-6.75 0-3.729-3.031-6.75-6.772-6.75S1.563 5.051 1.563 8.78c0 3.728 3.032 6.75 6.773 6.75Z">
</path>
</svg>
</button>
<button type="button" class="search__reset text-current vertical-center absolute focus-inset js-search-reset" hidden="">
<span class="visually-hidden">Reset</span>
<svg width="24" height="24" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" fill="none" fill-rule="evenodd" stroke-linejoin="round" aria-hidden="true" focusable="false" role="presentation" class="icon">
<path d="M5 19 19 5M5 5l14 14"></path>
</svg>
</button><speech-search-button class="search__speech focus-inset end" tabindex="0" title="Search by voice" style="--speech-icon-color: #ff580d">
<svg width="24" height="24" viewBox="0 0 24 24" aria-hidden="true" focusable="false" role="presentation" class="icon">
<path fill="currentColor"
d="M17.3 11c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.49 6-3.31 6-6.72m-8.2-6.1c0-.66.54-1.2 1.2-1.2.66 0 1.2.54 1.2 1.2l-.01 6.2c0 .66-.53 1.2-1.19 1.2-.66 0-1.2-.54-1.2-1.2M12 14a3 3 0 0 0 3-3V5a3 3 0 0 0-3-3 3 3 0 0 0-3 3v6a3 3 0 0 0 3 3Z">
</path>
</svg>
</speech-search-button>
<link href="//happyfarmerna.com/cdn/shop/t/1/assets/speech-search.css?v=47207760375520952331712563169" rel="stylesheet" type="text/css" media="all">
<script src="//happyfarmerna.com/cdn/shop/t/1/assets/speech-search.js?v=106462966657620737681712563169" defer="defer"></script>
</search-form>
<div class="js-search-results" tabindex="-1" data-predictive-search=""></div>
<span class="js-search-status visually-hidden" role="status" aria-hidden="true"></span>
</form>
POST /cart/add
<form method="post" action="/cart/add" id="quick-add-9439356518688" accept-charset="UTF-8" class="js-product-form" enctype="multipart/form-data" novalidate="novalidate"><input type="hidden" name="form_type" value="product"><input type="hidden"
name="utf8" value="✓"><input type="hidden" name="id" value="48657940873504"><button class="btn btn--primary w-full" data-add-to-cart-text="Add to Shopping Cart" name="add" aria-haspopup="dialog">
<span class="quick-add-btn-icon">
<span class="visually-hidden">Add to Shopping Cart</span>
<svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false" role="presentation" class="icon">
<path
d="M12.12 20.44H5.6V9.56h12.8v3.73c.06.4.4.69.8.7.44 0 .8-.35.8-.8v-4.5a.792.792 0 0 0-.8-.69H17V6.5C16.9 4 14.7 2 12 2S7 4.09 7 6.67V8H4.71c-.4.04-.71.37-.71.78v12.53a.8.8 0 0 0 .8.69h7.43c.38-.06.67-.39.67-.78 0-.43-.35-.78-.78-.78ZM8.66 6.67c0-1.72 1.49-3.11 3.33-3.11s3.33 1.39 3.33 3.11V8H8.65V6.67Z">
</path>
<path d="M20 17.25h-2.4v-2.5a.817.817 0 0 0-.8-.7c-.44 0-.8.36-.8.8v2.4h-2.5c-.4.06-.7.4-.7.8 0 .44.36.8.8.8H16v2.5c.06.4.4.7.8.7.44 0 .8-.36.8-.8v-2.4h2.5c.4-.06.69-.4.7-.8 0-.44-.35-.8-.8-.8Z"></path>
</svg>
</span>
<span class="quick-add-btn-text">Add to Shopping Cart</span>
</button>
<a href="/products/happyliners-vented" class="btn btn--secondary quick-add-view-btn">Show details</a><input type="hidden" name="product-id" value="9439356518688"><input type="hidden" name="section-id"
value="template--22480688382240__featured_collection_C6Vadz">
</form>
POST /cart/add
<form method="post" action="/cart/add" id="quick-add-9439274402080" accept-charset="UTF-8" class="js-product-form" enctype="multipart/form-data" novalidate="novalidate"><input type="hidden" name="form_type" value="product"><input type="hidden"
name="utf8" value="✓"><input type="hidden" name="id" value="48657553588512"><button class="btn btn--primary w-full" data-add-to-cart-text="Add to Shopping Cart" name="add" aria-haspopup="dialog">
<span class="quick-add-btn-icon">
<span class="visually-hidden">Add to Shopping Cart</span>
<svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false" role="presentation" class="icon">
<path
d="M12.12 20.44H5.6V9.56h12.8v3.73c.06.4.4.69.8.7.44 0 .8-.35.8-.8v-4.5a.792.792 0 0 0-.8-.69H17V6.5C16.9 4 14.7 2 12 2S7 4.09 7 6.67V8H4.71c-.4.04-.71.37-.71.78v12.53a.8.8 0 0 0 .8.69h7.43c.38-.06.67-.39.67-.78 0-.43-.35-.78-.78-.78ZM8.66 6.67c0-1.72 1.49-3.11 3.33-3.11s3.33 1.39 3.33 3.11V8H8.65V6.67Z">
</path>
<path d="M20 17.25h-2.4v-2.5a.817.817 0 0 0-.8-.7c-.44 0-.8.36-.8.8v2.4h-2.5c-.4.06-.7.4-.7.8 0 .44.36.8.8.8H16v2.5c.06.4.4.7.8.7.44 0 .8-.36.8-.8v-2.4h2.5c.4-.06.69-.4.7-.8 0-.44-.35-.8-.8-.8Z"></path>
</svg>
</span>
<span class="quick-add-btn-text">Add to Shopping Cart</span>
</button>
<a href="/products/repairset-brushmotor-air" class="btn btn--secondary quick-add-view-btn">Show details</a><input type="hidden" name="product-id" value="9439274402080"><input type="hidden" name="section-id"
value="template--22480688382240__featured_collection_C6Vadz">
</form>
POST /cart/add
<form method="post" action="/cart/add" id="quick-add-9439075860768" accept-charset="UTF-8" class="js-product-form" enctype="multipart/form-data" novalidate="novalidate"><input type="hidden" name="form_type" value="product"><input type="hidden"
name="utf8" value="✓"><input type="hidden" name="id" value="48656799138080"><button class="btn btn--primary w-full" data-add-to-cart-text="Add to Shopping Cart" name="add" aria-haspopup="dialog">
<span class="quick-add-btn-icon">
<span class="visually-hidden">Add to Shopping Cart</span>
<svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false" role="presentation" class="icon">
<path
d="M12.12 20.44H5.6V9.56h12.8v3.73c.06.4.4.69.8.7.44 0 .8-.35.8-.8v-4.5a.792.792 0 0 0-.8-.69H17V6.5C16.9 4 14.7 2 12 2S7 4.09 7 6.67V8H4.71c-.4.04-.71.37-.71.78v12.53a.8.8 0 0 0 .8.69h7.43c.38-.06.67-.39.67-.78 0-.43-.35-.78-.78-.78ZM8.66 6.67c0-1.72 1.49-3.11 3.33-3.11s3.33 1.39 3.33 3.11V8H8.65V6.67Z">
</path>
<path d="M20 17.25h-2.4v-2.5a.817.817 0 0 0-.8-.7c-.44 0-.8.36-.8.8v2.4h-2.5c-.4.06-.7.4-.7.8 0 .44.36.8.8.8H16v2.5c.06.4.4.7.8.7.44 0 .8-.36.8-.8v-2.4h2.5c.4-.06.69-.4.7-.8 0-.44-.35-.8-.8-.8Z"></path>
</svg>
</span>
<span class="quick-add-btn-text">Add to Shopping Cart</span>
</button>
<a href="/products/6-fold-tube" class="btn btn--secondary quick-add-view-btn">Show details</a><input type="hidden" name="product-id" value="9439075860768"><input type="hidden" name="section-id"
value="template--22480688382240__featured_collection_C6Vadz">
</form>
POST /cart/add
<form method="post" action="/cart/add" id="quick-add-9439021891872" accept-charset="UTF-8" class="js-product-form" enctype="multipart/form-data" novalidate="novalidate"><input type="hidden" name="form_type" value="product"><input type="hidden"
name="utf8" value="✓"><input type="hidden" name="id" value="48656611639584"><button class="btn btn--primary w-full" data-add-to-cart-text="Add to Shopping Cart" name="add" aria-haspopup="dialog">
<span class="quick-add-btn-icon">
<span class="visually-hidden">Add to Shopping Cart</span>
<svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false" role="presentation" class="icon">
<path
d="M12.12 20.44H5.6V9.56h12.8v3.73c.06.4.4.69.8.7.44 0 .8-.35.8-.8v-4.5a.792.792 0 0 0-.8-.69H17V6.5C16.9 4 14.7 2 12 2S7 4.09 7 6.67V8H4.71c-.4.04-.71.37-.71.78v12.53a.8.8 0 0 0 .8.69h7.43c.38-.06.67-.39.67-.78 0-.43-.35-.78-.78-.78ZM8.66 6.67c0-1.72 1.49-3.11 3.33-3.11s3.33 1.39 3.33 3.11V8H8.65V6.67Z">
</path>
<path d="M20 17.25h-2.4v-2.5a.817.817 0 0 0-.8-.7c-.44 0-.8.36-.8.8v2.4h-2.5c-.4.06-.7.4-.7.8 0 .44.36.8.8.8H16v2.5c.06.4.4.7.8.7.44 0 .8-.36.8-.8v-2.4h2.5c.4-.06.69-.4.7-.8 0-.44-.35-.8-.8-.8Z"></path>
</svg>
</span>
<span class="quick-add-btn-text">Add to Shopping Cart</span>
</button>
<a href="/products/brushseta3a4a5" class="btn btn--secondary quick-add-view-btn">Show details</a><input type="hidden" name="product-id" value="9439021891872"><input type="hidden" name="section-id"
value="template--22480688382240__featured_collection_C6Vadz">
</form>
POST /cart/add
<form method="post" action="/cart/add" id="quick-add-9439333056800" accept-charset="UTF-8" class="js-product-form" enctype="multipart/form-data" novalidate="novalidate"><input type="hidden" name="form_type" value="product"><input type="hidden"
name="utf8" value="✓"><input type="hidden" name="id" value="48657823858976"><button class="btn btn--primary w-full" data-add-to-cart-text="Add to Shopping Cart" name="add" aria-haspopup="dialog">
<span class="quick-add-btn-icon">
<span class="visually-hidden">Add to Shopping Cart</span>
<svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false" role="presentation" class="icon">
<path
d="M12.12 20.44H5.6V9.56h12.8v3.73c.06.4.4.69.8.7.44 0 .8-.35.8-.8v-4.5a.792.792 0 0 0-.8-.69H17V6.5C16.9 4 14.7 2 12 2S7 4.09 7 6.67V8H4.71c-.4.04-.71.37-.71.78v12.53a.8.8 0 0 0 .8.69h7.43c.38-.06.67-.39.67-.78 0-.43-.35-.78-.78-.78ZM8.66 6.67c0-1.72 1.49-3.11 3.33-3.11s3.33 1.39 3.33 3.11V8H8.65V6.67Z">
</path>
<path d="M20 17.25h-2.4v-2.5a.817.817 0 0 0-.8-.7c-.44 0-.8.36-.8.8v2.4h-2.5c-.4.06-.7.4-.7.8 0 .44.36.8.8.8H16v2.5c.06.4.4.7.8.7.44 0 .8-.36.8-.8v-2.4h2.5c.4-.06.69-.4.7-.8 0-.44-.35-.8-.8-.8Z"></path>
</svg>
</span>
<span class="quick-add-btn-text">Add to Shopping Cart</span>
</button>
<a href="/products/wearstrip-heavyduty" class="btn btn--secondary quick-add-view-btn">Show details</a><input type="hidden" name="product-id" value="9439333056800"><input type="hidden" name="section-id"
value="template--22480688382240__featured_collection_C6Vadz">
</form>
POST /cart/add
<form method="post" action="/cart/add" id="quick-add-9439478481184" accept-charset="UTF-8" class="js-product-form" enctype="multipart/form-data" novalidate="novalidate"><input type="hidden" name="form_type" value="product"><input type="hidden"
name="utf8" value="✓"><input type="hidden" name="id" value="48658432327968"><button class="btn btn--primary w-full" data-add-to-cart-text="Add to Shopping Cart" name="add" aria-haspopup="dialog">
<span class="quick-add-btn-icon">
<span class="visually-hidden">Add to Shopping Cart</span>
<svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false" role="presentation" class="icon">
<path
d="M12.12 20.44H5.6V9.56h12.8v3.73c.06.4.4.69.8.7.44 0 .8-.35.8-.8v-4.5a.792.792 0 0 0-.8-.69H17V6.5C16.9 4 14.7 2 12 2S7 4.09 7 6.67V8H4.71c-.4.04-.71.37-.71.78v12.53a.8.8 0 0 0 .8.69h7.43c.38-.06.67-.39.67-.78 0-.43-.35-.78-.78-.78ZM8.66 6.67c0-1.72 1.49-3.11 3.33-3.11s3.33 1.39 3.33 3.11V8H8.65V6.67Z">
</path>
<path d="M20 17.25h-2.4v-2.5a.817.817 0 0 0-.8-.7c-.44 0-.8.36-.8.8v2.4h-2.5c-.4.06-.7.4-.7.8 0 .44.36.8.8.8H16v2.5c.06.4.4.7.8.7.44 0 .8-.36.8-.8v-2.4h2.5c.4-.06.69-.4.7-.8 0-.44-.35-.8-.8-.8Z"></path>
</svg>
</span>
<span class="quick-add-btn-text">Add to Shopping Cart</span>
</button>
<a href="/products/slit-board-hardened-lely-discovery" class="btn btn--secondary quick-add-view-btn">Show details</a><input type="hidden" name="product-id" value="9439478481184"><input type="hidden" name="section-id"
value="template--22480688382240__featured_collection_C6Vadz">
</form>
POST /cart/add
<form method="post" action="/cart/add" id="quick-add-9439262310688" accept-charset="UTF-8" class="js-product-form" enctype="multipart/form-data" novalidate="novalidate"><input type="hidden" name="form_type" value="product"><input type="hidden"
name="utf8" value="✓"><input type="hidden" name="id" value="48657500832032">
<div id="quantity-discount-app" class="quantity-x-product-widget is-default"></div><button class="btn btn--primary w-full" data-add-to-cart-text="Add to Shopping Cart" name="add" aria-haspopup="dialog">
<span class="quick-add-btn-icon">
<span class="visually-hidden">Add to Shopping Cart</span>
<svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false" role="presentation" class="icon">
<path
d="M12.12 20.44H5.6V9.56h12.8v3.73c.06.4.4.69.8.7.44 0 .8-.35.8-.8v-4.5a.792.792 0 0 0-.8-.69H17V6.5C16.9 4 14.7 2 12 2S7 4.09 7 6.67V8H4.71c-.4.04-.71.37-.71.78v12.53a.8.8 0 0 0 .8.69h7.43c.38-.06.67-.39.67-.78 0-.43-.35-.78-.78-.78ZM8.66 6.67c0-1.72 1.49-3.11 3.33-3.11s3.33 1.39 3.33 3.11V8H8.65V6.67Z">
</path>
<path d="M20 17.25h-2.4v-2.5a.817.817 0 0 0-.8-.7c-.44 0-.8.36-.8.8v2.4h-2.5c-.4.06-.7.4-.7.8 0 .44.36.8.8.8H16v2.5c.06.4.4.7.8.7.44 0 .8-.36.8-.8v-2.4h2.5c.4-.06.69-.4.7-.8 0-.44-.35-.8-.8-.8Z"></path>
</svg>
</span>
<span class="quick-add-btn-text">Add to Shopping Cart</span>
</button>
<a href="/products/wheel-lely-discovery-6ply" class="btn btn--secondary quick-add-view-btn">Show details</a><input type="hidden" name="product-id" value="9439262310688"><input type="hidden" name="section-id"
value="template--22480688382240__featured_collection_C6Vadz">
</form>
POST /cart
<form class="form" id="cart-drawer-form" action="/cart" method="post">
<cart-items id="cart-items" data-section="cart-drawer" data-empty="true">
<div class="cart-empty flex flex-col justify-center items-center h-full js-cart-empty"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="28" height="28" x="0" y="0" viewBox="0 0 62 62"
style="enable-background:new 0 0 512 512" xml:space="preserve" class="">
<g>
<path
d="m37.36 41.87-4.27-.95 1.34-1.76.66.11 2.72.65zM54 49a1 1 0 0 1-.51-.14l-9.35-5.61a1 1 0 1 1 1-1.72l9.34 5.61A1 1 0 0 1 54 49zM20.1 35.67a1 1 0 0 1-.8-.4L9.4 22.19A3 3 0 0 0 7 21H3a1 1 0 0 1 0-2h4a5 5 0 0 1 4 2l9.9 13.09a1 1 0 0 1-.2 1.4 1 1 0 0 1-.6.18z"
fill="#000000" opacity="1" data-original="#000000" class=""></path>
<path d="M54 56a8 8 0 1 1 8-8 8 8 0 0 1-8 8zm0-14a6 6 0 1 0 6 6 6 6 0 0 0-6-6z" fill="#000000" opacity="1" data-original="#000000" class=""></path>
<path
d="M54 52a4 4 0 1 1 4-4 4 4 0 0 1-4 4zm0-6a2 2 0 1 0 2 2 2 2 0 0 0-2-2zM44.84 43.39h-.24a5 5 0 0 1-.84-.11l-20.84-4.61a5 5 0 0 1-3.8-3.78 4.82 4.82 0 0 1-.12-1.1V26h40.11l2.75-.57L48.7 41.55a5 5 0 0 1-3.86 1.84zm-10.41-4.23.66.11 2.72.65 6.38 1.4a2.87 2.87 0 0 0 .5.07 3 3 0 0 0 2.46-1.1L57.18 28H21v5.79a2.76 2.76 0 0 0 .07.65 3 3 0 0 0 2.29 2.27l11.06 2.46z"
fill="#000000" opacity="1" data-original="#000000" class=""></path>
<path
d="M27.92 51A2.9 2.9 0 0 1 25 48.08v-9.76a1 1 0 1 1 2 0v9.76a.91.91 0 0 0 .28.66 1 1 0 0 0 1.42-.19l5.3-8.78a1 1 0 1 1 1.72 1l-5.27 8.79A2.9 2.9 0 0 1 27.92 51zM59 28H19a3 3 0 0 1-3-3 3 3 0 0 1 3-3h40a3 3 0 0 1 3 2.86V25a3 3 0 0 1-.89 2.13 2.87 2.87 0 0 1-1.66.83A2.58 2.58 0 0 1 59 28zm-40-4a.93.93 0 0 0-.69.29A1 1 0 0 0 18 25a1 1 0 0 0 1 1h40.11a.94.94 0 0 0 .58-.28A1 1 0 0 0 60 25l1-.09-1 .09a1 1 0 0 0-1-1z"
fill="#000000" opacity="1" data-original="#000000" class=""></path>
</g>
</svg>
<p>Your shopping cart is empty</p>
</div>
<p class="visually-hidden" id="cart-line-item-status" role="status" aria-live="polite" aria-hidden="true">Loading...</p>
<div class="alert mt-6 bg-error-bg text-error-text" id="cart-errors" role="alert" hidden=""></div>
</cart-items>
</form>
POST /contact#footer-signup_form
<form method="post" action="/contact#footer-signup_form" id="footer-signup_form" accept-charset="UTF-8" class="form"><input type="hidden" name="form_type" value="customer"><input type="hidden" name="utf8" value="✓">
<input type="hidden" name="contact[tags]" value="prospect, newsletter">
<div class="form__field">
<label class="label visually-hidden" for="footer-signup">E-mail address</label>
<div class="input-with-button"><input type="email" class="input w-full focus-inset" id="footer-signup" name="contact[email]" value="" placeholder="Your email address" autocomplete="email" aria-required="true" required=""><button
class="btn focus-inset has-ltr-icon">
<span class="visually-hidden">Subscribe</span>
<svg width="24" height="24" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" fill="none" aria-hidden="true" focusable="false" role="presentation" class="icon">
<path d="M4.696 12h14.686m-7.007-7.5 7.5 7.5-7.5 7.5"></path>
</svg>
</button></div>
</div>
</form>
POST /localization
<form method="post" action="/localization" id="footer-localization" accept-charset="UTF-8" class="form localization no-js-hidden" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization"><input type="hidden"
name="utf8" value="✓"><input type="hidden" name="_method" value="put"><input type="hidden" name="return_to" value="/?syclid=cpundncom04s73bsubo0&utm_campaign=emailmarketing_180652179744&utm_medium=email&utm_source=shopify_email">
<div class="localization__grid">
<div class="localization__selector">
<input type="hidden" name="country_code" value="CA">
<country-selector><label class="label visually-hidden no-js-hidden" for="footer-localization-country-button">Country/Region</label>
<div class="custom-select relative w-full no-js-hidden"><button class="custom-select__btn input items-center" type="button" aria-expanded="false" aria-haspopup="listbox" id="footer-localization-country-button">
<span class="text-start">Canada (CAD $)</span>
<svg width="20" height="20" viewBox="0 0 24 24" class="icon" role="presentation" focusable="false" aria-hidden="true">
<path d="M20 8.5 12.5 16 5 8.5" stroke="currentColor" stroke-width="1.5" fill="none"></path>
</svg>
</button>
<ul class="custom-select__listbox absolute invisible" role="listbox" tabindex="-1" aria-hidden="true" hidden="" aria-activedescendant="footer-localization-country-opt-0">
<li class="custom-select__option flex items-center js-option" id="footer-localization-country-opt-0" role="option" data-value="CA" aria-selected="true">
<span class="pointer-events-none">Canada (CAD $)</span>
</li>
</ul>
</div>
</country-selector>
</div>
<div class="localization__selector">
<input type="hidden" name="locale_code" value="en">
<custom-select id="footer-localization-language"><label class="label visually-hidden no-js-hidden" for="footer-localization-language-button">Language</label>
<div class="custom-select relative w-full no-js-hidden"><button class="custom-select__btn input items-center" type="button" aria-expanded="false" aria-haspopup="listbox" id="footer-localization-language-button"
style="--custom-select-button-width: 20px;">
<span class="text-start">English</span>
<svg width="20" height="20" viewBox="0 0 24 24" class="icon" role="presentation" focusable="false" aria-hidden="true">
<path d="M20 8.5 12.5 16 5 8.5" stroke="currentColor" stroke-width="1.5" fill="none"></path>
</svg>
</button>
<ul class="custom-select__listbox absolute invisible" role="listbox" tabindex="-1" aria-hidden="true" hidden="" aria-activedescendant="footer-localization-language-opt-0">
<li class="custom-select__option flex items-center js-option" id="footer-localization-language-opt-0" role="option" data-value="en" aria-selected="true">
<span class="pointer-events-none">English</span>
</li>
<li class="custom-select__option flex items-center js-option" id="footer-localization-language-opt-1" role="option" data-value="fr">
<span class="pointer-events-none">Français</span>
</li>
</ul>
</div>
</custom-select>
</div>
</div>
<script>
customElements.whenDefined('custom-select').then(() => {
if (!customElements.get('country-selector')) {
class CountrySelector extends customElements.get('custom-select') {
constructor() {
super();
this.loaded = false;
}
async showListbox() {
if (this.loaded) {
super.showListbox();
return;
}
this.button.classList.add('is-loading');
this.button.setAttribute('aria-disabled', 'true');
try {
const response = await fetch('?section_id=country-selector');
if (!response.ok) throw new Error(response.status);
const tmpl = document.createElement('template');
tmpl.innerHTML = await response.text();
const el = tmpl.content.querySelector('.custom-select__listbox');
this.listbox.innerHTML = el.innerHTML;
this.options = this.querySelectorAll('.custom-select__option');
this.loaded = true;
} catch {
this.listbox.innerHTML = '<li>Error retrieving countries, please try again.</li>';
} finally {
super.showListbox();
this.button.classList.remove('is-loading');
this.button.setAttribute('aria-disabled', 'false');
}
}
setButtonWidth() {
return;
}
}
customElements.define('country-selector', CountrySelector);
}
});
</script>
<script>
document.getElementById('footer-localization').addEventListener('change', (evt) => {
const input = evt.target.previousElementSibling;
if (input && input.tagName === 'INPUT') {
input.value = evt.detail.selectedValue;
evt.currentTarget.submit();
}
});
</script>
</form>
Text Content
Skip to content The largest supplier in North America for milking robot and parlor parts. Contact UsCall: +1 (519) 636-4785 Country/Region Canada (CAD $) * Canada (CAD $) Language English * English * Français To search To search Reset login Shopping cart Menu * Milking Robot * Previous * Milking Robot * Lely * Consumables * Milkpump Milkline * Liners * Hoses and accessories * Vacuum - Pulsation - Take off * Spray * Cleaning * Feeding * Water valves - Air valves * Compressed air * Electrics - Sensors * Other parts * Go to Lely * DeLaval * Milk pump - Milk measuring * Liners * Hoses and accessories * Vacuum - Pulsation - Take off * Spray * Cleaning * Feeding * Water valves - Air valves * Compressed air * Electrics - Sensors * Other parts * Go to DeLaval * Fullwood * Liners * Tubing and accessoiries * Vacuum - Pulsation - Take off * Spray * Cleaning * Feeding * Compressed air * Electra - Sensors * Milk pump - Milk measuring * Other parts * Go to Fullwood * GEA * Liners * Hoses and accessories * Milk pump - Milk measuring * Vacuum - Pulsation - Take off * Spray * Cleaning * Feeding * Water valves - Air valves * Compressed air * Electrics - Sensors * Other parts * Go to GEA * Barn Robot * Previous * Barn Robot * Lely * Lely Discovery Manure Robot * Lely Collector Barn Cleaner * Lely Calm Calf Feeder * Lely Juno Feed Pusher * Lely Luna Cow Brush * Lely Vector Feeding Robot * Go to Lely * DeLaval * DeLaval Cow Brush * DeLaval Calf feeder * DeLaval Manure Robot * Go to DeLaval * JOZ * JOZ Manure Robot * JOZ Feed Pusher * Go to JOZ * GEA * GEA Calf Feeder * Go to GEA * Milking Machine * Previous * Milking Machine * DeLaval * Electra - Sensors * Feeding * Liners - Milkclaw * Milk measuring * Milkpump - Milkline * Other parts * Tubing and accessoiries * Vacuum - Pulsation - Take off * Go to DeLaval * Fullwood * Cleaning * Electra - Sensors * Feeding * Liners - Milkclaw * Milk measuring * Milkpump - Milkline * Other parts * Tubing and accessoiries * Vacuum - Pulsation - Take off * Go to Fullwood * Gea - Westfalia - Surge * Cleaning * Electra - Sensors * Feeding * Liners - Milkclaw * Milk measuring * Milkpump - Milkline * Other parts * Tubing and accessoiries * Vacuum - Pulsation - Take off * Go to Gea - Westfalia - Surge * Dairymaster * Cleaning * Electra - Sensors * Feeding * Liners - Milkclaw * Milk measuring * Milkpump - Milkline * Other parts * Tubing and accessoiries * Vacuum - Pulsation - Take off * Go to Dairymaster * Barn Supplies * Previous * Barn Supplies * Care Cow - Calf * Hoof Care * Udder care * Drenching * Go to Care Cow - Calf * Housing - Barn equipment * Buckets - Calf Bars * Teats - Feeding bottles * Cow identification * Collars - numbers * Go to Housing - Barn equipment * Cleaning and Brushes * Stable Supplies - Cleaning and Brushes * Spray Guns Nozzles * Go to Cleaning and Brushes * Calves * Calf feeder * Teats Feeding bottles * Other items * Go to Calves * Other items * Oil and lubricants * MultiDos * Apparel * Go to Other items * Washrobots * Deals * Knowledge base * Send a WhatsApp NEED ADVICE OR ASSISTANCE? Contact Us DISCOVER HAPPYFARMER: YOUR NUMBER ONE SUPPLIER FOR MILKING ROBOT AND PARLOR PARTS. With more than 2,000 products, we offer a wide assortment for the modern farmer. Everything you need can be found with us. MAKE YOUR SELECTION select a category * * Milking Robot * Barn Robot * Milking Machine * Barn Supplies * Washrobots * Deals select a category * * Lely * DeLaval * Fullwood * GEA * Lely * DeLaval * JOZ * GEA * DeLaval * Fullwood * Gea - Westfalia - Surge * Dairymaster * Care Cow - Calf * Housing - Barn equipment * Cleaning and Brushes * Calves * Other items select a category * * Consumables * Milkpump Milkline * Liners * Hoses and accessories * Vacuum - Pulsation - Take off * Spray * Cleaning * Feeding * Water valves - Air valves * Compressed air * Electrics - Sensors * Other parts * Milk pump - Milk measuring * Liners * Hoses and accessories * Vacuum - Pulsation - Take off * Spray * Cleaning * Feeding * Water valves - Air valves * Compressed air * Electrics - Sensors * Other parts * Liners * Tubing and accessoiries * Vacuum - Pulsation - Take off * Spray * Cleaning * Feeding * Compressed air * Electra - Sensors * Milk pump - Milk measuring * Other parts * Liners * Hoses and accessories * Milk pump - Milk measuring * Vacuum - Pulsation - Take off * Spray * Cleaning * Feeding * Water valves - Air valves * Compressed air * Electrics - Sensors * Other parts * Lely Discovery Manure Robot * Lely Collector Barn Cleaner * Lely Calm Calf Feeder * Lely Juno Feed Pusher * Lely Luna Cow Brush * Lely Vector Feeding Robot * DeLaval Cow Brush * DeLaval Calf feeder * DeLaval Manure Robot * JOZ Manure Robot * JOZ Feed Pusher * GEA Calf Feeder * Electra - Sensors * Feeding * Liners - Milkclaw * Milk measuring * Milkpump - Milkline * Other parts * Tubing and accessoiries * Vacuum - Pulsation - Take off * Cleaning * Electra - Sensors * Feeding * Liners - Milkclaw * Milk measuring * Milkpump - Milkline * Other parts * Tubing and accessoiries * Vacuum - Pulsation - Take off * Cleaning * Electra - Sensors * Feeding * Liners - Milkclaw * Milk measuring * Milkpump - Milkline * Other parts * Tubing and accessoiries * Vacuum - Pulsation - Take off * Cleaning * Electra - Sensors * Feeding * Liners - Milkclaw * Milk measuring * Milkpump - Milkline * Other parts * Tubing and accessoiries * Vacuum - Pulsation - Take off * Hoof Care * Udder care * Drenching * Buckets - Calf Bars * Teats - Feeding bottles * Cow identification * Collars - numbers * Stable Supplies - Cleaning and Brushes * Spray Guns Nozzles * Calf feeder * Teats Feeding bottles * Other items * Oil and lubricants * MultiDos * Apparel To search Previous Next one * Always the best deal Quality for a competitive price! * Fast shipping Delivered in a few working days * Our Goal All for a happy Farmer! * Have questions? Speak with our technical help The ultimate washing robot WASHPOWER PROCLEANER X100 More information Higher milking speed and less teat stress HAPPYLINER FL-0021 VENTED FOR LELY Buy now FEATURED PRODUCTS * HappyFarmer HappyLiner FL-0021 VENTED Liner suitable for Lely In stock $4996 Unit price / Not available Add to Shopping Cart Add to Shopping Cart Show details * HappyFarmer Repair Set Brush Motor AIR In stock $36077 Unit price / Not available Add to Shopping Cart Add to Shopping Cart Show details * 10 + 1 FREE HappyFarmer Transponder infrared H/HR-QWES LD In stock By $22693 Unit price / Not available Choose options Choose options Show details * HappyFarmer 6 folded-tube A4 A5 In stock $43010 Unit price / Not available Add to Shopping Cart Add to Shopping Cart Show details * HappyFarmer Brush Set Lely A3, A4, A5 In stock $4750 Unit price / Not available Add to Shopping Cart Add to Shopping Cart Show details * HappyFarmer Heavy Duty Wear Strip Lely Discovery In stock $6370 Unit price / Not available Add to Shopping Cart Add to Shopping Cart Show details * HappyFarmer Slit Board - HARDENED - Lely Discovery In stock $5878 Unit price / Not available Add to Shopping Cart Add to Shopping Cart Show details * HappyFarmer Wheel 6ply new rim Lely Discovery S SW In stock $27588 Unit price / Not available Add to Shopping Cart Add to Shopping Cart Show details Next one Previous POPULAR CATEGORIES * MILKING ROBOT * Lely * DeLaval * GEA * Fullwood Milking Robot * BARN ROBOT * Lely * DeLaval * GEA * JOZ Barn Robot * MILKING MACHINE * DeLaval * Fullwood * GEA Westfalia Surge * Dairymaster Milking Machine * BARN SUPPLIES * Care Cow - Calf * Milking Parlor Articles * Housing - Barn equipment * Cleaning and brushes Barn Supplies Next one Previous HAPPYFARMER: THE WORLDWIDE SUPPLIER OF MILKING ROBOT AND MILKING PARLOUR PARTS In 2015 Marte and Anneke van Hastenberg, founded HappyFarmer in Oirschot The Netherlands. Their mission: To make farmers happy. Marte, a mechanic with more than 20 years of experience in dairy farming technology, and Anneke, with a background in the healthcare sector, started the company in 2015 to provide independent robot parts. They have built the company and created a team of more than 15 dedicated members that want to make as many farmers as happy as possible. In addition to enormous national and international experience, the team has extensive knowledge of a large number of brands. HappyFarmer has grown into a thriving company with a diverse range, including milking robot and stable parts from all leading brands. HappyFarmer can supply parts for various brands of milking robots and milking machines such as: Lely, DeLaval, Fullwood, Gea, Dairymaster, Sac and Boumatic. Paul and Scott lead the expert team of North America. They both have more than 20 years of experience in the industry with extensive brand knowledge. If you have any questions, just ask! Because their goal is: a happy farmer! Read more about HappyFarmerNA YOUR SHOPPING CART Close Your shopping cart is empty Loading... Previous Next one * Quality at a great price! * Fast delivery * Secure payment * Technical assistance HAPPYFARMER NORTH-AMERICA 3172 Harrietsville Dr. N0l 1v0 Mossley Canada Telephone: +1 (519) 636-4785 Whatsapp: +1 (519) 636-4785 HAPPYFARMERNA * About us * Contact CUSTOMER SERVICE * Ordering and Payment * Shipping & Delivery * Cancel and Return * Technical support SUBSCRIBE TO NEWSLETTER Stay up to date with the latest news, new products and important information. E-mail address Subscribe Accepted payment methods * Apple Pay * Diners Club * Discover * Google Pay * Mastercard * Visa Country/Region Canada (CAD $) * Canada (CAD $) Language English * English * Français -------------------------------------------------------------------------------- © 2024 Happy Farmer North America. * Terms and Conditions * Privacy Statement Previous CHOOSE OPTIONS Close Close Item added to your shopping cart. Show shopping cart