gunner.com
Open in
urlscan Pro
23.227.38.32
Public Scan
Submitted URL: http://gunner.com/
Effective URL: https://gunner.com/
Submission: On December 20 via api from US — Scanned from CA
Effective URL: https://gunner.com/
Submission: On December 20 via api from US — Scanned from CA
Form analysis
9 forms found in the DOMGET /search
<form action="/search" method="get" class="search-bar" role="search">
<input type="hidden" name="type" value="product">
<input type="search" name="q" value="">
<button type="submit" class="search-bar--submit icon-fallback-text">
<div class="search-icon">
<svg aria-hidden="true" focusable="false" role="presentation" viewBox="0 0 37 40">
<path
d="M35.6 36l-9.8-9.8c4.1-5.4 3.6-13.2-1.3-18.1-5.4-5.4-14.2-5.4-19.7 0-5.4 5.4-5.4 14.2 0 19.7 2.6 2.6 6.1 4.1 9.8 4.1 3 0 5.9-1 8.3-2.8l9.8 9.8c.4.4.9.6 1.4.6s1-.2 1.4-.6c.9-.9.9-2.1.1-2.9zm-20.9-8.2c-2.6 0-5.1-1-7-2.9-3.9-3.9-3.9-10.1 0-14C9.6 9 12.2 8 14.7 8s5.1 1 7 2.9c3.9 3.9 3.9 10.1 0 14-1.9 1.9-4.4 2.9-7 2.9z">
</path>
</svg>
</div>
</button>
</form>
GET /search
<form action="/search" method="get" class="search-bar" role="search" data-event-types="form_submission" data-element-id="XkLOoz2o3aULlZJsW6ICUivTm2w3gEDl">
<input type="hidden" name="type" value="product">
<input type="search" name="q" value="" data-event-types="input_focus,input_blur" data-element-id="xMOisOouK8xNEuwAnvRpPENEy20bOkV4">
</form>
POST /contact#ContactFooter
<form method="post" action="/contact#ContactFooter" id="ContactFooter" accept-charset="UTF-8" class="contact-form" novalidate="novalidate" data-event-types="form_submission" data-element-id="NCLvHkhw8aAv1CodEIK6T6Mg5Q06TRaY"><input type="hidden"
name="form_type" value="customer"><input type="hidden" name="utf8" value="✓">
<div class="newsletter-form-fields">
<input type="hidden" name="contact[tags]" value="newsletter">
<input type="email" name="contact[email]" id="ContactFooter-email" value="" placeholder="Your Email Address" required="" autocorrect="off" autocapitalize="off" data-event-types="input_focus,input_blur"
data-element-id="hY3x6Gw8ShJVx49vgT4wsAkMlBCfjuhH">
<button type="submit" name="commit" id="Subscribe" data-event-types="hover,click" data-element-id="uWtBbpA1JTmBnU3L02C9fHMvsO4ri12Z">
<span>JOIN THE PACK</span>
</button>
</div>
</form>
POST /cart/add
<form method="post" action="/cart/add" id="product_form_4504503648328" accept-charset="UTF-8" class="product-form product-form-45045036483282" enctype="multipart/form-data" novalidate="novalidate"><input type="hidden" name="form_type"
value="product"><input type="hidden" name="utf8" value="✓">
<div class="name-plate-add-to-cart">
<div class="name-plate-quantity" style="display: none">
<div class="dec increment-button">-</div>
<input type="number" id="Quantity-45045036483282" name="quantity" value="1" min="1" pattern="[0-9]*">
<div class="inc increment-button">+</div>
</div>
<div class="selector-wrapper js product-form__item">
<label style="display: none" for="SingleOptionSelector-0"> Size </label>
<select class="single-option-selector single-option-selector-45045036483282 product-form__input" id="SingleOptionSelector-0" data-index="option1" data-event-types="select_change" data-element-id="XJMRTvxBPhR4o1JoSCMf9h024dNFv3LR">
<option value="Intermediate/Large" selected="selected">Intermediate/Large</option>
<option value="Small/Medium">Small/Medium</option>
</select>
</div>
<select style="display: none" name="id" id="ProductSelect-45045036483282-quickview" class="product-form__variants no-js">
<option selected="selected" value="31801264013384"> Intermediate/Large </option>
<option value="31882148020296"> Small/Medium </option>
</select>
<script type="module">
const template = `index`;
const productHandle = `personalized-kennel-name-plate`;
const personalization = document.querySelector('.personalization[data-product="' + productHandle + '"]');
const parentElement = personalization.closest('.product-details') || personalization.closest('.food-crate-name-plate-popup') || personalization.closest('.name-plate-popup') || personalization.closest('.kennel-bundle-popup') || personalization
.closest('.upsell-accessories-modal') || personalization.closest('#shopify-section-product-details_development-bundle-promo') || personalization.closest('#shopify-section-product-details_event-promo') || personalization.closest(
'#shopify-section-product-details_boykin-nationals-promo') || personalization.closest('#shopify-section-product-details_bundle') || personalization.closest('[id*=product-details_foodcratebundle]');
const personalizationOverlay = parentElement.querySelector('.personalization-overlay');
const dogNameInput = personalization.querySelector('.dog-name');
const addToCartButton = parentElement.querySelector('.add-to-cart-button');
const quantityButtons = parentElement.querySelector('.product-quantity');
const variantSelector = parentElement.querySelector('.single-option-selector');
const bundleStockCheck = () => {
var bundlePersonalization = document.querySelector('.product-options-container[data-product-handle="personalized-kennel-name-plate"]');
if (productHandle == 'food-crate-name-plate') {
bundlePersonalization = document.querySelector('.product-options-container[data-product-handle="food-crate-name-plate"]');
}
if (!bundlePersonalization) {
return;
}
if (!bundlePersonalization.querySelector('.bundle-out-of-stock')) {
return;
}
// Bundle page kennel size swatch label
let kennelSize;
const kennelSizeSwatchLabel = document.querySelector('#product_form_6569779036359 .swatch[data-swatch-name="Size"] .swatch-selected');
kennelSizeSwatchLabel ? kennelSize = kennelSizeSwatchLabel.textContent : null;
let namePlateAvailable;
kennelSize === 'Small' || kennelSize === 'Medium' ? namePlateAvailable = bundlePersonalization.querySelector('div[data-variant="Small/Medium"]').getAttribute('data-variant-available') : null;
kennelSize === 'Intermediate' || kennelSize === 'Large' ? namePlateAvailable = bundlePersonalization.querySelector('div[data-variant="Intermediate/Large"]').getAttribute('data-variant-available') : null;
if (!namePlateAvailable && !document.querySelectorAll('.bundle-out-of-stock.visible:not(.personalization-unavailable)').length) {
bundlePersonalization.querySelector('.bundle-out-of-stock').classList.add('visible');
// Bundle combination out of stock, hide/show Out of Stock form
const outOfStockForm = document.querySelector('#out-of-stock-form');
if (outOfStockForm) {
// Add to cart container
const addToCartContainer = document.querySelector('#product-add-to-cart');
outOfStockForm.classList.remove('hidden');
addToCartContainer.classList.add('hidden');
const activeBundleId = determineBundle();
// Determine which form to show
const klaviyoForms = outOfStockForm.querySelectorAll('.klaviyo-form');
klaviyoForms.forEach(klaviyoForm => {
if (klaviyoForm.getAttribute('data-bundle-id') == activeBundleId) {
klaviyoForm.classList.remove('hidden');
} else {
klaviyoForm.classList.add('hidden');
}
});
// Update active bundle ID
outOfStockForm.querySelector('#active-bundle').setAttribute('data-bundle-id', activeBundleId);
}
} else {
bundlePersonalization.querySelector('.bundle-out-of-stock').classList.remove('visible');
}
};
// checkCartButton(string)
const checkCartButton = (inputValue) => {
if (inputValue.length && personalization.querySelector('.personalization-approved').checked) {
if (addToCartButton) {
//food crate bundle, do not run the texts overlay in product image
if (template.indexOf('food-crate-bundle') !== -1) {
let productOptionsParent = document.getElementById('product-options');
let productOptionsCont = productOptionsParent.querySelectorAll('.option-container');
let countCheckedOptions = 0;
let productOptionsLength = productOptionsCont.length;
if (productOptionsCont) {
productOptionsCont.forEach(productOptionContainer => {
let swatchCont = productOptionContainer.querySelector('.swatch-container');
let swatchInput = swatchCont.querySelectorAll('input[type="radio"]:checked');
if (swatchInput.length) {
countCheckedOptions++;
}
});
if (countCheckedOptions == productOptionsLength) {
addToCartButton.classList.remove('disabled');
addToCartButton.removeAttribute('disabled');
}
}
} else {
addToCartButton.classList.remove('disabled');
addToCartButton.removeAttribute('disabled');
}
}
quantityButtons && quantityButtons.classList.remove('disabled');
} else {
if (addToCartButton) {
addToCartButton.classList.add('disabled');
addToCartButton.setAttribute('disabled', true);
}
quantityButtons && quantityButtons.classList.add('disabled');
}
// If any bundles are disabled, disable cart functionality
const unavailableBundleOptions = document.querySelectorAll('#shopify-section-product-details_bundle #bundle-product-options .product-options-container[data-available="false"]');
if (unavailableBundleOptions.length) {
if (addToCartButton) {
addToCartButton.classList.add('disabled');
addToCartButton.setAttribute('disabled', true);
}
quantityButtons && quantityButtons.classList.add('disabled');
}
// Up-sell accessories modal select buttons
const upsellAccessoriesSelectsSelected = document.querySelectorAll('.upsell-accessories-modal .bundle-product-select.selected');
if (addToCartButton && parentElement.classList.contains('upsell-accessories-modal') && !upsellAccessoriesSelectsSelected.length) {
addToCartButton.classList.add('disabled');
addToCartButton.setAttribute('disabled', true);
}
};
// bundleDataCheck(string, HTMLElement)
const bundleDataCheck = (inputValue, swatch) => {
const bundleOptionsContainer = personalization.closest('.product-options-container');
if (bundleOptionsContainer) {
let kennelSize;
// Bundle page kennel size swatch label
const kennelSizeSwatchLabel = document.querySelector('#product_form_6569779036359 .swatch[data-swatch-name="Size"] .swatch-selected');
kennelSizeSwatchLabel ? kennelSize = kennelSizeSwatchLabel.textContent : null;
// Up-sell accessories modal
const upsellAccessoriesModalKennelSize = document.querySelector('#upsell-accessories-modal-kennel-size');
upsellAccessoriesModalKennelSize ? kennelSize = upsellAccessoriesModalKennelSize.getAttribute('data-size') : null;
// Swatch override
swatch ? kennelSize = swatch.getAttribute('data-swatch-value') : null;
let isFoodCrateBundle = 0;
if ((inputValue.length && personalization.querySelector('.personalization-approved').checked) || (isFoodCrateBundle == 1)) {
const variantDataElements = bundleOptionsContainer.querySelectorAll('.bundle-product-variant-data > div');
variantDataElements && variantDataElements.forEach(variantDataElement => {
if (variantDataElement.getAttribute('data-variant').indexOf(kennelSize) >= 0) {
bundleOptionsContainer.setAttribute('data-price', variantDataElement.getAttribute('data-variant-price'));
bundleOptionsContainer.setAttribute('data-variant-id', variantDataElement.getAttribute('data-variant-id'));
}
});
} else {
bundleOptionsContainer.removeAttribute('data-price');
bundleOptionsContainer.removeAttribute('data-variant-id');
}
//try {
if (document.querySelector("#product_form_6569779036359 #SingleOptionSelector-0").length > 0) {
document.querySelector('#product_form_6569779036359 #SingleOptionSelector-0') && document.querySelector('#product_form_6569779036359 #SingleOptionSelector-0').dispatchEvent(new Event('change'));
}
//} catch (e) {}
}
};
// Disable the add to cart buttons.
if (addToCartButton) {
addToCartButton.classList.add('disabled');
addToCartButton.setAttribute('disabled', true);
}
// Preview approval checkbox detection.
personalization.querySelector('.personalization-approved').addEventListener('change', () => {
checkCartButton(dogNameInput.value.replace(/[^a-z0-9 ]/gi, ''));
bundleDataCheck(dogNameInput.value.replace(/[^a-z0-9 ]/gi, ''));
// Bundle stock check
bundleStockCheck();
});
// fixFontWidth(boolean)
const fixFontWidth = (fromRerun) => {
let fontSize = 250;
if (template === 'product.personalized-name-plate' || template === 'product.food-crate-name-plate' || template === 'page.promo-landing-page' || template === 'page.boykin-nationals-promo') {
if (window.matchMedia('(max-width: 1400px)').matches) {
fontSize = 170;
}
if (window.matchMedia('(max-width: 1200px)').matches) {
fontSize = 135;
}
} else {
fontSize = 125;
}
if (window.matchMedia('(max-width: 1000px)').matches) {
fontSize = 105;
}
if (window.matchMedia('(max-width: 700px)').matches) {
fontSize = 125;
}
if (window.matchMedia('(max-width: 600px)').matches) {
fontSize = 100;
}
if (window.matchMedia('(max-width: 480px)').matches) {
fontSize = 90;
}
if (window.matchMedia('(max-width: 400px)').matches) {
fontSize = 80;
}
if (document.querySelector('#shopify-section-product-details_bundle')) {
fontSize = 75;
if (window.matchMedia('(max-width: 1400px)').matches) {
fontSize = 65;
}
if (window.matchMedia('(max-width: 1200px)').matches) {
fontSize = 60;
}
if (window.matchMedia('(max-width: 1000px)').matches) {
fontSize = 55;
}
if (window.matchMedia('(max-width: 700px)').matches) {
fontSize = 50;
}
if (window.matchMedia('(max-width: 600px)').matches) {
fontSize = 45;
}
if (window.matchMedia('(max-width: 480px)').matches) {
fontSize = 40;
}
if (window.matchMedia('(max-width: 400px)').matches) {
fontSize = 36;
}
}
const textContainer = personalizationOverlay.querySelector('.personalization-overlay-text')
const textContainerWidth = textContainer.offsetWidth;
const textContainerInner = personalizationOverlay.querySelector('.personalization-overlay-text-inner');
const textContainerInnerWidth = textContainerInner.offsetWidth;
const currentFontSize = parseInt(window.getComputedStyle(textContainerInner).fontSize.replace('px', ''));
let newFontSize = parseInt(window.getComputedStyle(textContainerInner).fontSize.replace('px', ''));
let rerunFunction;
if (textContainerInnerWidth >= textContainerWidth) {
newFontSize = currentFontSize * 0.9;
rerunFunction = true;
} else if (textContainerInnerWidth < textContainerWidth && fontSize > currentFontSize && !fromRerun) {
let totalRuns = 0;
for (let i = fontSize; i > 6; i *= 0.9) {
let mockElement = textContainerInner.cloneNode(true);
mockElement.removeAttribute('id');
mockElement.classList.add('personalization-overlay-text-mock-element');
mockElement.style.fontSize = i + 'px';
textContainer.append(mockElement);
const mockElementWidth = mockElement.offsetWidth;
mockElement.remove();
if (mockElementWidth < textContainerWidth) {
newFontSize = i;
break;
}
totalRuns++;
if (totalRuns > 30) {
break;
}
};
}
textContainerInner.style.fontSize = newFontSize + 'px';
rerunFunction && fixFontWidth(true);
}
// Dog name input change.
dogNameInput.addEventListener('input', (e) => {
const newValue = e.target.value;
// Remove any special characters. Limit to 0-9 and A-Z.
const valueWithoutSpecialChars = newValue.replace(/[^a-zA-Z0-9 ]/g, '');
//food crate bundle, do not run the texts overlay in product image
if (template.indexOf('food-crate-bundle') !== -1) {
checkCartButton(valueWithoutSpecialChars);
bundleDataCheck(valueWithoutSpecialChars);
} else {
// Blank image switch.
if (document.querySelector('#shopify-section-product-details_bundle')) {
let namePlateImageIndex;
const mainProductImages = document.querySelectorAll('#main-product-image-slider .slick-slide:not(.slick-cloned) .product-image');
mainProductImages.forEach((mainProductImage, index) => mainProductImage.getAttribute('data-name-plate-image') ? namePlateImageIndex = index : null);
$('#main-product-image-slider').slick('slickGoTo', namePlateImageIndex);
// Popup.
} else {
const namePlatePopup = document.querySelector('.name-plate-popup');
const foodCrateNamePlatePopup = document.querySelector('.food-crate-name-plate-popup');
const kennelBundlePopup = document.querySelector('.kennel-bundle-popup');
const upsellAccessoriesModal = document.querySelector('.upsell-accessories-modal');
if (namePlatePopup) {
namePlatePopup.querySelector('.name-plate-product-image .blank').classList.remove('hidden');
namePlatePopup.querySelector('.name-plate-product-image .not-blank').classList.add('hidden');
}
if (kennelBundlePopup) {
kennelBundlePopup.querySelector('.name-plate-product-image .blank').classList.remove('hidden');
kennelBundlePopup.querySelector('.name-plate-product-image .not-blank').classList.add('hidden');
}
if (foodCrateNamePlatePopup) {
foodCrateNamePlatePopup.querySelector('.food-crate-name-plate-popup .food-crate-name-plate-product-image .blank').classList.remove('hidden');
foodCrateNamePlatePopup.querySelector('.food-crate-name-plate-popup .food-crate-name-plate-product-image .not-blank').classList.add('hidden');
}
if (upsellAccessoriesModal) {
upsellAccessoriesModal.querySelectorAll('.upsell-accessories-modal .name-plate-product-image .blank').forEach(blankImage => blankImage.classList.remove('hidden'));
upsellAccessoriesModal.querySelectorAll('.upsell-accessories-modal .name-plate-product-image .not-blank').forEach(notBlankImage => notBlankImage.classList.add('hidden'));
}
}
// Update the input.
e.target.value = valueWithoutSpecialChars;
// Text overlay.
const inputLength = valueWithoutSpecialChars.length;
const thisCharacter = valueWithoutSpecialChars[inputLength - 1];
const lastCharacter = valueWithoutSpecialChars[inputLength - 2];
// Do not show blanks.
if (thisCharacter === ' ' && lastCharacter === ' ') {
return;
}
if (inputLength === 1 && thisCharacter === ' ') {
return;
}
personalizationOverlay.querySelector('.personalization-overlay-text-inner').textContent = valueWithoutSpecialChars;
checkCartButton(valueWithoutSpecialChars);
bundleDataCheck(valueWithoutSpecialChars);
fixFontWidth();
}
});
// Swatches.
document.querySelectorAll('#shopify-section-product-details_development-bundle-promo .swatch label').forEach(swatch => {
swatch.addEventListener('click', () => checkCartButton(dogNameInput.value.replace(/[^a-z0-9 ]/gi, '')));
});
document.querySelectorAll('#shopify-section-product-details_event-promo .swatch label').forEach(swatch => {
swatch.addEventListener('click', () => checkCartButton(dogNameInput.value.replace(/[^a-z0-9 ]/gi, '')));
});
document.querySelectorAll('#shopify-section-product-details_bundle .swatch label').forEach(swatch => {
swatch.addEventListener('click', () => checkCartButton(dogNameInput.value.replace(/[^a-z0-9 ]/gi, '')));
});
document.querySelectorAll('#shopify-section-product-details_bundle #product-options .swatch[data-swatch-name="Size"] label').forEach(swatch => {
swatch.addEventListener('click', () => bundleDataCheck(dogNameInput.value.replace(/[^a-z0-9 ]/gi, ''), swatch));
});
document.querySelectorAll('section[id*="product-details_foodcratebundle"] .swatch[data-swatch-name="FOOD SCOOP"] label').forEach(swatch => {
swatch.addEventListener('click', () => bundleDataCheck(dogNameInput.value.replace(/[^a-z0-9 ]/gi, ''), swatch));
});
// Up-sell accessories modal select buttons
document.querySelectorAll('.upsell-accessories-modal .bundle-product-select').forEach(bundleProductSelect => bundleProductSelect.addEventListener('click', () => checkCartButton(dogNameInput.value.replace(/[^a-z0-9 ]/gi, ''))));
// Bundle stock check
document.querySelector('input.dog-name').addEventListener('focus', () => bundleStockCheck());
// Variant selector.
variantSelector && variantSelector.addEventListener('change', (e) => checkCartButton(dogNameInput.value.replace(/[^a-z0-9 ]/gi, '')));
// Window resize font fix.
let resizeTimer;
window.addEventListener('resize', function() {
clearTimeout(resizeTimer);
resizeTimer = setTimeout(fixFontWidth(), 50);
fixFontWidth();
});
</script>
<style>
.personalization {
display: flex;
flex-direction: column;
width: 100%;
max-width: 250px;
margin: 15px 0 10px 0
}
.personalization label {
color: #4c4e58;
font-family: 'Avenir Next Medium';
font-weight: 800;
font-size: 13px;
line-height: 1;
text-transform: uppercase;
}
.personalization .dog-name {
width: 100%;
font-family: 'Avenir Next Medium';
font-weight: 800;
color: #4c4e58;
font-size: 12px;
line-height: 1;
text-transform: uppercase;
border-color: #ccc;
border-radius: 2px;
padding: 8px 15px;
margin: 0 0 5px 0;
}
.personalization-approved {
vertical-align: middle;
margin-left: 3px;
}
.personalization-approved-label {
font-family: 'Avenir Next Medium';
font-size: 13px;
line-height: 1.2;
color: #4c4e58;
}
.personalization .bundle-out-of-stock {
display: none;
margin: 15px 0 0 0;
font-size: 14px;
color: #ea5430;
font-family: 'Avenir Next Medium';
line-height: 1.3;
}
.personalization .bundle-out-of-stock.visible {
display: block;
}
@media screen and (max-width: 769px) {
.personalization {
margin: 15px auto !important;
}
.personalization label {
text-align: center !important;
}
}
</style>
<div class="personalization" data-product="personalized-kennel-name-plate">
<label for="dog-name"> Dog Name </label>
<input type="text" class="dog-name" name="properties[Dog Name]" maxlength="10" data-event-types="input_focus,input_blur" data-element-id="EA57Sl0R1TWCurF6HFobUM2rHXM0iRHB">
<input type="hidden" name="properties[Product Information]" value="This is a custom product & additional processing time may be required.">
<div style="text-align: center">
<span class="personalization-approved-label"> I've reviewed and approve the design shown in the preview </span>
<input class="personalization-approved" type="checkbox" data-event-types="input_change" data-element-id="TlfesrBLtGO3RiZdqXWOeTjIO1I1UBRi">
</div>
</div>
<button class="add-to-cart-button disabled" type="submit" name="add" id="AddToCart-45045036483282" data-event-types="hover,click" data-element-id="wRJR9LmdQ8TtfyOueyePyq3YuLlODxfa" disabled="true">
<span id="AddToCartText-45045036483282"> ADD TO CART </span>
<span class="add-to-cart-loading"><svg viewBox="0 0 40 40">
<path opacity="0.2"
d="M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946 s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634 c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z">
</path>
<path d="M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0 C22.32,8.481,24.301,9.057,26.013,10.047z">
<animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 20 20" to="360 20 20" dur="0.6s" repeatCount="indefinite"></animateTransform>
</path>
</svg></span>
</button>
</div>
<input type="hidden" name="product-id" value="4504503648328">
</form>
POST /cart/add
<form method="post" action="/cart/add" id="product_form_6791594705095" accept-charset="UTF-8" class="product-form product-form-67915947050952" enctype="multipart/form-data" novalidate="novalidate"><input type="hidden" name="form_type"
value="product"><input type="hidden" name="utf8" value="✓">
<select style="display: none" name="id" id="ProductSelect-67915947050952-quickview" class="product-form__variants no-js">
<option selected="selected" value="40195143073991"> Default Title </option>
</select>
<script type="module">
const template = `index`;
const productHandle = `food-crate-name-plate`;
const personalization = document.querySelector('.personalization[data-product="' + productHandle + '"]');
const parentElement = personalization.closest('.product-details') || personalization.closest('.food-crate-name-plate-popup') || personalization.closest('.name-plate-popup') || personalization.closest('.kennel-bundle-popup') || personalization
.closest('.upsell-accessories-modal') || personalization.closest('#shopify-section-product-details_development-bundle-promo') || personalization.closest('#shopify-section-product-details_event-promo') || personalization.closest(
'#shopify-section-product-details_boykin-nationals-promo') || personalization.closest('#shopify-section-product-details_bundle') || personalization.closest('[id*=product-details_foodcratebundle]');
const personalizationOverlay = parentElement.querySelector('.personalization-overlay');
const dogNameInput = personalization.querySelector('.dog-name');
const addToCartButton = parentElement.querySelector('.add-to-cart-button');
const quantityButtons = parentElement.querySelector('.product-quantity');
const variantSelector = parentElement.querySelector('.single-option-selector');
const bundleStockCheck = () => {
var bundlePersonalization = document.querySelector('.product-options-container[data-product-handle="personalized-kennel-name-plate"]');
if (productHandle == 'food-crate-name-plate') {
bundlePersonalization = document.querySelector('.product-options-container[data-product-handle="food-crate-name-plate"]');
}
if (!bundlePersonalization) {
return;
}
if (!bundlePersonalization.querySelector('.bundle-out-of-stock')) {
return;
}
// Bundle page kennel size swatch label
let kennelSize;
const kennelSizeSwatchLabel = document.querySelector('#product_form_6569779036359 .swatch[data-swatch-name="Size"] .swatch-selected');
kennelSizeSwatchLabel ? kennelSize = kennelSizeSwatchLabel.textContent : null;
let namePlateAvailable;
kennelSize === 'Small' || kennelSize === 'Medium' ? namePlateAvailable = bundlePersonalization.querySelector('div[data-variant="Small/Medium"]').getAttribute('data-variant-available') : null;
kennelSize === 'Intermediate' || kennelSize === 'Large' ? namePlateAvailable = bundlePersonalization.querySelector('div[data-variant="Intermediate/Large"]').getAttribute('data-variant-available') : null;
if (!namePlateAvailable && !document.querySelectorAll('.bundle-out-of-stock.visible:not(.personalization-unavailable)').length) {
bundlePersonalization.querySelector('.bundle-out-of-stock').classList.add('visible');
// Bundle combination out of stock, hide/show Out of Stock form
const outOfStockForm = document.querySelector('#out-of-stock-form');
if (outOfStockForm) {
// Add to cart container
const addToCartContainer = document.querySelector('#product-add-to-cart');
outOfStockForm.classList.remove('hidden');
addToCartContainer.classList.add('hidden');
const activeBundleId = determineBundle();
// Determine which form to show
const klaviyoForms = outOfStockForm.querySelectorAll('.klaviyo-form');
klaviyoForms.forEach(klaviyoForm => {
if (klaviyoForm.getAttribute('data-bundle-id') == activeBundleId) {
klaviyoForm.classList.remove('hidden');
} else {
klaviyoForm.classList.add('hidden');
}
});
// Update active bundle ID
outOfStockForm.querySelector('#active-bundle').setAttribute('data-bundle-id', activeBundleId);
}
} else {
bundlePersonalization.querySelector('.bundle-out-of-stock').classList.remove('visible');
}
};
// checkCartButton(string)
const checkCartButton = (inputValue) => {
if (inputValue.length && personalization.querySelector('.personalization-approved').checked) {
if (addToCartButton) {
//food crate bundle, do not run the texts overlay in product image
if (template.indexOf('food-crate-bundle') !== -1) {
let productOptionsParent = document.getElementById('product-options');
let productOptionsCont = productOptionsParent.querySelectorAll('.option-container');
let countCheckedOptions = 0;
let productOptionsLength = productOptionsCont.length;
if (productOptionsCont) {
productOptionsCont.forEach(productOptionContainer => {
let swatchCont = productOptionContainer.querySelector('.swatch-container');
let swatchInput = swatchCont.querySelectorAll('input[type="radio"]:checked');
if (swatchInput.length) {
countCheckedOptions++;
}
});
if (countCheckedOptions == productOptionsLength) {
addToCartButton.classList.remove('disabled');
addToCartButton.removeAttribute('disabled');
}
}
} else {
addToCartButton.classList.remove('disabled');
addToCartButton.removeAttribute('disabled');
}
}
quantityButtons && quantityButtons.classList.remove('disabled');
} else {
if (addToCartButton) {
addToCartButton.classList.add('disabled');
addToCartButton.setAttribute('disabled', true);
}
quantityButtons && quantityButtons.classList.add('disabled');
}
// If any bundles are disabled, disable cart functionality
const unavailableBundleOptions = document.querySelectorAll('#shopify-section-product-details_bundle #bundle-product-options .product-options-container[data-available="false"]');
if (unavailableBundleOptions.length) {
if (addToCartButton) {
addToCartButton.classList.add('disabled');
addToCartButton.setAttribute('disabled', true);
}
quantityButtons && quantityButtons.classList.add('disabled');
}
// Up-sell accessories modal select buttons
const upsellAccessoriesSelectsSelected = document.querySelectorAll('.upsell-accessories-modal .bundle-product-select.selected');
if (addToCartButton && parentElement.classList.contains('upsell-accessories-modal') && !upsellAccessoriesSelectsSelected.length) {
addToCartButton.classList.add('disabled');
addToCartButton.setAttribute('disabled', true);
}
};
// bundleDataCheck(string, HTMLElement)
const bundleDataCheck = (inputValue, swatch) => {
const bundleOptionsContainer = personalization.closest('.product-options-container');
if (bundleOptionsContainer) {
let kennelSize;
// Bundle page kennel size swatch label
const kennelSizeSwatchLabel = document.querySelector('#product_form_6569779036359 .swatch[data-swatch-name="Size"] .swatch-selected');
kennelSizeSwatchLabel ? kennelSize = kennelSizeSwatchLabel.textContent : null;
// Up-sell accessories modal
const upsellAccessoriesModalKennelSize = document.querySelector('#upsell-accessories-modal-kennel-size');
upsellAccessoriesModalKennelSize ? kennelSize = upsellAccessoriesModalKennelSize.getAttribute('data-size') : null;
// Swatch override
swatch ? kennelSize = swatch.getAttribute('data-swatch-value') : null;
let isFoodCrateBundle = 0;
if ((inputValue.length && personalization.querySelector('.personalization-approved').checked) || (isFoodCrateBundle == 1)) {
const variantDataElements = bundleOptionsContainer.querySelectorAll('.bundle-product-variant-data > div');
variantDataElements && variantDataElements.forEach(variantDataElement => {
if (variantDataElement.getAttribute('data-variant').indexOf(kennelSize) >= 0) {
bundleOptionsContainer.setAttribute('data-price', variantDataElement.getAttribute('data-variant-price'));
bundleOptionsContainer.setAttribute('data-variant-id', variantDataElement.getAttribute('data-variant-id'));
}
});
} else {
bundleOptionsContainer.removeAttribute('data-price');
bundleOptionsContainer.removeAttribute('data-variant-id');
}
//try {
if (document.querySelector("#product_form_6569779036359 #SingleOptionSelector-0").length > 0) {
document.querySelector('#product_form_6569779036359 #SingleOptionSelector-0') && document.querySelector('#product_form_6569779036359 #SingleOptionSelector-0').dispatchEvent(new Event('change'));
}
//} catch (e) {}
}
};
// Disable the add to cart buttons.
if (addToCartButton) {
addToCartButton.classList.add('disabled');
addToCartButton.setAttribute('disabled', true);
}
// Preview approval checkbox detection.
personalization.querySelector('.personalization-approved').addEventListener('change', () => {
checkCartButton(dogNameInput.value.replace(/[^a-z0-9 ]/gi, ''));
bundleDataCheck(dogNameInput.value.replace(/[^a-z0-9 ]/gi, ''));
// Bundle stock check
bundleStockCheck();
});
// fixFontWidth(boolean)
const fixFontWidth = (fromRerun) => {
let fontSize = 250;
if (template === 'product.personalized-name-plate' || template === 'product.food-crate-name-plate' || template === 'page.promo-landing-page' || template === 'page.boykin-nationals-promo') {
if (window.matchMedia('(max-width: 1400px)').matches) {
fontSize = 170;
}
if (window.matchMedia('(max-width: 1200px)').matches) {
fontSize = 135;
}
} else {
fontSize = 125;
}
if (window.matchMedia('(max-width: 1000px)').matches) {
fontSize = 105;
}
if (window.matchMedia('(max-width: 700px)').matches) {
fontSize = 125;
}
if (window.matchMedia('(max-width: 600px)').matches) {
fontSize = 100;
}
if (window.matchMedia('(max-width: 480px)').matches) {
fontSize = 90;
}
if (window.matchMedia('(max-width: 400px)').matches) {
fontSize = 80;
}
if (document.querySelector('#shopify-section-product-details_bundle')) {
fontSize = 75;
if (window.matchMedia('(max-width: 1400px)').matches) {
fontSize = 65;
}
if (window.matchMedia('(max-width: 1200px)').matches) {
fontSize = 60;
}
if (window.matchMedia('(max-width: 1000px)').matches) {
fontSize = 55;
}
if (window.matchMedia('(max-width: 700px)').matches) {
fontSize = 50;
}
if (window.matchMedia('(max-width: 600px)').matches) {
fontSize = 45;
}
if (window.matchMedia('(max-width: 480px)').matches) {
fontSize = 40;
}
if (window.matchMedia('(max-width: 400px)').matches) {
fontSize = 36;
}
}
const textContainer = personalizationOverlay.querySelector('.personalization-overlay-text')
const textContainerWidth = textContainer.offsetWidth;
const textContainerInner = personalizationOverlay.querySelector('.personalization-overlay-text-inner');
const textContainerInnerWidth = textContainerInner.offsetWidth;
const currentFontSize = parseInt(window.getComputedStyle(textContainerInner).fontSize.replace('px', ''));
let newFontSize = parseInt(window.getComputedStyle(textContainerInner).fontSize.replace('px', ''));
let rerunFunction;
if (textContainerInnerWidth >= textContainerWidth) {
newFontSize = currentFontSize * 0.9;
rerunFunction = true;
} else if (textContainerInnerWidth < textContainerWidth && fontSize > currentFontSize && !fromRerun) {
let totalRuns = 0;
for (let i = fontSize; i > 6; i *= 0.9) {
let mockElement = textContainerInner.cloneNode(true);
mockElement.removeAttribute('id');
mockElement.classList.add('personalization-overlay-text-mock-element');
mockElement.style.fontSize = i + 'px';
textContainer.append(mockElement);
const mockElementWidth = mockElement.offsetWidth;
mockElement.remove();
if (mockElementWidth < textContainerWidth) {
newFontSize = i;
break;
}
totalRuns++;
if (totalRuns > 30) {
break;
}
};
}
textContainerInner.style.fontSize = newFontSize + 'px';
rerunFunction && fixFontWidth(true);
}
// Dog name input change.
dogNameInput.addEventListener('input', (e) => {
const newValue = e.target.value;
// Remove any special characters. Limit to 0-9 and A-Z.
const valueWithoutSpecialChars = newValue.replace(/[^a-zA-Z0-9 ]/g, '');
//food crate bundle, do not run the texts overlay in product image
if (template.indexOf('food-crate-bundle') !== -1) {
checkCartButton(valueWithoutSpecialChars);
bundleDataCheck(valueWithoutSpecialChars);
} else {
// Blank image switch.
if (document.querySelector('#shopify-section-product-details_bundle')) {
let namePlateImageIndex;
const mainProductImages = document.querySelectorAll('#main-product-image-slider .slick-slide:not(.slick-cloned) .product-image');
mainProductImages.forEach((mainProductImage, index) => mainProductImage.getAttribute('data-name-plate-image') ? namePlateImageIndex = index : null);
$('#main-product-image-slider').slick('slickGoTo', namePlateImageIndex);
// Popup.
} else {
const namePlatePopup = document.querySelector('.name-plate-popup');
const foodCrateNamePlatePopup = document.querySelector('.food-crate-name-plate-popup');
const kennelBundlePopup = document.querySelector('.kennel-bundle-popup');
const upsellAccessoriesModal = document.querySelector('.upsell-accessories-modal');
if (namePlatePopup) {
namePlatePopup.querySelector('.name-plate-product-image .blank').classList.remove('hidden');
namePlatePopup.querySelector('.name-plate-product-image .not-blank').classList.add('hidden');
}
if (kennelBundlePopup) {
kennelBundlePopup.querySelector('.name-plate-product-image .blank').classList.remove('hidden');
kennelBundlePopup.querySelector('.name-plate-product-image .not-blank').classList.add('hidden');
}
if (foodCrateNamePlatePopup) {
foodCrateNamePlatePopup.querySelector('.food-crate-name-plate-popup .food-crate-name-plate-product-image .blank').classList.remove('hidden');
foodCrateNamePlatePopup.querySelector('.food-crate-name-plate-popup .food-crate-name-plate-product-image .not-blank').classList.add('hidden');
}
if (upsellAccessoriesModal) {
upsellAccessoriesModal.querySelectorAll('.upsell-accessories-modal .name-plate-product-image .blank').forEach(blankImage => blankImage.classList.remove('hidden'));
upsellAccessoriesModal.querySelectorAll('.upsell-accessories-modal .name-plate-product-image .not-blank').forEach(notBlankImage => notBlankImage.classList.add('hidden'));
}
}
// Update the input.
e.target.value = valueWithoutSpecialChars;
// Text overlay.
const inputLength = valueWithoutSpecialChars.length;
const thisCharacter = valueWithoutSpecialChars[inputLength - 1];
const lastCharacter = valueWithoutSpecialChars[inputLength - 2];
// Do not show blanks.
if (thisCharacter === ' ' && lastCharacter === ' ') {
return;
}
if (inputLength === 1 && thisCharacter === ' ') {
return;
}
personalizationOverlay.querySelector('.personalization-overlay-text-inner').textContent = valueWithoutSpecialChars;
checkCartButton(valueWithoutSpecialChars);
bundleDataCheck(valueWithoutSpecialChars);
fixFontWidth();
}
});
// Swatches.
document.querySelectorAll('#shopify-section-product-details_development-bundle-promo .swatch label').forEach(swatch => {
swatch.addEventListener('click', () => checkCartButton(dogNameInput.value.replace(/[^a-z0-9 ]/gi, '')));
});
document.querySelectorAll('#shopify-section-product-details_event-promo .swatch label').forEach(swatch => {
swatch.addEventListener('click', () => checkCartButton(dogNameInput.value.replace(/[^a-z0-9 ]/gi, '')));
});
document.querySelectorAll('#shopify-section-product-details_bundle .swatch label').forEach(swatch => {
swatch.addEventListener('click', () => checkCartButton(dogNameInput.value.replace(/[^a-z0-9 ]/gi, '')));
});
document.querySelectorAll('#shopify-section-product-details_bundle #product-options .swatch[data-swatch-name="Size"] label').forEach(swatch => {
swatch.addEventListener('click', () => bundleDataCheck(dogNameInput.value.replace(/[^a-z0-9 ]/gi, ''), swatch));
});
document.querySelectorAll('section[id*="product-details_foodcratebundle"] .swatch[data-swatch-name="FOOD SCOOP"] label').forEach(swatch => {
swatch.addEventListener('click', () => bundleDataCheck(dogNameInput.value.replace(/[^a-z0-9 ]/gi, ''), swatch));
});
// Up-sell accessories modal select buttons
document.querySelectorAll('.upsell-accessories-modal .bundle-product-select').forEach(bundleProductSelect => bundleProductSelect.addEventListener('click', () => checkCartButton(dogNameInput.value.replace(/[^a-z0-9 ]/gi, ''))));
// Bundle stock check
document.querySelector('input.dog-name').addEventListener('focus', () => bundleStockCheck());
// Variant selector.
variantSelector && variantSelector.addEventListener('change', (e) => checkCartButton(dogNameInput.value.replace(/[^a-z0-9 ]/gi, '')));
// Window resize font fix.
let resizeTimer;
window.addEventListener('resize', function() {
clearTimeout(resizeTimer);
resizeTimer = setTimeout(fixFontWidth(), 50);
fixFontWidth();
});
</script>
<style>
.personalization {
display: flex;
flex-direction: column;
width: 100%;
max-width: 250px;
margin: 15px 0 10px 0
}
.personalization label {
color: #4c4e58;
font-family: 'Avenir Next Medium';
font-weight: 800;
font-size: 13px;
line-height: 1;
text-transform: uppercase;
}
.personalization .dog-name {
width: 100%;
font-family: 'Avenir Next Medium';
font-weight: 800;
color: #4c4e58;
font-size: 12px;
line-height: 1;
text-transform: uppercase;
border-color: #ccc;
border-radius: 2px;
padding: 8px 15px;
margin: 0 0 5px 0;
}
.personalization-approved {
vertical-align: middle;
margin-left: 3px;
}
.personalization-approved-label {
font-family: 'Avenir Next Medium';
font-size: 13px;
line-height: 1.2;
color: #4c4e58;
}
.personalization .bundle-out-of-stock {
display: none;
margin: 15px 0 0 0;
font-size: 14px;
color: #ea5430;
font-family: 'Avenir Next Medium';
line-height: 1.3;
}
.personalization .bundle-out-of-stock.visible {
display: block;
}
@media screen and (max-width: 769px) {
.personalization {
margin: 15px auto !important;
}
.personalization label {
text-align: center !important;
}
}
</style>
<div class="personalization" data-product="food-crate-name-plate">
<label for="dog-name"> Dog Name </label>
<input type="text" class="dog-name" name="properties[Dog Name]" maxlength="10" data-event-types="input_focus,input_blur" data-element-id="EA57Sl0R1TWCurF6HFobUM2rHXM0iRHB">
<input type="hidden" name="properties[Product Information]" value="This is a custom product & additional processing time may be required.">
<div style="text-align: center">
<span class="personalization-approved-label"> I've reviewed and approve the design shown in the preview </span>
<input class="personalization-approved" type="checkbox" data-event-types="input_change" data-element-id="TlfesrBLtGO3RiZdqXWOeTjIO1I1UBRi">
</div>
</div>
<button class="add-to-cart-button disabled" type="submit" name="add" id="AddToCart-67915947050952" data-event-types="hover,click" data-element-id="b4kMoqojyRQaA65MihPCrCSTgXjEg9QJ" disabled="true">
<span id="AddToCartText-67915947050952"> ADD TO CART </span>
<span class="add-to-cart-loading"><svg viewBox="0 0 40 40">
<path opacity="0.2"
d="M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946 s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634 c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z">
</path>
<path d="M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0 C22.32,8.481,24.301,9.057,26.013,10.047z">
<animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 20 20" to="360 20 20" dur="0.6s" repeatCount="indefinite"></animateTransform>
</path>
</svg></span>
</button>
</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" data-event-types="form_submission" data-element-id="TJ623FcskIVQcsYkvrhNtQtpj9g50v6N"><input
type="hidden" name="form_type" value="customer_login"><input type="hidden" name="utf8" value="✓">
<input type="hidden" name="return_to" value="back"><input type="email" placeholder="Email" name="customer[email]" id="CustomerEmail" autocomplete="email" autocorrect="off" autocapitalize="off" data-event-types="input_focus,input_blur"
data-element-id="7fu2cvaMTSxQ2hR1MOwHzWWt803c5tJk">
<input type="password" placeholder="Password" value="" name="customer[password]" id="CustomerPassword" data-event-types="input_focus,input_blur" data-element-id="eRuVeL4zUvQb0ghW6dIPC1LDadEqYB6C">
<div class="fit-finder_sign-in-button-container">
<button class="login-button button-small button-primary" type="submit" data-event-types="hover,click" data-element-id="KjdeO5OTdQWvCllyJDIS1VAGlT5jw40f"> SIGN IN </button>
<div class="fit-finder_sign-in-message register-here">Don't have an account <span class="fit-finder_register-link" data-event-types="hover,click" data-element-id="c4zuxnLgu19QGJKhCp23aBLLfjDGOsS2">click here</span> to register</div>
</div>
<div class="oxi_social_wrapper" style=""><iframe id="social_login_frame" title="Social Login Frame" src="https://social-login.oxiapps.com/widget?site=cs-gunner.myshopify.com&vt=928350&parenturl=https://gunner.com/"
style="width:100%;max-width:100%;padding-top:0px;margin-bottom:5px;border:0px;height:144px;" scrolling="no"></iframe></div>
</form>
POST /account
<form method="post" action="/account" id="register" accept-charset="UTF-8" data-login-with-shop-sign-up="true" novalidate="novalidate" data-event-types="form_submission" data-element-id="gbH4Y77v8uUEKKoonr2UjAeJM4vVhyvD"><input type="hidden"
name="form_type" value="create_customer"><input type="hidden" name="utf8" value="✓">
<input type="hidden" name="return_to" value="back">
<input placeholder="First Name" type="text" name="customer[first_name]" id="register-FirstName" autocomplete="given-name" data-event-types="input_focus,input_blur" data-element-id="61WVEZNnl7kLV2kkL5tUf439isjrQRvK">
<input placeholder="Last Name" type="text" name="customer[last_name]" id="register-LastName" autocomplete="family-name" data-event-types="input_focus,input_blur" data-element-id="61WVEZNnl7kLV2kkL5tUf439isjrQRvK">
<input placeholder="Email" type="email" name="customer[email]" id="register-email" class="" autocorrect="off" autocapitalize="off" autocomplete="email" aria-required="true" data-event-types="input_focus,input_blur"
data-element-id="61WVEZNnl7kLV2kkL5tUf439isjrQRvK">
<input placeholder="Password" type="password" name="customer[password]" id="register-password" class="" aria-required="true" data-event-types="input_focus,input_blur" data-element-id="aeoeVlcbfb8nWq7EDMIEGiIJcOVZuEyK">
<div class="fit-finder_register-button-container">
<button type="submit" class="button-primary button-small" data-event-types="hover,click" data-element-id="niBdIaAybMOXVqLgDbpJK5puinuMzJTq">REGISTER</button>
</div>
</form>
POST /account
<form method="post" action="/account" id="register" accept-charset="UTF-8" data-login-with-shop-sign-up="true" novalidate="novalidate" data-event-types="form_submission" data-element-id="gbH4Y77v8uUEKKoonr2UjAeJM4vVhyvD"><input type="hidden"
name="form_type" value="create_customer"><input type="hidden" name="utf8" value="✓">
<input type="hidden" name="return_to" value="back">
<input placeholder="First Name" type="text" name="customer[first_name]" id="register-FirstName" autocomplete="given-name" data-event-types="input_focus,input_blur" data-element-id="61WVEZNnl7kLV2kkL5tUf439isjrQRvK">
<input placeholder="Last Name" type="text" name="customer[last_name]" id="register-LastName" autocomplete="family-name" data-event-types="input_focus,input_blur" data-element-id="61WVEZNnl7kLV2kkL5tUf439isjrQRvK">
<input placeholder="Email" type="email" name="customer[email]" id="register-email" class="" autocorrect="off" autocapitalize="off" autocomplete="email" aria-required="true" data-event-types="input_focus,input_blur"
data-element-id="61WVEZNnl7kLV2kkL5tUf439isjrQRvK">
<input placeholder="Password" type="password" name="customer[password]" id="register-password" class="" aria-required="true" data-event-types="input_focus,input_blur" data-element-id="aeoeVlcbfb8nWq7EDMIEGiIJcOVZuEyK">
<div class="fit-finder_register-button-container">
<button type="submit" class="button-primary button-small" data-event-types="hover,click" data-element-id="niBdIaAybMOXVqLgDbpJK5puinuMzJTq">REGISTER</button>
</div>
</form>
<form aria-label="Write A Review Form">
<div class="write-review-wrapper write-form">
<div class="write-review yotpo-regular-box" id="write-review-tabpanel-testimonials" role="tabpanel">
<div class="yotpo-header">
<div>
<h2 class="y-label yotpo-header-title">WRITE A REVIEW</h2>
</div>
<div class="yotpo-mandatory-explain"> <span class="yotpo-mandatory-mark">*</span> Indicates a required field </div> <br> <span class="yotpo-mandatory-mark">* </span> <span class="y-label"
id="write-review-score-918e79f5-0d62-42a1-86d3-76042d77fe14">Score: <span class="form-input-error yotpo-hidden" id="yotpo_score_message_918e79f5-0d62-42a1-86d3-76042d77fe14"></span></span>
<div aria-describedby="yotpo_score_message_918e79f5-0d62-42a1-86d3-76042d77fe14" aria-labelledby="write-review-score-918e79f5-0d62-42a1-86d3-76042d77fe14" role="radiogroup" tabindex="-1"> <span class="stars-wrapper"> <span
class="yotpo-icon yotpo-icon-empty-star pull-left review-star" data-score="1" aria-label="score 1" role="radio" tabindex="0" aria-checked="false" aria-required="true"></span> <span
class="yotpo-icon yotpo-icon-empty-star pull-left review-star" data-score="2" aria-label="score 2" role="radio" tabindex="-1" aria-checked="false" aria-required="true"></span> <span
class="yotpo-icon yotpo-icon-empty-star pull-left review-star" data-score="3" aria-label="score 3" role="radio" tabindex="-1" aria-checked="false" aria-required="true"></span> <span
class="yotpo-icon yotpo-icon-empty-star pull-left review-star" data-score="4" aria-label="score 4" role="radio" tabindex="-1" aria-checked="false" aria-required="true"></span> <span
class="yotpo-icon yotpo-icon-empty-star pull-left review-star" data-score="5" aria-label="score 5" role="radio" tabindex="-1" aria-checked="false" aria-required="true"></span> </span> </div>
</div>
<div class="write-review-content">
<div class="form-group">
<div class="form-element"> <span class="yotpo-mandatory-mark">* </span> <label class="y-label" for="yotpo_input_review_title_918e79f5-0d62-42a1-86d3-76042d77fe14"> Title: <span class="form-input-error yotpo-hidden"
id="yotpo_input_review_title_error_918e79f5-0d62-42a1-86d3-76042d77fe14"></span> </label> <input id="yotpo_input_review_title_918e79f5-0d62-42a1-86d3-76042d77fe14" class="y-input" name="review_title" maxlength="150"
aria-required="true" placeholder="" aria-describedby="yotpo_input_review_title_error_918e79f5-0d62-42a1-86d3-76042d77fe14"> </div>
<div class="form-element"> <span class="yotpo-mandatory-mark">* </span> <label class="y-label" for="yotpo_input_review_content_918e79f5-0d62-42a1-86d3-76042d77fe14"> Review: <span class="form-input-error yotpo-hidden"
id="yotpo_input_review_content_error_918e79f5-0d62-42a1-86d3-76042d77fe14"></span> </label> <textarea id="yotpo_input_review_content_918e79f5-0d62-42a1-86d3-76042d77fe14" class="y-input yotpo-text-box" name="review_content"
aria-required="true" placeholder="" aria-describedby="yotpo_input_review_content_error_918e79f5-0d62-42a1-86d3-76042d77fe14"></textarea> </div>
</div>
</div>
<div class="yotpo-footer yotpo-animation-opacity visible" style="display: inherit;">
<div class="socialize-wrapper">
<div class="connected">You are connected as <span class="username"></span></div>
<div class="socialize"> <span class="y-label">Connect with:</span>
<div>
<div class="yotpo-default-button yotpo-icon-btn" data-network="twitter" aria-label="connect with twitter" role="link" tabindex="0"><span class="yotpo-icon yotpo-icon-twitter pull-left"></span></div>
<div class="yotpo-default-button yotpo-icon-btn" data-network="facebook" aria-label="connect with facebook" role="link" tabindex="0"><span class="yotpo-icon yotpo-icon-facebook pull-left"></span></div>
</div>
</div>
<div class="yotpo-or"> -OR- </div>
</div>
<div class="connect-wrapper visible " style="display: inherit;">
<div class="form-element name-input visible" style="display: inherit;"> <span class="yotpo-mandatory-mark">* </span> <label class="y-label" for="yotpo_input_review_username_918e79f5-0d62-42a1-86d3-76042d77fe14">Use your name: <span
class="form-input-error yotpo-hidden" id="yotpo_input_review_username_error_918e79f5-0d62-42a1-86d3-76042d77fe14"></span></label> <input id="yotpo_input_review_username_918e79f5-0d62-42a1-86d3-76042d77fe14" class="y-input"
autocomplete="nickname" name="display_name" maxlength="40" aria-required="true" placeholder="" aria-describedby="yotpo_input_review_username_error_918e79f5-0d62-42a1-86d3-76042d77fe14"> </div>
<div class="form-element email-input visible" style="display: inherit;"> <span class="yotpo-mandatory-mark">* </span> <label class="y-label" for="yotpo_input_review_email_918e79f5-0d62-42a1-86d3-76042d77fe14">Email: <span
class="form-input-error yotpo-hidden" id="yotpo_input_review_email_error_918e79f5-0d62-42a1-86d3-76042d77fe14"></span></label> <input id="yotpo_input_review_email_918e79f5-0d62-42a1-86d3-76042d77fe14" class="y-input"
autocomplete="email" name="email" aria-required="true" placeholder="" aria-describedby="yotpo_input_review_email_error_918e79f5-0d62-42a1-86d3-76042d77fe14"> </div>
<div class="yotpo-clr"></div>
</div>
</div>
<div class="error-box yotpo-hidden">
<div class="text-wrapper"> <span class="error-text empty yotpo-hidden">Review's title & body can't be empty</span>
<span class="error-text empty_question yotpo-hidden">Question's body can't be empty</span>
<span class="error-text score yotpo-hidden">Please enter a star rating for this review</span>
<span class="error-text display_name_empty yotpo-hidden">Name field cannot be empty</span>
<span class="error-text email yotpo-hidden">Invalid email</span>
<span class="error-text user-already-reviewed yotpo-hidden">Your review has already been submitted.</span>
<span class="error-text max_length yotpo-hidden">Max length was exceeded</span>
<span class="error-text mandatory_field yotpo-hidden">Please fill out all of the mandatory (*) fields</span>
<span class="error-text open_question_answer_length yotpo-hidden">One or more of your answers does not meet the required criteria</span>
</div>
<div class="yotpo-icon-btn-small transparent-color-btn"><span class="yotpo-icon yotpo-icon-cross" role="button" tabindex="0" aria-label="close error message"></span></div>
</div>
<div class="form-element submit-button"> <span class="form-input-error yotpo-hidden"></span> <input type="button" class="yotpo-default-button primary-color-btn yotpo-submit" aria-disabled="true" data-button-type="submit" value="Post"> </div>
<div class="yotpo-preloader-wrapper">
<div class="yotpo yotpo-pre-loader">
<span class="yotpo-empty-stars">
<span class="yotpo-icon yotpo-icon-empty-star"></span>
<span class="yotpo-icon yotpo-icon-empty-star"></span>
<span class="yotpo-icon yotpo-icon-empty-star"></span>
<span class="yotpo-icon yotpo-icon-empty-star"></span>
<span class="yotpo-icon yotpo-icon-empty-star"></span>
</span>
<span class="yotpo-full-stars">
<span class="yotpo-icon yotpo-icon-star"></span>
<span class="yotpo-icon yotpo-icon-star"></span>
<span class="yotpo-icon yotpo-icon-star"></span>
<span class="yotpo-icon yotpo-icon-star"></span>
<span class="yotpo-icon yotpo-icon-star"></span>
</span>
</div>
</div>
<div class="yotpo-clr"></div>
</div>
</div>
</form>
Text Content
0 TOTAL $0 CHECKOUT BUILD YOUR CUSTOM SETUP & SAVE. Buy 2 bumpers, get 1 FREE. Limited time only. SHOP G1™ Kennel Food & Water Bundles Accessories GUNNER Wear Bumper Experience Safety Save Stories 5 STAR CRASH TESTED Knowledge Training Tips Breed Profiles Hunting Stories Safety Videos Community #GunnerEffect23 Reviews Customer Gallery Our Story Meet Gunner Thank You, Gunner 1% Pledge MY ACCOUNT My Account Checkout Register Log In BUY 2, GET 1 FREE GIFT #MANSBESTBUMPER SHOP DOG BUMPERS ALWAYS IN SEASON MAN'S BEST FRIEND DESERVES #MANSBEST SHOP DOG PRODUCTS BUY 2, GET 1 FREE GIFT #MANSBESTBUMPER SHOP DOG BUMPERS ALWAYS IN SEASON MAN'S BEST FRIEND DESERVES #MANSBEST SHOP DOG PRODUCTS BUY 2, GET 1 FREE GIFT #MANSBESTBUMPER SHOP DOG BUMPERS * 1 * 2 Like some of the best stories, ours begins with a dog. "I’d always felt uneasy traveling with my dog Gunner in traditional plastic crates. He made me realize I wanted to produce a kennel with as much drive as he gave retrieving. I wanted to build the world’s best dog crate." – Addison Edmonds, Founder ▶️ Thank You, Gunner. SHOP GIFT GUIDES GIFTS UNDER $150 MAKE THEIR DAY. GIFT IDEAS. THE CONSERVATIONIST "MOST THOUGHTFUL GIFT GIVER" GIFT IDEAS. ALL-AMERICAN BUY AMERICAN MADE GIFT IDEAS. BOTTOMLAND FAN BETTER IN BOTTOMLAND STUFF GIFT IDEAS. BIG DOG GUY. "MY DOG NEVER DOES THIS" GIFT IDEAS. BIG DOG GAL. CO-PILOT & BEST FRIEND GIFT IDEAS. 1 / 6 BEST SELLERS GUNNER KENNEL 5 Colors Available SHOP NOW GUNNER BUMPER 3 Colors Available SHOP NOW GUNNER DOG BOWL 3 Colors Available SHOP NOW GUNNER FOOD CRATE 2 Sizes Available SHOP NOW #MANSBESTKENNEL SAFETY'S ALWAYS IN SEASON Shop Now. GUNNER FOOD CRATE OUR HIGHEST RATED PRODUCT Shop Now. BUY 2 GET 1 FREE #MANSBESTBUMPER Shop Now. $50 OFF KENNEL BUNDLES Shop Now. 1 / 4 JOIN THE PACK 5.0 5.0 star rating GUNNER DOG BOWL Buy Now 4.9 4.9 star rating GUNNER DOG BOWL - GUNMETAL Buy Now 4.9 4.9 star rating PERSONALIZED GUNNER DOG BOWL - GUNMETAL Buy Now 4.9 4.9 star rating GUNNER DOG BOWL - TAN Buy Now 4.9 4.9 star rating PERSONALIZED GUNNER DOG BOWL - TAN Buy Now 4.9 4.9 star rating PERSONALIZED GUNNER DOG BOWL - DU GREEN Buy Now OTHER TAGGED PRODUCTS * * * * * * * SHOW MORE SHOW LESS G gunnerkennels 10/05/23 Last call for entries: don't miss your chance to win a sold-out Anahuac Kennel setup and a NOMAD Grill with accessories. Want to throw your name in the hat? Text WINNER to 82241 to enter, or go to the link in our bio. Ends Friday, October 6. READ MORE... READ LESS Was this review helpful? 0 0 5.0 5.0 star rating GUNNER DOG BOWL Buy Now 4.9 4.9 star rating GUNNER DOG BOWL - GUNMETAL Buy Now 4.9 4.9 star rating PERSONALIZED GUNNER DOG BOWL - GUNMETAL Buy Now 4.9 4.9 star rating GUNNER DOG BOWL - TAN Buy Now 4.9 4.9 star rating PERSONALIZED GUNNER DOG BOWL - TAN Buy Now 4.9 4.9 star rating PERSONALIZED GUNNER DOG BOWL - DU GREEN Buy Now 4.9 4.9 star rating GUNNER DOG BOWL - DU GREEN Buy Now OTHER TAGGED PRODUCTS * * * * * * * * SHOW MORE SHOW LESS G gunnerkennels 10/05/23 Last call for entries: don't miss your chance to win a sold-out Anahuac Kennel setup and a NOMAD Grill with accessories. Want to throw your name in the hat? Text WINNER to 82241 to enter, or go to the link in our bio. Ends Friday, October 6. READ MORE... READ LESS Was this review helpful? 0 0 4.8 4.8 star rating TIE-DOWN STRAP KIT Buy Now 5.0 5.0 star rating PERSONALIZED KENNEL NAME PLATE Buy Now 4.8 4.8 star rating G1™ KENNEL Buy Now OTHER TAGGED PRODUCTS * * * * SHOW MORE SHOW LESS F fetching_feathers 07/27/23 That look you give your wife when she says “we need to talk” 😂 Rowdy boy, you’re always making me laugh! 📸 ruggedseasons #FetchingFeathers #kkd #keepkickingdirt #reFusetobeoutworked #birddog #gundog #workingdog #mansbestFriend #mansbestkennel #gunnerkennels #dogtrainer #cockerspaniel #cocker #fieldcocker #pointer #uplands #uplandhunting #trainmoretalkless #dontrunyourmouthrunyourdog #builtdiFFerent #shootersshoot #shootyourshot READ MORE... READ LESS Was this review helpful? 0 0 4.6 4.6 star rating GUNNER BUMPER Buy Now G gunnerkennels 07/25/23 Bumper release week 🤝 shark week Level up your training with the GUNNER Bumper, coming this Thursday 7/27. Link in bio to learn more. Photo @haydendobbins #MansBestFriend Deserves #MansBestBumper READ MORE... READ LESS Was this review helpful? 0 0 4.6 4.6 star rating GUNNER BUMPER Buy Now E elcapitanhuntclub 07/25/23 The time has come. Ol Nixon is aging himself out of action and new pup will join the ranks to carry on. . One still craves fetching and the never will demand it. Luckily the latest release from gunnerkennels covers both of them with these bumpers. . Scent chamber. Narrow body for holding. Rubber cord that won’t come untied to toss. Man’s best friend, rides in safety and now trains with the best. . . #gunnerkennels #Retriever #gundog #labrador #gunnerkennels #yellowlab #mansbestfriend #barnporn #duckhunting READ MORE... READ LESS Was this review helpful? 0 0 4.6 4.6 star rating GUNNER BUMPER Buy Now D 07/18/23 DEVELOPMENT Photo by Michael Martin READ MORE... READ LESS Was this review helpful? 1 0 4.6 4.6 star rating GUNNER BUMPER Buy Now D 07/18/23 DEVELOPMENT Photo by Matt Carey. READ MORE... READ LESS Was this review helpful? 1 0 G gunnerkennels 05/26/23 The GUNNER kennel is the original 5 Star Crash Test Certified crate by Center For Pet Safety, with certified GUNNER tie-down straps. Our kennels offer at least double the impact protection of a standard crate. The double-wall rotomolded design allows the exterior layer of the kennel to absorb the majority of an initial impact, with the interior layer adding additional protection for your dog. We take safety seriously– the GUNNER kennel was the only crate that passed the original CPS crash test in 2015. 85% of products FAILED the safety certification when originally crash tested. The G1™ Intermediate actually broke the vice machine during testing with 4,000 pounds of force. We don't really know how much our product can withstand, but it's a lot. Don’t just take our word for it– the receipts are there. Check out more about our safety stats and save stories at the link in our bio. READ MORE... READ LESS Was this review helpful? 0 0 G gunnerkennels 05/26/23 The GUNNER kennel is the original 5 Star Crash Test Certified crate by Center For Pet Safety, with certified GUNNER tie-down straps. Our kennels offer at least double the impact protection of a standard crate. The double-wall rotomolded design allows the exterior layer of the kennel to absorb the majority of an initial impact, with the interior layer adding additional protection for your dog. We take safety seriously– the GUNNER kennel was the only crate that passed the original CPS crash test in 2015. 85% of products FAILED the safety certification when originally crash tested. The G1™ Intermediate actually broke the vice machine during testing with 4,000 pounds of force. We don't really know how much our product can withstand, but it's a lot. Don’t just take our word for it– the receipts are there. Check out more about our safety stats and save stories at the link in our bio. READ MORE... READ LESS Was this review helpful? 0 0 G gunnerkennels 05/12/23 In the summer heat, your dog's well-being is of the upmost importance. We tested our G1 Kennel alongside a variety of other crates to see how they fare in warmer temperatures. In 100+ degree weather, the ceiling of a leading aluminum kennel heated up ~50 degrees more than a GUNNER. The primary reason the GUNNER kennel performed so much better is because of its double-walled structure. All kennels’ outer surfaces heated to temperatures over 166° and for our competitors that high heat pushed right through to the interior of the kennel and the water bucket. But for the GUNNER double-walled kennel, the heat in the outer wall has a difficult time pushing through the air gap between the two walls. This means that a much smaller amount of the sun’s heat ever makes it to the interior walls of the kennel. Want to learn more about the testing parameters and how you can keep your dog safe this summer? Head to the link in our bio. READ MORE... READ LESS Was this review helpful? 0 0 G gunnerkennels 05/06/23 "If our dog had been in a junk crate and not a GUNNER kennel, I’m pretty certain it would’ve turned into chards during this accident. If that had happened, well I don’t want to guess at the potential outcomes. I was traveling in Kansas with my wife, kids, and our dog Wyoming in our Mercedes Sprinter van one evening. A vehicle pulling a gooseneck trailer on the interstate lost its whole tire-axle-hub assembly. The entire thing jumped the concrete barrier into our lane; it hit us dead on. The impact broke the van’s steer axle and triggered the airbags, and we slammed into the concrete barrier and rode the median, which eventually pulled the vehicle onto the driver’s side. We cleared the shoulder and ended up in a ditch. Everybody in my family was okay, but the vehicle was totaled. The kennel might’ve saved my daughter from harm– and for sure saved my dog. During the accident, Wyoming’s kennel was sitting between a set of captain chairs on the passenger side. The kennel wasn’t tied down, but this time, it actually factored to my family’s benefit. When the vehicle overturned and laid on the driver’s side to ride the median, the kennel flew across the van to the left-hand side. It wedged itself between my daughter’s knees and the seat in front of her. She was sitting on the driver’s side, where the van turned over to ride the median, and there was a glass window, which broke in the middle of all this. The GUNNER did two things, I believe: 1) When the van turned over, I could see the momentum and gravity to cause her to slip out of her booster seat. The kennel stopped that from happening. 2) It protected my daughter’s face from the window that shattered in front of her, and the debris that came in after. Everyone else got chards of glass in their bodies– but not her, because the kennel took the full brunt of it. The kennel took the abuse, but my dog is ok. There’s no way any other crate door would’ve stayed closed. That would mean my dog had been bouncing around the inside of the van, becoming a trajectory to harm my family or a hazard to herself. I’m thankful to GUNNER." –Alan W., GUNNER Pack Member Read Alan's full story at the link in our bio. READ MORE... READ LESS Was this review helpful? 0 0 G gunnerkennels 04/12/23 “Your kennel helped save my dog's life, and then my dog helped save mine. It was a freak accident. I was driving through Nashville with my GSD, Bodhi, and came to a stop light where I needed to make an unprotected left turn. As soon as I turned down, another driver was speeding and we suddenly t-boned. I slammed on my brakes, knocked into the other driver, and wedged the other vehicle between my Tahoe and a telephone pole. I got out of the car as soon as I could to check on the other driver. I was freaking out in the heat of the situation, but Bodhi did not even cross my mind since I knew he was in the kennel and totally fine. We called 911 to come and they quickly showed up to help with the situation. I kept telling the paramedic that I needed to get my dog, but he kept telling me to sit and wait. Long story short, I was then crying and having a whole physical PTSD panic attack. Everyone kept asking me what I needed, and I could only think of Bodhi. Bodhi has been training to be a fully equipped Service Dog, but he’d never performed deep pressure therapy (DPT) in an emergency before. The lead paramedic went to the car to open the kennel, and instead of jumping on the paramedic, Bodhi immediately ran right up to me and put his body weight on me to help me shake it out and get through the panic. The crazy thing is that if he was injured or hurt during the accident, he probably wouldn’t have been able to perform his service. It is obviously a sucky situation, but it honestly felt like a miracle that I had him in a GUNNER. It’s what kept him alive so he could start his career as a service dog. It’s one of the best dog products I’ve ever seen on the market because it’s genuinely saving lives.” –Gabby W., GUNNER Pack Member Check out the full story at the link in our bio #gunnersaves READ MORE... READ LESS Was this review helpful? 1 0 G gunnerkennels 04/08/23 Your dog is not an egg. But this egg test represents the risk of traveling with them unrestrained on the road. When your vehicle is traveling at highway speeds, so is your dog – traveling in a GUNNER Kennel works the same way seatbelts and airbags do at helping slow down the dog before the stop. Think about the effectiveness of seatbelts and airbags. In much the same way, a GUNNER both helps slow down your dog before the stop, and also cushions them during it. Every size GUNNER Kennel has saved real dogs in real wrecks. They're tested and proven to save. Learn more about how you can protect your dog at the link in our bio. READ MORE... READ LESS Was this review helpful? 0 0 Slideshow Slide controls Loading... SLIDESHOW Slide controls PRODUCT G1™ Kennels Accessories Food Crate GUNNER Wear Open Box COMPANY 5 Star Crash Test Rated Customer Stories Direct To Customer GUNNER Match Campaign Careers Our Core Values Pledge 1% Company PROGRAMS Military, LE & First Responders Influencer & Affiliate Program Partner Program EXPERIENCE Our Story Thank You, Gunner Customer Gallery Kennel Testimonials Pack Blog Videos #GunnerEffect 12 Days of GUNNER SHIPPING & RETURNS Shipping Returns/Exchanges G1™ Kennel Warranty Food Crate Warranty SHOP BY DOG TYPE Waterfowl Dog Upland Dog Working K9 Family or Companion Dog Conformation or Sport Dog Adventure or Trail Dog Dog with Phobias CONTACT Contact Us Showroom Appointments FAQs 1x1 Video Consultation Financing 5207 Linbar Drive, Suite 704 | Nashville, TN 37211 | info@gunner.com. © Edmonds Outdoors, LLC. All rights reserved. Privacy Policy Terms Patents ✕ ✕ ✕ THE PACK OPINION ✕ ADDED. COMPLETE YOUR SETUP PERSONALIZED KENNEL NAME PLATE $30 - + Size Intermediate/Large Small/Medium Intermediate/Large Small/Medium Dog Name I've reviewed and approve the design shown in the preview ADD TO CART ✕ ADDED. COMPLETE YOUR SETUP FOOD CRATE NAME PLATE Regular price $30 Sale price $ Default Title Dog Name I've reviewed and approve the design shown in the preview ADD TO CART ✕ Sizing Guide … Sizing Guide KENNEL FIT FINDER VIEW SAVED START VEHICLE FIT FINDER VIEW SAVED START KENNEL DIMENSIONS VIEW Looking for your previous results? Sign in to view saved Fit recommendations small medium intermediate large SIDE-BY-SIDE COMPARISON EXTERIOR | INTERIOR INTERIOR: 21.75" (L - Floor) x 14.5" (W - Floor) x 15.5" (H) / 16.5" (W) at kennel's widest interior point EXTERIOR: 24.5" (L) x 18.625" (W) x 19" (H) / 20.5" (H) with carry handles EMPTY WEIGHT: 27 lb. EXTERIOR | INTERIOR INTERIOR: 25" (L - Floor) x 18" (W - Floor) x 19.75" (H) / 19" (W) at kennel's widest interior point EXTERIOR: 29.5" (L) x 20.5" (W) x 23.5" (H) / 25" (H) with carry handles EMPTY WEIGHT: 38 lb. EXTERIOR | INTERIOR INTERIOR: 30" (L - Floor) x 18" (W - Floor) x 25" (H) / 19" (W) at kennel's widest interior point EXTERIOR: 34" (L) x 23" (W) x 28.5" (H) / 30" (H) with carry handles EMPTY WEIGHT: 48 lb. EXTERIOR | INTERIOR INTERIOR: 33.25" (L - Floor) x 21" (W - Floor) x 29" (H) / 23" (W) at kennel's widest interior point EXTERIOR: 40.25" (L) x 28" (W) x 33.25" (H) / 34.5" (H) with carry handles EMPTY WEIGHT: 72 lb. Interior Exterior Empty Weight G1™ SMALL 21.75" (L - Floor) x 14.5" (W - Floor) x 15.5" (H) / 16.5" (W) at kennel's widest interior point 24.5" (L) x 18.625" (W) x 19" (H) / 20.5" (H) with carry handles 27 lb. G1™ MEDIUM 25" (L - Floor) x 18" (W - Floor) x 19.75" (H) / 19" (W) at kennel's widest interior point 29.5" (L) x 20.5" (W) x 23.5" (H) / 25" (H) with carry handles 38 lb. G1™ INTERMEDIATE 30" (L - Floor) x 18" (W - Floor) x 25" (H) / 19" (W) at kennel's widest interior point 34" (L) x 23" (W) x 28.5" (H) / 30" (H) with carry handles 48 lb. G1™ LARGE 33.25" (L - Floor) x 21" (W - Floor) x 29" (H) / 23" (W) at kennel's widest interior point 40.25" (L) x 28" (W) x 33.25" (H) / 34.5" (H) with carry handles 72 lb. Sign in to save your recommendation SIGN IN Don't have an account click here to register Return to results REGISTER Return to results REGISTER Return to results VIEW NEW + Your result has been saved! You need to be logged in to your account to see your saved recommendations Back to results page ADD ANOTHER Your returned results have been sent to our Customer Experience team. We'll be in touch as soon as possible to talk through your fit recommendation. Return to results The Kennel Fit Finder is intended for fully grown dogs, but we'd still love to help you make your best decision. Please choose whether we can contact you by email or SMS, and support will contact you to help find your fit. Email SMS SUBMIT Your request has been sent to our Customer Experience team. We'll be in touch as soon as possible to talk through your fit recommendation. You will need a soft measuring tape, your dog, and 2 minutes to find your perfect fit. Tip: If you don't have a soft measuring tape, use a piece of string or a leash then compare. NEXT My dog is select Fully Grown Still a Puppy NEXT Measure from base of tail to end of nose, keeping the tape along the spine. Still need help measuring? Watch our video here. My dog is inches in length NEXT My dog is inches in height from the base of paw to top of shoulder Still need help measuring? Watch our video here. NEXT My dog weighs pounds NEXT My dog is a select male female named and is select Below Average Average Above Average size for the breed. My name is and my email is FIND MY FIT Heads up! The Intermediate (Bottomland / Tan) may take up to 14 days to ship. G1™ SMALL Quantity must be 1 or more Size Small Medium Intermediate Large Color Gunmetal Tan DU Green Mossy Oak Bottomland Tan Mossy Oak Bottomland Gunmetal Color:Gunmetal Small / Gunmetal Small / Tan Small / DU Green Small / Mossy Oak Bottomland Tan Small / Mossy Oak Bottomland Gunmetal Medium / Gunmetal Medium / Tan Medium / DU Green Medium / Mossy Oak Bottomland Tan Medium / Mossy Oak Bottomland Gunmetal Intermediate / Gunmetal Intermediate / Tan Intermediate / DU Green Intermediate / Mossy Oak Bottomland Tan Intermediate / Mossy Oak Bottomland Gunmetal Large / Gunmetal Large / Tan Large / DU Green Large / Mossy Oak Bottomland Tan Large / Mossy Oak Bottomland Gunmetal Heads up! The Intermediate (Bottomland / Tan) may take up to 14 days to ship. G1™ MEDIUM Quantity must be 1 or more Size Small Medium Intermediate Large Color Gunmetal Tan DU Green Mossy Oak Bottomland Tan Mossy Oak Bottomland Gunmetal Color:Gunmetal Small / Gunmetal Small / Tan Small / DU Green Small / Mossy Oak Bottomland Tan Small / Mossy Oak Bottomland Gunmetal Medium / Gunmetal Medium / Tan Medium / DU Green Medium / Mossy Oak Bottomland Tan Medium / Mossy Oak Bottomland Gunmetal Intermediate / Gunmetal Intermediate / Tan Intermediate / DU Green Intermediate / Mossy Oak Bottomland Tan Intermediate / Mossy Oak Bottomland Gunmetal Large / Gunmetal Large / Tan Large / DU Green Large / Mossy Oak Bottomland Tan Large / Mossy Oak Bottomland Gunmetal Heads up! The Intermediate (Bottomland / Tan) may take up to 14 days to ship. G1™ INTERMEDIATE Quantity must be 1 or more Size Small Medium Intermediate Large Color Gunmetal Tan DU Green Mossy Oak Bottomland Tan Mossy Oak Bottomland Gunmetal Color:Gunmetal Small / Gunmetal Small / Tan Small / DU Green Small / Mossy Oak Bottomland Tan Small / Mossy Oak Bottomland Gunmetal Medium / Gunmetal Medium / Tan Medium / DU Green Medium / Mossy Oak Bottomland Tan Medium / Mossy Oak Bottomland Gunmetal Intermediate / Gunmetal Intermediate / Tan Intermediate / DU Green Intermediate / Mossy Oak Bottomland Tan Intermediate / Mossy Oak Bottomland Gunmetal Large / Gunmetal Large / Tan Large / DU Green Large / Mossy Oak Bottomland Tan Large / Mossy Oak Bottomland Gunmetal Heads up! The Intermediate (Bottomland / Tan) may take up to 14 days to ship. G1™ LARGE Quantity must be 1 or more Size Small Medium Intermediate Large Color Gunmetal Tan DU Green Mossy Oak Bottomland Tan Mossy Oak Bottomland Gunmetal Color:Gunmetal Small / Gunmetal Small / Tan Small / DU Green Small / Mossy Oak Bottomland Tan Small / Mossy Oak Bottomland Gunmetal Medium / Gunmetal Medium / Tan Medium / DU Green Medium / Mossy Oak Bottomland Tan Medium / Mossy Oak Bottomland Gunmetal Intermediate / Gunmetal Intermediate / Tan Intermediate / DU Green Intermediate / Mossy Oak Bottomland Tan Intermediate / Mossy Oak Bottomland Gunmetal Large / Gunmetal Large / Tan Large / DU Green Large / Mossy Oak Bottomland Tan Large / Mossy Oak Bottomland Gunmetal TRAVEL HOME Recommended Size for Safe Travel small Recommended Size for Safe Travel Medium safe travel not recommended Recommended Size for Safe Travel Intermediate safe travel not recommended Recommended Size for Safe Travel Large safe travel not recommended Move the slider up for a roomier fit, if that's your preference. Move the slider up or down to change the fit based on your primary use and preference Move the slider up for a roomier fit, if that's your preference. Move the slider up or down to change the fit based on your primary use and preference Move the slider up for a roomier fit, if that's your preference. Move the slider up or down to change the fit based on your primary use and preference Move the slider up for a roomier fit, if that's your preference. Move the slider up or down to change the fit based on your primary use and preference LEARN ABOUT OUR SIZING RECOMMENDATION WHY THIS SIZE? GUNNER is the original 5 Star Crash Tested kennel, per the Center For Pet Safety. We created this crate specifically for transportation and that factors into our fit recommendations. In the best interest of your dog, we advise a snug fit for safe travel. If choosing the GUNNER crate for home kenneling, simply slide the toggle above to the right to see the best size. SAFE TRAVEL GUIDELINES When primarily used for travel, we always recommend a tight fit in the GUNNER kennel. This protects the dog in the case of an accident: the less wasted interior space the better. Think about it like this – if you’re hitting the brakes too hard, or get into a wreck, you’d rather that your dog have less room to move around inside the kennel. Many customers have also found that their dog feels more secure when traveling in a tighter area too. For further explanation on this point, let Seth Bynum, a Veterinarian, break it down for you. For further explanation on this point, let Seth Bynum, a Veterinarian, break it down for you. WHAT DO WE MEAN BY SNUG FIT? Check out the below visual. When the door is closed, the proper fit for safe travel could mean that your dog: • Is curled • Paws are tucked • Rump/tail is resting against the back Here’s another look for how your dog might look in a crate sized for safe travel, when the door is open: SHOW MORE IMAGES - + ADD TO CART SAVE RECOMMENDATION ADD ANOTHER EMAIL RESULTS TO SUPPORT DOWNLOAD SIZE CHART It looks like we can't find a fit for your dog based on the measurements you entered. Please check they're correct or contact support for help. EMAIL MY RESULTS ADDED. COMPLETE YOUR SETUP PERSONALIZED KENNEL NAME PLATE SMALL/MEDIUM Regular price $30 Sale price $ - + ADD TO CART TIE-DOWN STRAP KIT BLAZE ORANGE / TRADITIONAL Regular price $90 Sale price $ - + ADD TO CART ORTHOPEDIC DOG BED SMALL / GRAY Regular price $100 Sale price $ - + ADD TO CART PERSONALIZED KENNEL NAME PLATE SMALL/MEDIUM Regular price $30 Sale price $ - + ADD TO CART TIE-DOWN STRAP KIT BLAZE ORANGE / TRADITIONAL Regular price $90 Sale price $ - + ADD TO CART PERFORMANCE PAD MEDIUM / BLACK Regular price $90 Sale price $ - + ADD TO CART PERSONALIZED KENNEL NAME PLATE INTERMEDIATE/LARGE Regular price $30 Sale price $ - + ADD TO CART TIE-DOWN STRAP KIT BLAZE ORANGE / TRADITIONAL Regular price $90 Sale price $ - + ADD TO CART PERFORMANCE PAD INTERMEDIATE / BLACK Regular price $100 Sale price $ - + ADD TO CART PERSONALIZED KENNEL NAME PLATE INTERMEDIATE/LARGE Regular price $30 Sale price $ - + ADD TO CART TIE-DOWN STRAP KIT BLAZE ORANGE / TRADITIONAL Regular price $90 Sale price $ - + ADD TO CART PERFORMANCE PAD LARGE / BLACK Regular price $130 Sale price $ - + ADD TO CART Where do you plan to place your G1™ Kennel? The cabin/passenger compartment Cargo/trunk Truck bed Other NEXT Locate the door or opening through which you plan to insert your G1™ kennel. The following will ensure that you can easily remove your kennel Measure the interior width of this opening, from its narrowest point to its narrowest point. Place the corresponding dimension here: Inches NEXT Measure the interior height of this door opening, from the bottom of the seat to the top of the interior frame. Place the corresponding dimension here: Measure the interior height of this door opening, from the bottom of the floorboard of the trunk opening, to the top of the interior frame. Place the corresponding dimension here: Measure the interior height of the opening where you plan to insert the kennel, from the bottom of the floor to the top of the interior frame. Place the corresponding dimension here: Inches NEXT Please locate where you plan to place your G1™ in the compartment of the vehicle. Decide which direction your kennel will face. Then, measure the width of this space, from narrowest point to narrowest point. Place the corresponding dimension here: Measure the interior width of your cargo space, from narrowest point to narrowest point, taking into account the wheel wells. Place the corresponding dimension here: Measure the width of your bed, from narrowest point to narrowest point, taking into account the wheel wells. Place the corresponding dimension here: Measure the interior width of your space, from narrowest point to narrowest point. Place the corresponding dimension here: Inches NEXT Measure the height of this interior space, from the resting floor to the top of the interior ceiling. Take into account any sloping points. Place the corresponding dimension here: Measure the height of the cargo space, from the floorboard to the top of the interior ceiling. Take into account any sloping points. Place the corresponding dimension here: If you have a topper, measure the height of the space, from the floor to the top of the interior ceiling. Place the corresponding dimension here: *if you do not have a topper, enter the number "50". Measure the height of the space, from the floor to the top of the interior ceiling. Take into account any sloping points. Place the corresponding dimension here: Inches NEXT Measure the depth of this interior space, from narrowest point to narrowest point. Place the corresponding dimension here: Measure the depth of the cargo space, from the tailgate to the back of the seat. Place the corresponding dimension here: Measure the depth of the cargo space, from the tailgate to the back of the seat. Place the corresponding dimension here: Measure the depth of the space, from narrowest point to narrowest point. Inches NEXT My vehicle is a My name is and my email is FIND MY FIT Heads up! The Intermediate (Bottomland / Tan) may take up to 14 days to ship. G1™ SMALL FITS (2) G1™ SMALL Quantity must be 1 or more Size Small Medium Intermediate Large Color Gunmetal Tan DU Green Mossy Oak Bottomland Tan Mossy Oak Bottomland Gunmetal Color:Gunmetal Small / Gunmetal Small / Tan Small / DU Green Small / Mossy Oak Bottomland Tan Small / Mossy Oak Bottomland Gunmetal Medium / Gunmetal Medium / Tan Medium / DU Green Medium / Mossy Oak Bottomland Tan Medium / Mossy Oak Bottomland Gunmetal Intermediate / Gunmetal Intermediate / Tan Intermediate / DU Green Intermediate / Mossy Oak Bottomland Tan Intermediate / Mossy Oak Bottomland Gunmetal Large / Gunmetal Large / Tan Large / DU Green Large / Mossy Oak Bottomland Tan Large / Mossy Oak Bottomland Gunmetal - + ADD TO CART Heads up! The Intermediate (Bottomland / Tan) may take up to 14 days to ship. G1™ MEDIUM FITS (2) G1™ MEDIUM Quantity must be 1 or more Size Small Medium Intermediate Large Color Gunmetal Tan DU Green Mossy Oak Bottomland Tan Mossy Oak Bottomland Gunmetal Color:Gunmetal Small / Gunmetal Small / Tan Small / DU Green Small / Mossy Oak Bottomland Tan Small / Mossy Oak Bottomland Gunmetal Medium / Gunmetal Medium / Tan Medium / DU Green Medium / Mossy Oak Bottomland Tan Medium / Mossy Oak Bottomland Gunmetal Intermediate / Gunmetal Intermediate / Tan Intermediate / DU Green Intermediate / Mossy Oak Bottomland Tan Intermediate / Mossy Oak Bottomland Gunmetal Large / Gunmetal Large / Tan Large / DU Green Large / Mossy Oak Bottomland Tan Large / Mossy Oak Bottomland Gunmetal - + ADD TO CART Heads up! The Intermediate (Bottomland / Tan) may take up to 14 days to ship. G1™ INTERMEDIATE FITS (2) G1™ INTERMEDIATE Quantity must be 1 or more Size Small Medium Intermediate Large Color Gunmetal Tan DU Green Mossy Oak Bottomland Tan Mossy Oak Bottomland Gunmetal Color:Gunmetal Small / Gunmetal Small / Tan Small / DU Green Small / Mossy Oak Bottomland Tan Small / Mossy Oak Bottomland Gunmetal Medium / Gunmetal Medium / Tan Medium / DU Green Medium / Mossy Oak Bottomland Tan Medium / Mossy Oak Bottomland Gunmetal Intermediate / Gunmetal Intermediate / Tan Intermediate / DU Green Intermediate / Mossy Oak Bottomland Tan Intermediate / Mossy Oak Bottomland Gunmetal Large / Gunmetal Large / Tan Large / DU Green Large / Mossy Oak Bottomland Tan Large / Mossy Oak Bottomland Gunmetal - + ADD TO CART Heads up! The Intermediate (Bottomland / Tan) may take up to 14 days to ship. G1™ LARGE FITS (2) G1™ LARGE Quantity must be 1 or more Size Small Medium Intermediate Large Color Gunmetal Tan DU Green Mossy Oak Bottomland Tan Mossy Oak Bottomland Gunmetal Color:Gunmetal Small / Gunmetal Small / Tan Small / DU Green Small / Mossy Oak Bottomland Tan Small / Mossy Oak Bottomland Gunmetal Medium / Gunmetal Medium / Tan Medium / DU Green Medium / Mossy Oak Bottomland Tan Medium / Mossy Oak Bottomland Gunmetal Intermediate / Gunmetal Intermediate / Tan Intermediate / DU Green Intermediate / Mossy Oak Bottomland Tan Intermediate / Mossy Oak Bottomland Gunmetal Large / Gunmetal Large / Tan Large / DU Green Large / Mossy Oak Bottomland Tan Large / Mossy Oak Bottomland Gunmetal - + ADD TO CART Please note that, in some returned results, you may have to remove carry handles before inserting the G1™ (or in the rare case, asssemble the kennel inside the vehicle). SAVE RECOMMENDATION ADD ANOTHER EMAIL RESULTS TO SUPPORT I'm sorry, but it doesn't look like we have any Kennels that fit your specification based on the measurements you entered. Please check they're correct or contact support for help. ADDED. COMPLETE YOUR BUNDLE Receive a free Personalized Kennel Name Plate when adding a Name Plate and a Tie-Down Strap Kit to your cart. PERSONALIZED KENNEL NAME PLATE SMALL/MEDIUM Regular price $30 Sale price $ Dog Name I've reviewed and approve the design shown in the preview - + ADD TO CART TIE-DOWN STRAP KIT BLAZE ORANGE / TRADITIONAL Regular price $90 Sale price $ - + ADD TO CART TIE-DOWN STRAP KIT BLACK / TRADITIONAL Regular price $90 Sale price $ - + ADD TO CART PERSONALIZED KENNEL NAME PLATE INTERMEDIATE/LARGE Regular price $30 Sale price $ Dog Name I've reviewed and approve the design shown in the preview - + ADD TO CART TIE-DOWN STRAP KIT BLAZE ORANGE / TRADITIONAL Regular price $90 Sale price $ - + ADD TO CART TIE-DOWN STRAP KIT BLACK / TRADITIONAL Regular price $90 Sale price $ - + ADD TO CART PERSONALIZED KENNEL NAME PLATE INTERMEDIATE/LARGE Regular price $30 Sale price $ Dog Name I've reviewed and approve the design shown in the preview - + ADD TO CART TIE-DOWN STRAP KIT BLAZE ORANGE / TRADITIONAL Regular price $90 Sale price $ - + ADD TO CART TIE-DOWN STRAP KIT BLACK / TRADITIONAL Regular price $90 Sale price $ - + ADD TO CART ★ Reviews Popup content starts close Popup THESE ARE REAL REVIEWS FROM REAL SHOPPERS 4.8 star rating 7387 Reviews * Site Reviews * Product Reviews WRITE A REVIEW * Indicates a required field * Score: * Title: * Review: You are connected as Connect with: -OR- * Use your name: * Email: Review's title & body can't be empty Question's body can't be empty Please enter a star rating for this review Name field cannot be empty Invalid email Your review has already been submitted. Max length was exceeded Please fill out all of the mandatory (*) fields One or more of your answers does not meet the required criteria Thank you for posting a review! We value your input. Share your review so everyone else can enjoy it too. share share share Thank you for posting a review! Your review was sent successfully and is now waiting for our staff to publish it. Verified Reviewer 0.0 star rating 12/20/23 Review by Anonymous User On share ' Share Review by Anonymous User facebook facebook Share Review by Anonymous User twitter twitter Share Review by Anonymous User LinkedIn linkedin Share Review by Anonymous User 12/20/23 Was this review helpful? 0 0 K Kayla M. Verified Buyer 5.0 star rating 11/13/23 Love it! Review by Kayla M. on 13 Nov 2023 review stating Love it! Love the look and the build! The large was a great fit for my 170lb Siberian husky. On G1™ KENNEL share ' Share Review by Kayla M. on 13 Nov 2023 facebook facebook Share Review by Kayla M. on 13 Nov 2023 twitter twitter Share Review by Kayla M. on 13 Nov 2023 LinkedIn linkedin Share Review by Kayla M. on 13 Nov 2023 11/13/23 Was this review helpful? 0 0 Slideshow Slide controls Loading... C Caitlin M. Verified Buyer 5.0 star rating 11/12/23 Looks great. Review by Caitlin M. on 12 Nov 2023 review stating Looks great. Looks great. On PERSONALIZED KENNEL NAME PLATE share ' Share Review by Caitlin M. on 12 Nov 2023 facebook facebook Share Review by Caitlin M. on 12 Nov 2023 twitter twitter Share Review by Caitlin M. on 12 Nov 2023 LinkedIn linkedin Share Review by Caitlin M. on 12 Nov 2023 11/12/23 Was this review helpful? 0 0 Slideshow Slide controls Loading... C Caitlin M. Verified Buyer 5.0 star rating 11/12/23 Very secure and user friendly. Review by Caitlin M. on 12 Nov 2023 review stating Very secure and user friendly. Very secure and user friendly. On TIE-DOWN STRAP KIT share ' Share Review by Caitlin M. on 12 Nov 2023 facebook facebook Share Review by Caitlin M. on 12 Nov 2023 twitter twitter Share Review by Caitlin M. on 12 Nov 2023 LinkedIn linkedin Share Review by Caitlin M. on 12 Nov 2023 11/12/23 Was this review helpful? 0 0 Slideshow Slide controls Loading... C Caitlin M. Verified Buyer 5.0 star rating 11/12/23 Great quality Review by Caitlin M. on 12 Nov 2023 review stating Great quality I got two small kennels for my two dachshunds, one is 17lbs and one is 8lbs. They fit them great! I think I’ll purchase a bolster bed to put on top of the gunner orthopedic bed, they’re rotten and are used to something to snuggle down into. Neither are kenneled in the home or for travel until now so they didn’t love not riding with their ears in t...Read MoreRead more about review stating Great quality he breeze, but all things considered there was less complaining than I thought there would be and I felt much better having them safe. Some frozen kongs for a few rides should convince them that their new kennels are the place to be. They seem extremely secure when anchored to the seats. For reference, here is a picture of two kennels in the second row seats of a 2023 highlander. Read LessRead less about review stating Great quality On G1™ KENNEL share ' Share Review by Caitlin M. on 12 Nov 2023 facebook facebook Share Review by Caitlin M. on 12 Nov 2023 twitter twitter Share Review by Caitlin M. on 12 Nov 2023 LinkedIn linkedin Share Review by Caitlin M. on 12 Nov 2023 11/12/23 Was this review helpful? 0 0 Slideshow Slide controls Loading... L Luke B. Verified Buyer 5.0 star rating 11/11/23 Great bumpers Review by Luke B. on 11 Nov 2023 review stating Great bumpers You can definitely launch them. So far, so good! Have only had the cap pop off 1 time and it was when I hit blacktop with with. Great floats and like the ability to shove some feathers inside. On GUNNER BUMPER share ' Share Review by Luke B. on 11 Nov 2023 facebook facebook Share Review by Luke B. on 11 Nov 2023 twitter twitter Share Review by Luke B. on 11 Nov 2023 LinkedIn linkedin Share Review by Luke B. on 11 Nov 2023 11/11/23 Was this review helpful? 0 0 Slideshow Slide controls Loading... 1 2 3 4 5 6 7 8 9 Popup content ends Earn Rewards