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

Form analysis 12 forms found in the DOM

POST /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&amp;utm_campaign=emailmarketing_180652179744&amp;utm_medium=email&amp;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&nbsp;$)</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&nbsp;$)</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&amp;utm_campaign=emailmarketing_180652179744&amp;utm_medium=email&amp;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&nbsp;$)</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&nbsp;$)</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