top of page
Construction & Equipment

Custom Brandwear & Promotional Products for Construction & Equipment

Artist-driven custom apparel, branded merchandise, and promotional products for construction companies, contractors, equipment crews, trade businesses, and jobsite teams.

01 / The Story

Apparel Designed for the Construction & Equipment Community

Construction & Equipment apparel should do more than place a logo on a shirt. It should represent the people, pride, work, and story behind the organization. Whether you are creating shirts for crews, operators, foremen, customers, recruits, and community members, the goal is the same: create something that feels specific, meaningful, and worth wearing.

Since 1982, Excel Sportswear has helped teams, businesses, schools, events, and organizations turn identity into custom apparel people are proud to wear.

— The Story of You

02 / The Challenge

Most Construction & Equipment Merchandise Looks Too Generic

Construction & Equipment apparel should do more than place a logo on a shirt. It should represent the people, pride, work, and story behind the organization. Whether you are creating shirts for crews, operators, foremen, customers, recruits, and community members, the goal is the same: create something that feels specific, meaningful, and worth wearing.

Since 1982, Excel Sportswear has helped teams, businesses, schools, events, and organizations turn identity into custom apparel people are proud to wear.

Custom construction & equipment apparel artwork displayed on a branded shirt mockup
03 / What We Create

Custom Apparel, Brandwear & Promotional Products for Construction & Equipment

Excel can help create crew shirts, safety-event apparel, employee brandwear, customer gifts, recruiting apparel, trade show merchandise, company milestone apparel, and jobsite-ready promotional products. Projects can include wearable pieces like shirts, hoodies, polos, hats, and jackets, along with usable branded merchandise such as drinkware, bags, stickers, customer gifts, and event giveaways. The goal is not just to make products. The goal is to create brandwear and merchandise people actually want to wear, use, keep, and remember.

T-Shirts

long sleeves

hoodies

performance apparel

event shirts

staff apparel

customer giveaways

fundraiser apparel

team apparel

promotional products

hi-vis work apparel

04 / The Field

See Construction & Equipment Apparel We Have Created

05 / The Difference

Why Construction & Equipment Customers Choose Excel Sportswear

Excel is not just an apparel printer. We combine original artwork, real in-house artists, collaborative design, production experience, and careful quality control. Every design is reviewed through human creativity and production knowledge so the final apparel looks right, feels connected, and represents the customer well.

AI can support early ideas and workflow, but it does not replace Excel’s artists. Every final design should pass through experienced human hands and eyes so the artwork is practical, original, printable, and connected to the customer’s story.

06 / The Process

How the Custom Apparel Process Works

step-01.png
Discover

We learn about your business, team, event, or brand and gather inspiration, reference photos, and design ideas.

step-02.png
Design

Our in-house artists create custom artwork and mockups while collaborating with you through revisions and approvals.

step-03.png
Produce

Once approved, your apparel moves into production using the printing method that best fits your project.

step-04.png
Deliver

Your finished apparel arrives ready to wear, promote, sell, or represent your organization with pride.

07 / Our Invitation

See what your story
could look like.

bottom of page
. * It never loads a Meta Pixel; it calls the site's existing native pixel only after advertising consent. * Live topology (verified from the site's public page config): an Embed HTML element in URL mode whose * iframe src is exactly https://excel-widgets.lovable.app/embed/contact, a direct child frame of this page. */ (function (root) { "use strict"; var CONFIG = { parentHost: "www.excelsportswear.com", contactPaths: ["/contact", "/contact/"], iframeOrigin: "https://excel-widgets.lovable.app", iframePath: "/embed/contact", pixelId: "975271178541890", utmKeys: ["utm_source", "utm_medium", "utm_campaign", "utm_content", "utm_term"], }; var EVENT_ID = /^cl_[a-f0-9]{32}$/; var SAFE = /^[\w\-.+ %|:]{1,200}$/; var KEY = "__excelContactBridgeV1"; function onContactPage(win) { return win.location.hostname === CONFIG.parentHost && CONFIG.contactPaths.indexOf(win.location.pathname) !== -1; } function install(win) { if (win[KEY]) return win[KEY]; // idempotent: duplicate embeds / SPA re-runs reuse one listener if (win.location.hostname !== CONFIG.parentHost) return { active: false, reason: "host" }; if (!onContactPage(win)) return { active: false, reason: "path" }; var doc = win.document; var params = new URLSearchParams(win.location.search); try { if (params.get("excel_tracking") === "off") win.localStorage.setItem("excel_tracking_off", "1"); if (params.get("excel_tracking") === "on") win.localStorage.removeItem("excel_tracking_off"); } catch (e) {} var suppressed = function () { try { return win.localStorage.getItem("excel_tracking_off") === "1"; } catch (e) { return true; } }; // Fail closed. Wix exposes window.consentPolicyManager on live sites (verified on this site). // getCurrentConsentPolicy() returns the visitor's saved policy, or the site default when // defaultPolicy === true; either way policy.advertising is the effective decision. Anything else = no. function advertisingAllowed() { var mgr = win.consentPolicyManager; if (!mgr || typeof mgr.getCurrentConsentPolicy !== "function") return false; try { var current = mgr.getCurrentConsentPolicy(); if (!current || typeof current.defaultPolicy !== "boolean" || !current.policy) return false; return current.policy.advertising === true; } catch (e) { return false; } } // First-touch, non-PII attribution: allowlisted UTMs and paths only, never full URLs or other query keys. var stored = {}; try { stored = JSON.parse(win.sessionStorage.getItem("excel_contact_attr") || "{}") || {}; } catch (e) { stored = {}; } CONFIG.utmKeys.forEach(function (k) { var v = (params.get(k) || "").trim().slice(0, 200); if (!stored[k] && v && SAFE.test(v) && v.indexOf("@") === -1) stored[k] = v; }); if (!stored.landing_path) stored.landing_path = win.location.pathname; try { win.sessionStorage.setItem("excel_contact_attr", JSON.stringify(stored)); } catch (e) {} function isContactFrame(f) { try { var u = new URL(f.src, win.location.href); return u.origin === CONFIG.iframeOrigin && u.pathname === CONFIG.iframePath; } catch (e) { return false; } } function contactFrames() { var out = [], frames = doc.getElementsByTagName("iframe"); for (var i = 0; i < frames.length; i++) if (isContactFrame(frames[i])) out.push(frames[i]); return out; } function findIframe(source) { var frames = contactFrames(); for (var i = 0; i < frames.length; i++) if (frames[i].contentWindow === source) return frames[i]; return null; } function sendContext(frame) { if (!onContactPage(win) || !frame.contentWindow || !isContactFrame(frame)) return; var attribution = { source_path: win.location.pathname }; for (var k in stored) if (Object.prototype.hasOwnProperty.call(stored, k)) attribution[k] = stored[k]; // Exact target origin: if the frame is not (yet) the contact app, the browser drops the message. try { frame.contentWindow.postMessage({ type: "excel-contact-context", v: 1, attribution: attribution }, CONFIG.iframeOrigin); } catch (e) {} } // Proactively push context on install and on every iframe load (Wix renders the embed lazily). var watched = typeof WeakSet === "function" ? new WeakSet() : null; function watch() { contactFrames().forEach(function (f) { if (watched && !watched.has(f) && typeof f.addEventListener === "function") { watched.add(f); f.addEventListener("load", function () { sendContext(f); }); } sendContext(f); }); } var observer = null; if (typeof win.MutationObserver === "function" && doc.documentElement) { observer = new win.MutationObserver(function () { if (onContactPage(win)) watch(); }); observer.observe(doc.documentElement, { childList: true, subtree: true, attributes: true, attributeFilter: ["src"] }); } var sent = {}; function onMessage(e) { if (!onContactPage(win)) return; // re-checked per event: SPA navigation away disables the bridge if (e.origin !== CONFIG.iframeOrigin || !e.source) return; var frame = findIframe(e.source); var d = e.data; if (!frame || !d || typeof d !== "object" || d.v !== 1) return; if (d.type === "excel-contact-ready") { sendContext(frame); return; } if (d.type !== "excel-contact" || d.event !== "lead" || !EVENT_ID.test(d.eventId)) return; // Consent is re-read now; blocked Leads are dropped, never queued or replayed. if (suppressed() || !advertisingAllowed()) return; if (typeof win.fbq !== "function") return; var key = "excel_lead_" + d.eventId; try { if (sent[key] || win.sessionStorage.getItem(key)) return; } catch (e2) { if (sent[key]) return; } sent[key] = true; try { win.sessionStorage.setItem(key, "1"); } catch (e3) {} win.fbq("trackSingle", CONFIG.pixelId, "Lead", { content_category: "project_inquiry" }, { eventID: d.eventId }); } win.addEventListener("message", onMessage); var state = { active: true, handler: onMessage, observer: observer }; win[KEY] = state; watch(); return state; } if (typeof module !== "undefined" && module.exports) module.exports = { install: install, CONFIG: CONFIG }; else if (root && root.document) install(root); })(typeof window !== "undefined" ? window : undefined);