Master Template:
Beacon Integration
/*
Axon Analytic - Shpoify Pixel SDK
---------
*/
// Initiatlize Axon async queue
window._axq =
window._axq ||
function () {
(_axq.q = _axq.q || []).push(arguments);
};
// Initizlie Axon data layer
window.axonData = {};
// Initialize Edgetag async queue
window.edgetag =
window.edgetag ||
function () {
(edgetag.stubs = edgetag.stubs || []).push(arguments);
};
// Trigger consent check callback
const getConsent = async () => {
const checkConsent = async () => {
const storeRaw = await browser.localStorage.getItem("_workerStoreMultiple");
try {
const storageData = JSON.parse(storeRaw || "{}");
const edgeUrl = "https://" + $AXON.core._build.edgeUrl;
const consent = storageData?.[edgeUrl]?.edgeTag?.consent;
if (consent) {
window.edgetag("consent", consent, { localSave: true });
}
} catch {}
};
await checkConsent();
setInterval(async () => {
await checkConsent();
}, 1000);
};
getConsent();
// Load AXON core library (for client)
!(function () {
// [1] Load Axon Beacone
const axonBeaconURL = "https://insights.neurograph.io/beacon/genteal-apparel/uncommonlogic.beacon.js";
const elementAxonBeacon = document.createElement("script");
elementAxonBeacon.src = axonBeaconURL;
const scriptAxonBeacon = document.getElementsByTagName("script")[0];
if (scriptAxonBeacon && scriptAxonBeacon.parentNode) {
scriptAxonBeacon.parentNode.insertBefore(elementAxonBeacon, scriptAxonBeacon);
}
// Trigger consent lookup
//getConsent();
// Edgetag Init
const start = (sessionData) => {
// Decode session
let session;
if(sessionData) {
session = JSON.parse(decodeURIComponent(sessionData));
}
// Set session properties
window.axonData.visitor = {
userId: session ? session.user_id : null,
sessionId: session ? session.session_id : null,
connection: session ? session.connection: null
};
};
// Check cookies for visitor ID and trigger
browser.cookie
.get("_axon_")
.then((sessionData) => start(sessionData))
.catch(() => start());
// Edgetag - set data on window ref
if (!window.edgetagData) {
window.edgetagData = {};
}
window.edgetagData.pageUrl = init.context.document.location.href;
})();
/*
* Helper / Support Functions
*/
const getCustomerId = () => {
try {
let curr = window.ShopifyAnalytics.meta.page.customerId;
if (curr !== undefined && curr !== null && curr !== "") {
return curr;
}
} catch(e) { }
try {
let curr = window.meta.page.customerId;
if (curr !== undefined && curr !== null && curr !== "") {
return curr;
}
} catch (e) { }
try {
let curr = _st.cid;
if (curr !== undefined && curr !== null && curr !== "") {
return curr;
}
} catch (e) { }
try {
let curr = ShopifyAnalytics.lib.user().traits().uniqToken;
if (curr !== undefined && curr !== null && curr !== "") {
return curr;
}
} catch (e) { }
return null;
}
// Prepare User
const prepareUser = (data) => {
const user = {};
if (data.email) {
user.email = data.email;
}
const address = data.shippingAddress;
if (address) {
if (address.city) {
user.city = address.city;
}
if (address.countryCode) {
user.country = address.countryCode;
}
if (address.provinceCode) {
user.state = address.provinceCode;
}
if (address.firstName) {
user.firstName = address.firstName;
}
if (address.lastName) {
user.lastName = address.lastName;
}
if (address.phone) {
user.phone = address.phone;
}
}
if (data.phone) {
user.phone = data.phone;
}
if (data.firstName) {
user.firstName = data.firstName;
}
if (data.lastName) {
user.lastName = data.lastName;
}
return user;
};
// Send User Data
const sendUserData = (userData) => {
if (!userData || !Object.keys(userData).length) {
return;
}
// Send Edgetag
edgetag("data", userData);
// Trigger Axon
_axq("customer:update", {
data: userData
});
// Format identity
let userTraits = {};
// Determine if we need to identify
const customerId = getCustomerId();
if(customerId) {
userTraits.shopify_customer_id = customerId;
}
// Name
if(userData.firstName && userData.lastName) {
userTraits.full_name = userData.firstName + " " + userData.lastName;
}
// Personal Email
if(userData.email) {
userTraits.personal_email = userData.email;
}
// Personal Phone
if(userData.phone) {
userTraits.mobile = userData.phone;
}
// Send data
if(Object.keys(userTraits).length > 0) {
_axq("customer:identify", {
traits: userTraits
});
}
};
// Format URL
const formatUrl = (url) => {
if (!url) {
return "";
}
if (url.startsWith("http://") || url.startsWith("https://")) {
return url;
}
if (url.startsWith("//")) {
return window.location.protocol + url;
}
return "https://" + url;
};
// Prepare Image
const prepareImage = (imageUrl) => {
if (!imageUrl) {
return "";
}
return imageUrl.replace(/_d+xd+.(jpg|jpeg|png|webp)/g, ".$1");
};
// Get Checkout Payload
const getPayload = (checkout, origin, fullPayload) => {
let currency = checkout.totalPrice.currencyCode;
let value = checkout.totalPrice.amount;
const lineItems = checkout.lineItems;
let total = 0;
// Determine small payload
if(fullPayload) {
const contents = lineItems.map((item) => {
total += item.variant.price.amount * item.quantity;
const title = item.variant.product.title + (item.variant.title && !false ? " - " + item.variant.title : "");
return {
id: item.variant.product.id,
variantId: item.variant.id,
sku: item.variant.sku,
quantity: item.quantity,
item_price: item.variant.price.amount,
title,
brand: item.variant.product.vendor || "",
category: item.variant.product.type || "",
image: prepareImage(formatUrl(item.variant.image?.src)),
url: origin + item.variant.product.url,
type: "product",
};
});
if (lineItems.length && currency !== lineItems[0].variant.price.currencyCode) {
currency = lineItems[0].variant.price.currencyCode;
value = total;
}
return { currency, value, contents };
} else {
const contents = lineItems.map((item) => {
total += item.variant.price.amount * item.quantity;
return {
id: item.variant.product.id,
variantId: item.variant.id,
sku: item.variant.sku,
quantity: item.quantity,
item_price: item.variant.price.amount,
brand: item.variant.product.vendor || "",
category: item.variant.product.type || "",
type: "product",
};
});
if (lineItems.length && currency !== lineItems[0].variant.price.currencyCode) {
currency = lineItems[0].variant.price.currencyCode;
value = total;
}
return { currency, value, contents };
}
};
// Get Title
const getTitle = (item) => {
if (!false) {
return item.product.title;
}
return item.product.title.replace(" - " + item.title, "");
};
/*
* Shopify Default Analytics Events
*/
// Event: Add to Cart
analytics.subscribe("product_added_to_cart", async (event) => {
const cost = event.data.cartLine.cost.totalAmount;
const item = event.data.cartLine.merchandise;
const title = getTitle(item);
const cookie = ((await browser.localStorage.getItem("cartToken")) || "").replace(/"/g, "");
let checkoutUrl = "";
if (cookie) {
checkoutUrl = event.context.document.location.origin + "/checkouts/cn/" + cookie;
}
if (!((item?.product?.id || item?.id) && item?.price?.amount && cost?.amount)) {
return;
}
// Trigger Edgetag
edgetag("tag", "AddToCart", {
currency: cost.currencyCode,
value: event.data.cartLine.quantity < 0 ? item.price.amount : cost.amount,
contents: [
{
id: item.product.id,
variantId: item.id,
sku: item.sku,
quantity: event.data.cartLine.quantity < 0 ? 1 : event.data.cartLine.quantity,
item_price: item.price.amount,
title,
image: prepareImage(formatUrl(item.image?.src)),
brand: item.product.vendor || "",
category: item.product.type || "",
url: event.context.document.location.origin + item.product.url,
type: "product",
},
],
checkoutUrl
});
// Trigger Axon
_axq("analytics:send", {
namespace: "Add to Cart",
data: {
currency: cost.currencyCode,
value: event.data.cartLine.quantity < 0 ? item.price.amount : cost.amount,
contents: [
{
id: item.product.id,
variantId: item.id,
sku: item.sku,
quantity: event.data.cartLine.quantity < 0 ? 1 : event.data.cartLine.quantity,
item_price: item.price.amount,
brand: item.product.vendor || "",
category: item.product.type || "",
type: "product",
},
],
...(window.axonData.visitor && window.axonData.visitor)
}
});
});
// Event: Checkout Started
analytics.subscribe("checkout_started", (event) => {
const checkout = event.data.checkout;
const userData = prepareUser(checkout);
sendUserData(userData);
// Trigger Edgetag
edgetag("tag", "InitiateCheckout", {
...getPayload(checkout, event.context.document.location.origin, true),
checkoutUrl: event.context.document.location.href
});
// Trigger Axon
_axq("analytics:send", {
namespace: "Initiate Checkout",
data: {
...getPayload(checkout, event.context.document.location.origin),
checkoutUrl: event.context.document.location.href,
...(window.axonData.visitor && window.axonData.visitor)
}
});
});
// Event: Payment Info Submitted
analytics.subscribe("payment_info_submitted", (event) => {
const checkout = event.data.checkout;
const userData = prepareUser(checkout);
sendUserData(userData);
// Trigger Edgetag
edgetag("tag", "AddPaymentInfo", {
currency: checkout.totalPrice.currencyCode,
value: checkout.totalPrice.amount
});
_axq("analytics:send", {
namespace: "Added Payment Info",
data: {
currency: checkout.totalPrice.currencyCode,
value: checkout.totalPrice.amount,
...(window.axonData.visitor && window.axonData.visitor)
}
});
});
// Event: Checkout Started
analytics.subscribe("checkout_completed", (event) => {
const checkout = event.data.checkout;
const userData = prepareUser(checkout);
sendUserData(userData);
const orderId = checkout.order.id.toString().replace("gid://shopify/OrderIdentity/", "");
// Trigger Edgetag
edgetag("tag", "Purchase", {
...getPayload(checkout, event.context.document.location.origin, true),
orderId,
eventId: orderId
});
// Trigger Axon
_axq("analytics:send", {
namespace: "Purchase",
data: {
orderId,
eventId: orderId,
...(window.axonData.visitor && window.axonData.visitor)
}
});
});
// Event: Search Submitted
analytics.subscribe("search_submitted", (event) => {
// Trigger Edgetag
edgetag("tag", "Search", {
search: event.data.searchResult?.query || ""
});
// Trigger Axon
_axq("analytics:send", {
namespace: "Search",
data: {
search: event.data.searchResult?.query || "",
...(window.axonData.visitor && window.axonData.visitor)
}
});
});
// Event: Checkout Address Info Submitted
analytics.subscribe("checkout_address_info_submitted", (event) => {
const userData = prepareUser(event.data.checkout);
sendUserData(userData);
});
// Event: Checkout Contact Info Submitted
analytics.subscribe("checkout_contact_info_submitted", (event) => {
const userData = prepareUser(event.data.checkout);
sendUserData(userData);
});
// Event: Checkout Shipping Info Submitted
analytics.subscribe("checkout_shipping_info_submitted", (event) => {
const userData = prepareUser(event.data.checkout);
sendUserData(userData);
//console.log(" - Checkout Shipping: ", event.data.checkout);
});
// Event: Viewed Checkout
analytics.subscribe("page_viewed", (event) => {
// Setup target terms
let checkoutKeywords = ['cart', 'checkout'];
// Check URL
const url = event.context.document.location.href;
if(checkoutKeywords.some(function(v) { return url.indexOf(v) > -1 })) {
// Trigger Edgetag
edgetag("tag", "PageView");
_axq("analytics:send", {
namespace: "Viewed Checkout",
data: {
url: url,
...(window.axonData.visitor && window.axonData.visitor)
}
});
}
});
// Event: Viewed Product
analytics.subscribe("product_viewed", (event) => {
const item = event.data.productVariant;
const title = getTitle(item);
// Trigger Edgetag
edgetag("tag", "ViewContent", {
currency: item.price.currencyCode,
value: item.price.amount,
contents: [
{
id: item.product.id,
variantId: item.id,
sku: item.sku,
quantity: 1,
item_price: item.price.amount,
title,
image: prepareImage(formatUrl(item.image?.src)),
brand: item.product.vendor || "",
category: item.product.type || "",
url: event.context.document.location.href,
type: "product",
},
],
});
// Trigger Axon
_axq("analytics:send", {
namespace: "Viewed Product",
data: {
currency: item.price.currencyCode,
value: item.price.amount,
contents: [
{
id: item.product.id,
variantId: item.id,
sku: item.sku,
quantity: 1,
item_price: item.price.amount,
brand: item.product.vendor || "",
category: item.product.type || "",
type: "product",
},
],
...(window.axonData.visitor && window.axonData.visitor)
}
});
// Identify customer (if possible)
const customerId = getCustomerId();
if(customerId) {
_axq("customer:identify", {
traits: {
shopify_customer_id: customerId
}
});
}
});
Skip to content
Close
Cookie policy
We use cookies and similar technologies to provide the best experience on our website. Refer to our Privacy Policy for more information.
Accept
Decline
Built for the Course. Worn Everywhere After.
Men's Golf Apparel
Performance polos, pants, and layers that keep up with your round — and whatever comes next.
Shop Golf Apparel
Go to item 1
Go to item 2
Go to item 3
Go to item 4
Go to item 1
Go to item 2
Go to item 3
Go to item 4
The performance polo is one of the softest and most comfortable shirts I own. Great for golfing, gamedays, and athleisure wear. -Aiden C. | Verified Buyer
Your School Colors on the Course
College Golf Polos
Moisture-wicking fabric 92% Polyester, 8% Spandex
Shop Polos Your School Colors on the Course
Collegiate Quarter-Zips
Moisture-wicking, odor-resistant fabric
Shop Quarter-Zips Your School Colors on the Course
Collegiate Hoodies
Moisture-wicking, odor-resistant fabric Polyester, Bamboo, Charcoal, Spandex
Shop Hoodies
Previous
Next
FAQ
Frequently Asked Questions
What makes a good golf polo?
A great golf polo starts with the fabric. You want moisture-wicking jersey knit that pulls sweat away without clinging, four-way stretch that doesn't restrict your swing, and a collar that actually stays flat — most don't. GenTeal's performance polos include a sewn-in collar stay that solves the collar curl problem permanently. Lightweight, breathable, and polished enough for the clubhouse.
What should you wear to a golf course?
Most golf courses require a collared shirt and non-denim pants or shorts. A performance polo paired with stretch five-pocket pants or tailored shorts is the right call — course-appropriate, comfortable for 18 holes, and sharp enough for the 19th hole without changing. GenTeal's performance fabrics are built specifically for this: course-ready by construction, refined enough for everything after.
Are five-pocket pants appropriate for golf?
Yes — provided they're not denim. Our best-selling Clubhouse Stretch Five-Pocket Pant has a denim-like appearance but is built from cotton/modal fabric with stretch and a lightweight hand. It reads as a refined casual pant, passes any dress code, and is significantly more comfortable to swing in than traditional denim or chinos.
What do you wear for golf in cool weather?
A lightweight quarter-zip or performance vest over your polo is the standard answer — something that adds warmth without restricting your swing and packs small enough to pull out of your golf bag. GenTeal's quarter-zips are built for this: light enough to forget they're there, polished enough to wear past the round.
Does GenTeal offer collegiate golf apparel?
Yes. GenTeal carries officially licensed polos, quarter-zips, hoodies, and outerwear for 30+ schools across the SEC, ACC, Big Ten, and Big 12. Every collegiate piece is built to the same performance fabric standard as GenTeal's core line — moisture-wicking, four-way stretch, sewn-in collar stay — just wearing your school's colors.
What's the difference between a performance polo and a regular polo?
A performance polo is built from technical fabric — typically moisture-wicking, four-way stretch jersey knit — versus a standard polo's cotton piqué. The difference is most obvious in heat and humidity: performance fabric pulls moisture away and breathes; cotton holds it. GenTeal's performance polos also include a sewn-in collar stay, which is rare and solves the collar curl problem that affects most performance polos after a few washes.