shop.luxonis.com Open in urlscan Pro
2620:127:f00f:e::  Public Scan

Submitted URL: http://shop.luxonis.com/
Effective URL: https://shop.luxonis.com/
Submission: On October 30 via manual from DE — Scanned from CA

Form analysis 9 forms found in the DOM

POST /localization

<form action="/localization" method="POST"><input name="_method" type="hidden" value="PUT"><input name="source" type="hidden" value="geolocation_recommendation"><input name="return_to" type="hidden" value="/"><input name="country_code" type="hidden"
    value="CA"><button class="recommendation-modal__close-button" type="submit"><svg aria-label="Dismiss" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" style="height: 1em; width: 1em;">
      <path d="M11.414 10l6.293-6.293a.999.999 0 1 0-1.414-1.414L10 8.586 3.707 2.293a.999.999 0 1 0-1.414 1.414L8.586 10l-6.293 6.293a.999.999 0 1 0 1.414 1.414L10 11.414l6.293 6.293a.997.997 0 0 0 1.414 0 .999.999 0 0 0 0-1.414L11.414 10z"
        fill="rgba(53, 49, 49, 1)"></path>
    </svg></button></form>

POST /localization

<form action="/localization" method="POST" class="recommendation-modal__form"><input name="_method" type="hidden" value="PUT"><input name="source" type="hidden" value="geolocation_recommendation"><input name="return_to" type="hidden" value="/"><input
    name="country_code" type="hidden" value="CA"><button class="recommendation-modal__button" type="submit" style="background-color: rgb(87, 36, 232); color: rgb(255, 255, 255);">Continue</button></form>

#

<form class="newsletter-sendy-form pr z_100" action="#">
  <div>
    <div class="signup-newsletter-form row no-gutters pr oh ">
      <div class="col-md col-12 col_email"><input type="email" name="email" placeholder="Your email address" value="" class="tc tl_md class_ip input-text" required="required"></div>
      <div class="col-md-auto col-12"><button type="submit" class="css_add_ld btn_new_icon_false w__100 submit-btn truncate"><span>Subscribe</span></button></div>
    </div>
  </div>
  <div class="newsletter-sendy-form-response">
    <div class="shopify-message success_message dn"><i class="las la-check"></i>Thanks for subscribing</div>
    <div class="shopify-warning dn"><i class="las la-exclamation-triangle"></i><span class="error_message"></span></div>
  </div>
</form>

POST /cart

<form id="site-cart-form-widget" action="/cart" method="post" novalidate="" class="nt_mini_cart nt_js_cart flex column h__100 btns_cart_1">
  <input type="hidden" data-cart-attr-rm="" name="attributes[cat_mb_items_per_row]" value=""><input type="hidden" data-cart-attr-rm="" name="attributes[cat_tb_items_per_row]" value=""><input type="hidden" data-cart-attr-rm=""
    name="attributes[cat_dk_items_per_row]" value="">
  <input type="hidden" data-cart-attr-rm="" name="attributes[auto_hide_ofsock]" value=""><input type="hidden" data-cart-attr-rm="" name="attributes[paginate_ntt4]" value=""><input type="hidden" data-cart-attr-rm="" name="attributes[limit_ntt4]"
    value=""><input type="hidden" data-cart-attr-rm="" name="attributes[use_bar_lmntt4]" value="">
  <div class="mini_cart_header flex fl_between al_center">
    <div class="h3 widget-title tu fs__16 mg__0">Shopping cart</div><i class="close_pp pegk pe-7s-close ts__03 cd"></i>
  </div>
  <div class="mini_cart_wrap">
    <div class="mini_cart_content fixcl-scroll">
      <div class="fixcl-scroll-content">
        <div class="empty tc mt__40"><i class="las la-shopping-bag pr mb__10"></i>
          <p>Your cart is empty.</p>
          <p class="return-to-shop mb__15"><a class="button button_primary tu js_add_ld" href="/collections/all"><span class="truncate">Return To Shop</span></a></p>
        </div>
        <div class="cookie-message dn">Enable cookies to use the shopping cart</div>
        <div id="cart-items-id" class="mini_cart_items js_cat_items lazyloadt4sed" data-rendert4s="/cart/?view=viewjs" data-currentrendert4s=""></div>
        <div class="mini_cart_tool js_cart_tool tc  dn"></div>
        <div data-cart-upsell-js="" data-baseurl="/recommendations/products" data-limit="10" data-id=""></div>
      </div>
    </div>
    <div class="mini_cart_footer js_cart_footer dn" style="">
      <div class="js_cat_dics"></div>
      <div class="total row fl_between al_center">
        <div class="col-auto"><strong>Subtotal:</strong></div>
        <div id="cart-price-wrapper-id" class="col-auto tr js_cat_ttprice fwb">
          <div id="cart_tot_price_id" class="cart_tot_price">$0.00</div>
        </div>
      </div>
      <p class="txt_tax_ship mb__5 fs__12">Taxes and shipping calculated at checkout </p>
      <style>
        .js_cat_free_shipping .free-shipping-wrapper {
          display: block;
          background-color: #ebf4ff;
          color: #033c5b;
          padding: 6px 12px;
          margin: 6px 0px;
          border-radius: 5px;
        }

        .js_cat_free_shipping span {
          color: #033c5b;
          font-weight: 600;
          text-decoration: underline;
        }
      </style>
      <div class="js_cat_free_shipping">
      </div>
      <style data-shopify="">
        .vat__form {
          width: 30rem;
        }

        .vat_div {
          margin-bottom: 10px;
          width: 100%;
        }

        .vat-id-label {
          color: red;
          font-size: smaller;
        }

        .dualPrice {
          display: inline-block;
        }

        .price-varies-custom {
          display: none;
        }

        @media screen and (max-width: 749px) {
          .vat__field {
            display: flex;
            align-items: center;
            justify-content: center;
          }

          .vat__form {
            width: unset;
            flex: 1;
            max-width: 360px;
          }
        }
      </style>
      <div class="contact__fields vat__field" id="vat-id-main-div" hidden="">
        <div class="field vat_div">
          <label id="vat-id-label" for="vat-id" class="vat-id-label"></label>
          <input class="field__input" type="text" name="vat" form="cart" id="vat-id" placeholder="VAT ID (Optional)" onblur="checkVat(this.value)" minlength="10">
        </div>
        <div hidden="" class="field vat_div">
          <input class="field__input" type="email" name="vat-email" form="cart" id="vat-email" placeholder="Email (Required for VAT)">
        </div>
        <div hidden="">
          <input type="hidden" id="customer-vat" name="customer-vat-response" form="site-cart-form-widget" value="">
          <div hidden="" id="vat-id-form-id">site-cart-form-widget</div>
          <div hidden="" id="div-local-code">US</div>
        </div>
      </div>
      <script>
        const euCountries = {
          'BE': 21,
          'BG': 20,
          'CZ': 21,
          'DK': 25,
          'DE': 19,
          'EE': 20,
          'IE': 23,
          'EL': 24,
          'ES': 21,
          'FR': 20,
          'HR': 25,
          'IT': 22,
          'CY': 19,
          'LV': 21,
          'LT': 21,
          'LU': 16,
          'HU': 27,
          'MT': 18,
          'NL': 21,
          'AT': 20,
          'PL': 23,
          'PT': 23,
          'RO': 19,
          'SI': 22,
          'SK': 20,
          'FI': 24,
          'SE': 25,
          'GR': 24
        };
        /*
        const euCountriesArray = [
          'BE', 'BG', 'CZ', 'DK', 'DE', 'EE', 'GR', 'IE', 'EL', 'ES', 'FR',
          'HR', 'IT', 'CY', 'LV', 'LT', 'LU', 'HU', 'MT', 'NL', 'AT',
          'PL', 'PT', 'RO', 'SI', 'SK', 'FI', 'SE'
        ]
        */
        const eftaCountries = ['IS', 'LI', 'NO', 'CH']
        const formId = document.getElementById("vat-id-form-id").textContent;
        const cart = document.getElementById(formId);
        let selected = document.getElementById("div-local-code").textContent;
        let divCartNote = document.getElementById("vat-id-main-div");
        if (euCountries[selected]) {
          divCartNote.hidden = false;
        } else {
          divCartNote.hidden = true;
        }

        function isValidVat(viesResponse) {
          return viesResponse.isValid || viesResponse.userError === 'TIMEOUT' || viesResponse.userError === 'MS_MAX_CONCURRENT_REQ';
        }
        window.onload = function() {
          const localVatId = localStorage.getItem("vatId");
          if (localVatId) {
            document.getElementById("vat-id").value = localVatId;
          }
          document.getElementById(formId.trim()).addEventListener("submit", async function(e) {
            const checkoutBtn = document.getElementById("button-checkout");
            e.preventDefault();
            checkoutBtn.classList.add("loading");
            const veis = await checkVat(document.getElementById("vat-id").value);
            checkoutBtn.classList.remove("loading");
            if (!isValidVat(veis)) {
              invalidVat(veis.userError);
            } else {
              document.getElementById("vat-id-label").innerHTML = '';
              const checkoutHiddenInput = document.createElement("input");
              checkoutHiddenInput.setAttribute("type", "hidden");
              checkoutHiddenInput.setAttribute("name", "checkout");
              checkoutHiddenInput.setAttribute("value", "");
              cart.appendChild(checkoutHiddenInput);
              let vatId = '';
              if (veis.userError !== '') {
                const vatIdInput = document.getElementById("vat-id").value.replaceAll(" ", "");
                const vatCountry = vatIdInput.slice(0, 2).toUpperCase();
                vatId = euCountries[vatCountry] ? vatIdInput : selected + vatIdInput;
                /*
          const providedEmail = document.getElementById("vat-email").value;
  
          var action = cart.getAttribute('action');
          cart.setAttribute('action', action + (action.indexOf('?') >= 0 ? '&' : '?') + 'checkout[email]=' + encodeURIComponent(providedEmail));
          */
              }
              const checkoutHiddenInput2 = document.createElement("input");
              checkoutHiddenInput2.setAttribute("type", "hidden");
              checkoutHiddenInput2.setAttribute("name", "attributes[VAT-ID]");
              checkoutHiddenInput2.setAttribute("value", vatId);
              cart.appendChild(checkoutHiddenInput2);
              cart.submit();
            }
          }, true);
        }

        function invalidVat(error) {
          const vatLabel = document.getElementById("vat-id-label");
          switch (error) {
            case 'INVALID_INPUT':
              vatLabel.innerHTML = 'Invalid VAT ID was provided.';
              break;
            case 'INVALID':
              vatLabel.innerHTML = 'Invalid VAT ID was provided.';
              break;
            case 'EMPTY_EMAIL':
              vatLabel.innerHTML = 'Missing email.';
              break;
            case 'VAT_SHORT':
              vatLabel.innerHTML = 'Provided VAT is too short';
              break;
            default:
              vatLabel.innerHTML = 'VAT could not be validated, VIES validation service currently unavailable. Try again later.';
              break;
          }
        }
        async function validateVat() {
          const providedVatId = document.getElementById("vat-id").value.replaceAll(" ", "");
          const vatCountry = providedVatId.slice(0, 2).toUpperCase();
          const vatId = euCountriesArray.some(it => it === vatCountry) ? providedVatId : selected + providedVatId;
          const providedEmail = document.getElementById("vat-email").value;
          if (!providedVatId) return {
            isValid: true,
            userError: ''
          };
          if (providedVatId.length > 0 && providedVatId.length < 8) return {
            isValid: false,
            userError: 'VAT_SHORT'
          }
          if (providedVatId && !providedEmail) return {
            isValid: false,
            userError: 'EMPTY_EMAIL'
          };
          let options = {
            method: 'POST',
            headers: {
              'Content-Type': 'application/json;charset=utf-8',
              'Access-Control-Allow-Origin': '*',
            },
            body: JSON.stringify({
              'email': providedEmail,
              'vatId': vatId,
            }),
          }
          try {
            let response = await fetch("https://store-api.luxonis.com/tax-exemption/", options);
            if (!response.ok) return {
              isValid: false,
              userError: ''
            };
            document.getElementById("customer-vat").value = providedVatId;
            return response.json();
          } catch (e) {
            console.log(e);
            return {
              isValid: false,
              userError: ''
            };
          }
          return {
            isValid: false,
            userError: ''
          };
        }
        async function checkVat(value) {
          if (value === "") {
            document.getElementById("vat-id-label").innerHTML = '';
            return {
              isValid: true,
              userError: ''
            };
          }
          value = value.replaceAll(" ", "");
          let result;
          if (value.length > 0 && value.length < 8) result = {
            isValid: false,
            userError: 'VAT_SHORT'
          };
          if (!result) {
            try {
              const checkoutBtn = document.getElementById("button-checkout");
              checkoutBtn.classList.add("loading");
              let response = await fetch("https://store-api.luxonis.com/validate-vat/" + value);
              checkoutBtn.classList.remove("loading");
              if (!response.ok) result = {
                isValid: false,
                userError: ''
              };
              result = await response.json();
              localStorage.setItem("vatId", value);
            } catch (e) {
              console.log(e);
              result = {
                isValid: false,
                userError: ''
              };
            }
          }
          if (!isValidVat(result)) {
            invalidVat(result.userError);
          } else {
            document.getElementById("vat-id-label").innerHTML = '';
          }
          return result;
        }
      </script>
      <textarea name="note" id="CartSpecialInstructions" placeholder="Add order note (Optional)"></textarea>
      <div class="payment-icon-wrapper">
        <img class="payment-icon" src="//shop.luxonis.com/cdn/shop/t/44/assets/payment-card.svg?v=157582869446763438241716560034" alt="Payment Card" width="24" height="24">
        <img class="payment-icon" src="//shop.luxonis.com/cdn/shop/t/44/assets/payment-apple.svg?v=121271476123843558351716560035" alt="Payment Apple Pay" width="24" height="24">
        <img class="payment-icon" src="//shop.luxonis.com/cdn/shop/t/44/assets/payment-google.svg?v=2382670462411005171716560034" alt="Payment Google Pay" width="24" height="24">
      </div>
      <button type="submit" data-confirm="ck_lumise" name="checkout" id="button-checkout" class="button btn-checkout mt__10 mb__10 js_add_ld truncate"><span class="btn-checkout-text">Check Out</span></button>
    </div>
  </div>
</form>

POST /account/login

<form method="post" action="/account/login" id="customer_login" accept-charset="UTF-8" data-login-with-shop-sign-in="true" novalidate="novalidate" class="nt_mini_cart flex column h__100 is_selected"><input type="hidden" name="form_type"
    value="customer_login"><input type="hidden" name="utf8" value="✓">
  <div class="mini_cart_header flex fl_between al_center">
    <div class="h3 widget-title tu fs__16 mg__0">Login</div><i class="close_pp pegk pe-7s-close ts__03 cd"></i>
  </div>
  <div class="mini_cart_wrap">
    <div class="mini_cart_content fixcl-scroll">
      <div class="fixcl-scroll-content">
        <p class="form-row">
          <label for="CustomerEmail">Email <span class="required">*</span></label>
          <input type="email" name="customer[email]" id="CustomerEmail" autocomplete="email" autocorrect="off" autocapitalize="off">
        </p>
        <p class="form-row">
          <label for="CustomerPassword">Password <span class="required">*</span></label>
          <input type="password" value="" name="customer[password]" id="CustomerPassword">
        </p><input type="submit" class="button button_primary w__100 tu js_add_ld" value="Sign In">
        <br>
        <p class="mb__10 mt__20">New customer? <a data-no-instant="" rel="nofollow" href="/" data-id="#RegisterForm" class="link_acc">Create your account</a></p>
        <p>Lost password? <a data-no-instant="" rel="nofollow" href="#recover" data-id="#RecoverForm" class="link_acc">Recover password</a></p>
      </div>
    </div>
  </div>
</form>

POST /account/recover

<form method="post" action="/account/recover" id="RecoverForm" accept-charset="UTF-8" class="nt_mini_cart flex column h__100"><input type="hidden" name="form_type" value="recover_customer_password"><input type="hidden" name="utf8" value="✓">
  <div class="mini_cart_header flex fl_between al_center">
    <div class="h3 widget-title tu fs__16 mg__0">Recover password</div><i class="close_pp pegk pe-7s-close ts__03 cd"></i>
  </div>
  <div class="mini_cart_wrap">
    <div class="mini_cart_content fixcl-scroll">
      <div class="fixcl-scroll-content">
        <p class="form-row">
          <label for="RecoverEmail">Email address</label>
          <input type="email" value="" name="email" id="RecoverEmail" class="input-full" autocorrect="off" autocapitalize="off">
        </p>
        <input type="submit" class="button button_primary w__100 tu js_add_ld" value="Reset Password">
        <br>
        <p class="mb__10 mt__20">Remembered your password? <a data-no-instant="" rel="nofollow" href="/" data-id="#customer_login" class="link_acc">Back to login</a></p>
      </div>
    </div>
  </div>
</form>

POST /account

<form method="post" action="/account" id="RegisterForm" accept-charset="UTF-8" data-login-with-shop-sign-up="true" novalidate="novalidate" class="nt_mini_cart flex column h__100"><input type="hidden" name="form_type" value="create_customer"><input
    type="hidden" name="utf8" value="✓">
  <div class="mini_cart_header flex fl_between al_center">
    <div class="h3 widget-title tu fs__16 mg__0">Register</div><i class="close_pp pegk pe-7s-close ts__03 cd"></i>
  </div>
  <div class="mini_cart_wrap">
    <div class="mini_cart_content fixcl-scroll">
      <div class="fixcl-scroll-content">
        <p class="form-row">
          <label for="-FirstName">First Name</label>
          <input type="text" name="customer[first_name]" id="-FirstName" autocomplete="given-name">
        </p>
        <p class="form-row">
          <label for="-LastName">Last Name</label>
          <input type="text" name="customer[last_name]" id="-LastName" autocomplete="family-name">
        </p>
        <p class="form-row">
          <label for="-email">Email <span class="required">*</span></label>
          <input type="email" name="customer[email]" id="-email" class="" autocorrect="off" autocapitalize="off" autocomplete="email" aria-required="true">
        </p>
        <p class="form-row">
          <label for="-password">Password <span class="required">*</span></label>
          <input type="password" name="customer[password]" id="-password" class="" aria-required="true">
        </p><input type="submit" value="Register" class="button button_primary w__100 tu js_add_ld">
        <br>
        <p class="mb__10 mt__20">Already have an account? <a data-no-instant="" rel="nofollow" href="/" data-id="#customer_login" class="link_acc">Login here</a></p>
      </div>
    </div>
  </div>
</form>

GET /search

<form action="/search" method="get" class="search_header mini_search_frm pr js_frm_search" role="search">
  <input type="hidden" name="type" value="product">
  <input type="hidden" name="options[unavailable_products]" value="last">
  <input type="hidden" name="options[prefix]" value="none">
  <div class="frm_search_input pr oh">
    <input class="search_header__input js_iput_search" autocomplete="off" type="text" name="q" placeholder="Search for products">
    <button class="search_header__submit js_btn_search pe_none" type="submit"><i class="iccl iccl-search"></i></button>
  </div>
  <div class="ld_bar_search"></div>
</form>

POST /localization

<form method="post" action="/localization" id="localization_form" accept-charset="UTF-8" class="shopify-localization-form" 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="/?_s=_s-l-f">
  <input type="hidden" name="country_code" value="US">
  <input type="hidden" name="language_code" value="en">
</form>

Text Content

YOUR LOCATION IS SET TO CANADA

 * Shop in USD $
 * Get shipping options for Canada

Continue
Change country/region

Skip to content



LUXONIS

 * OAK Cameras
 * OAK Modules
 * Accessories
 * Early Access
 * Guide

0


NEW PRODUCTS


OAK 4 S

$699
$699.00 VAT incl.
$699.00
69900
US
PREORDER


OAK 4 PRO

$899
$899.00 VAT incl.
$899.00
89900
US
PREORDER


OAK THERMAL

$599
$599.00 VAT incl.
$599.00
59900
US
PREORDER


OAK TIME OF FLIGHT

$399
$399.00 VAT incl.
$399.00
39900
US
NEW
In stock
 1. 

support@luxonis.com



Follow on TwitterFollow on LinkedinFollow on YouTube
 * Luxonis Homepage
 * Hardware Documentation
 * DepthAI’s Documentation
 * GitHub Repository

 * FAQ
 * Shipping Info
 * Return and Refund Policy
 * Terms and Conditions
 * Privacy Policy

 * Certificates
 * Other Devices
 * Distributors


NEWSLETTER SIGNUP

Be the first to learn about our new products and updates

Subscribe
Thanks for subscribing



COUNTRY



Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday
January,February,March,April,May,June,July,August,September,October,November,December
Not enough items available. Only [max] left.


Shopping cart

Your cart is empty.

Return To Shop

Enable cookies to use the shopping cart



Subtotal:
$0.00

Taxes and shipping calculated at checkout


site-cart-form-widget
US

Check Out


Login

Email *

Password *


New customer? Create your account

Lost password? Recover password

Recover password

Email address


Remembered your password? Back to login

Register

First Name

Last Name

Email *

Password *


Already have an account? Login here


SEARCH OUR SITE

Search Result:Search Results: