Learn from the best—our partners

All Agency Partners with “Administration” skills  are trained and certified by PrintNow






Certified Partner


Gold Partner


Platinum Partner

Individuals and/or agencies demonstrating proficiency in understanding PrintNow’s value proposition, implementation approach, and core W2P ecommerce platform functionality.

Highly trained agencies demonstrating ongoing commitment to their PrintNow enabled deployments and driving innovation through web-to-print product development.

Agencies that have achieved the highest level of PrintNow mastery, possessing scalable practices capable of delivering tactical to transformational services for customers of all sizes.

Browse our directory of Certified Solution Partners

Reach out to PrintNow Partnerships for a personalized recommendation by filling out this form.

Absolute Web

Strategy, Implementation, Growth

Absolute Web is a full-service eCommerce agency.

We specialize in digital commerce and business solutions. At Absolute Web, we understand that digital impressions matter more than ever. Our goal is to create an engaging web experience and increase lead generation with best-in-class user interactions. Since 1999, we have helped businesses achieve their goals by working together with our passionate team of digital strategists, project managers, certified developers, and UI/UX producers.

Through digitally led strategic and tactical solutions, we harmonize marketing campaigns with sales processes to drive awareness and increase interest in a company’s products and or services. A unique concept that evolves current processes into accelerated results that transform a company’s bottom line.

We often say, “Let’s Make It Happen,” because that is what we do every day. We’re real people with a real passion for helping our clients grow and thrive.

Big Leap


Big Leap. Finally. A Digital Marketing Agency You Can Trust.

Big Leap was founded in 2008 with the sole intention of providing brands with a trustworthy source of organic, sustainable growth. What began as a small one-man startup flourished into the agency we are today with over 80 employees.

Built on trust, focused on relationships, and motivated by the long term success of every client we work with, Big Leap strives daily to deliver quality results. From SEO to content marketing to social media marketing to marketing automation and more, Big Leap combines multiple tactics to help clients boost their online footprint, generate more leads, and increase revenue.

With trust at its core, Big Leap has been recognized for its growth (Inc 5000 winner four years in a row and MWCN Utah100), for its marketing success (Impact Award, AMA and SAMY), and also its amazing culture (Best Company Culture and Best Company for Women).

With a client retention rate of 95%, we work hard to earn trust every day.

Call us today at 801-436-3003.

Bop Design

Strategy, Implementation, Growth

Bop Design is a B2B marketing and web design firm. We specialize in creating holistic marketing strategies that include B2B web design & development, content marketing, social media, SEO, logo design, branding, and marketing collateral. Our focus is on B2B firms that want an external team of B2B branding specialists to enhance their brand positioning, build awareness and increase market share.

Why Bop Design?

“Bop” means to move, go forward and proceed. Our team of experts is reliable, responsive, and dedicated to moving your business forward. We are 100% focused on B2B web design and marketing. Finding the right B2B marketing firm can be a tricky prospect. Larger, traditional marketing firms may do great work, but most focus on consumer brands and do very little B2B branding.

Bop Design understands that in order for a company to grow and acquire new ideal clients, a holistic B2B marketing approach is required. First, a firm needs to start with a solid foundation: compelling B2B branding, an innovative website design, and educational marketing materials. Once the foundation is set, an engaging inbound marketing plan helps increase brand recognition and generate leads from content marketing, SEO tactics, and social media.

We believe that every B2B company—regardless of its size—deserves cost-effective design and comprehensive marketing solutions. We work specifically with B2B—usually ones with fewer than 250 employees—that are serious about growing. Offering a wide array of branding services, we act as a tactical extension to your internal marketing department, helping your firm achieve its marketing objectives.

Coalition Technologies

Strategy, Implementation, Growth

Coalition is the top-ranked ecommerce, digital marketing, and SEO firm in the United States. We demonstrate our excellence by dominating the SEO industry on our own key terms for over a decade and supporting high-growth clients in ecommerce, local markets, and national opportunities. Want more proof that our results-driven approach works? How about-

📩 5,000,000+ qualified leads generated.

🛒 19,000,000+ ecommerce transactions.

⭐️ 1,000+ 4 and 5 star reviews.

💰 700+ case studies.

Comrade Digital Marketing Agency

Strategy, Implementation, Growth

There’s no doubt that if you’re reading this, you are serious about growing your business. Likely, you’re on Clutch doing research, trying to determine which digital agency will take your business to the next level.

Let us make your decision easy. Hire Comrade for 90 days and see whether we’ll meet or exceed your expectations. If we don’t, request a refund and get what you paid us back within 3 days. GUARANTEED.

At Comrade Digital Marketing Agency, we focus on one thing, GROWING YOUR BUSINESS. We are experts in UX/UI and execute world-class digital marketing strategies for businesses big and small in nearly every industry. Take a look at our portfolio of satisfied clients that, with our solutions, are growing exponentially.

Contact us today to learn more about our precedent-setting guarantee. Our consultation and marketing audit is completely free. Take the first step and contact us.

We serve a range of industries, including:

  • eCommerce
  • Legal
  • Medical
  • Professional Services
  • Manufacturing
  • Corporate
  • IT
  • and more.

Our services:

Digital Marketing

  • Local and Nationwide SEO
  • PPC, SEM
  • Social Media Marketing
  • Email Marketing

Inbound Marketing

  • Marketing Automation
  • Content Marketing

Web Design and Development

  • WordPress website design
  • eCommerce website design
  • Custom website design

Why businesses choose Comrade:

  • For the cost of what one employee might cost a business, we provide a full team comprising business strategists, copywriters, web designers and developers, SEO, PPC, and social media experts, and hands-on account management.
  • First-page SEO results are typically generated in 2-4 months.
  • Hundreds of satisfied clients and countless case studies to prove it.
  • Results and data-driven marketing campaigns.
  • HubSpot and Google Certified partner.
  • Money-back guarantee.
  • Industry-specific expertise.

Digital Marketing Folks LLC

Strategy, Implementation, Growth

Digital Marketing Folks is where creativity meets scalability. Our driven professionals specialize in digital marketing, creative design, SEO, social media, content marketing, and video marketing to transform online businesses. Beyond creative services, our marketing agency offers technical capabilities, including web application development. No matter the industry, DMF has the solutions to your most pressing issues.

We combine years of experience in digital marketing with the power of Apptium Technologies to ensure excellent service at all levels. DMF’s offices across the US, Canada, Singapore, and India enable us to support international businesses in multiple languages.

As a digital marketing company, we know that no two businesses are the same, so your marketing shouldn’t be either. Using competitive analysis and the latest tools, we develop unique website, SEO, advertising, social media, and content strategies, so your digital marketing ensures you stand out from the pack.

Ready to Take the Next Step?

Your goals are important to your business. At DMF, we take the time to understand your processes and what you want to accomplish. Then we create customized solutions based on your business and your budget to produce maximum results for every dollar of your investment. Our reporting at each step in the process ensures the greatest transparency for your peace of mind.

Let us bring your company into the digital age and open new channels to engage your customers. Contact us today and watch your business expand tomorrow.

PrintNow has truly set the bar, and no other web-to-print company puts as much effort into connecting their customers with agency partners. We can drive tremendous ROI and growth for our clients using PrintNow as it solves technical challenges with long-term value and thereby helps clients innovate faster.



Let’s talk about using PrintNow for your customers

Contact PrintNow

Let’s get this conversation started. Tell us a bit about yourself, and we’ll get in touch as soon as we can.

#_form_11_ { font-size:14px; line-height:1.6; font-family:arial, helvetica, sans-serif; margin:0; } #_form_11_ * { outline:0; } ._form_hide { display:none; visibility:hidden; } ._form_show { display:block; visibility:visible; } #_form_11_._form-top { top:0; } #_form_11_._form-bottom { bottom:0; } #_form_11_._form-left { left:0; } #_form_11_._form-right { right:0; } #_form_11_ input[type="text"],#_form_11_ input[type="date"],#_form_11_ textarea { padding:6px; height:auto; border:#979797 1px solid; border-radius:4px; color:#000 !important; font-size:14px; -webkit-box-sizing:border-box; -moz-box-sizing:border-box; box-sizing:border-box; } #_form_11_ textarea { resize:none; } #_form_11_ ._submit { -webkit-appearance:none; cursor:pointer; font-family:arial, sans-serif; font-size:14px; text-align:center; background:#ff5745 !important; border:0 !important; color:#fff !important; padding:10px !important; } #_form_11_ ._close-icon { cursor:pointer; background-image:url(''); background-repeat:no-repeat; background-size:14.2px 14.2px; position:absolute; display:block; top:11px; right:9px; overflow:hidden; width:16.2px; height:16.2px; } #_form_11_ ._close-icon:before { position:relative; } #_form_11_ ._form-body { margin-bottom:30px; } #_form_11_ ._form-image-left { width:150px; float:left; } #_form_11_ ._form-content-right { margin-left:164px; } #_form_11_ ._form-branding { color:#fff; font-size:10px; clear:both; text-align:left; margin-top:30px; font-weight:100; } #_form_11_ ._form-branding ._logo { display:block; width:130px; height:14px; margin-top:6px; background-image:url(''); background-size:130px auto; background-repeat:no-repeat; } #_form_11_ .form-sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0, 0, 0, 0); border:0; } #_form_11_ ._form-label,#_form_11_ ._form_element ._form-label { font-weight:bold; margin-bottom:5px; display:block; } #_form_11_._dark ._form-branding { color:#333; } #_form_11_._dark ._form-branding ._logo { background-image:url(''); } #_form_11_ ._form_element { position:relative; margin-bottom:10px; font-size:0; max-width:100%; } #_form_11_ ._form_element * { font-size:14px; } #_form_11_ ._form_element._clear { clear:both; width:100%; float:none; } #_form_11_ ._form_element._clear:after { clear:left; } #_form_11_ ._form_element input[type="text"],#_form_11_ ._form_element input[type="date"],#_form_11_ ._form_element select,#_form_11_ ._form_element textarea:not(.g-recaptcha-response) { display:block; width:100%; -webkit-box-sizing:border-box; -moz-box-sizing:border-box; box-sizing:border-box; font-family:inherit; } #_form_11_ ._field-wrapper { position:relative; } #_form_11_ ._inline-style { float:left; } #_form_11_ ._inline-style input[type="text"] { width:150px; } #_form_11_ ._inline-style:not(._clear) + ._inline-style:not(._clear) { margin-left:20px; } #_form_11_ ._form_element img._form-image { max-width:100%; } #_form_11_ ._form_element ._form-fieldset { border:0; padding:0.01em 0 0 0; margin:0; min-width:0; } #_form_11_ ._clear-element { clear:left; } #_form_11_ ._full_width { width:100%; } #_form_11_ ._form_full_field { display:block; width:100%; margin-bottom:10px; } #_form_11_ input[type="text"]._has_error,#_form_11_ textarea._has_error { border:#f37c7b 1px solid; } #_form_11_ input[type="checkbox"]._has_error { outline:#f37c7b 1px solid; } #_form_11_ ._error { display:block; position:absolute; font-size:14px; z-index:10000001; } #_form_11_ ._error._above { padding-bottom:4px; bottom:39px; right:0; } #_form_11_ ._error._below { padding-top:4px; top:100%; right:0; } #_form_11_ ._error._above ._error-arrow { bottom:0; right:15px; border-left:5px solid transparent; border-right:5px solid transparent; border-top:5px solid #f37c7b; } #_form_11_ ._error._below ._error-arrow { top:0; right:15px; border-left:5px solid transparent; border-right:5px solid transparent; border-bottom:5px solid #f37c7b; } #_form_11_ ._error-inner { font-size: 14px; color: #ff5745; text-align: center; -webkit-border-radius: 4px; -moz-border-radius: 4px; } #_form_11_ ._error-inner._form_error { margin-bottom:5px; text-align:left; } #_form_11_ ._button-wrapper ._error-inner._form_error { position:static; } #_form_11_ ._error-inner._no_arrow { margin-bottom:10px; } #_form_11_ ._error-arrow { position:absolute; width:0; height:0; } #_form_11_ ._error-html { margin-bottom:10px; } .pika-single { z-index:10000001 !important; } #_form_11_ input[type="text"].datetime_date { width:69%; display:inline; } #_form_11_ select.datetime_time { width:29%; display:inline; height:32px; } @media all and (min-width:320px) and (max-width:667px) { ::-webkit-scrollbar { display:none; } #_form_11_ { margin:0; width:100%; min-width:100%; max-width:100%; box-sizing:border-box; } #_form_11_ * { -webkit-box-sizing:border-box; -moz-box-sizing:border-box; box-sizing:border-box; font-size:1em; } #_form_11_ ._form-content { margin:0; width:100%; } #_form_11_ ._form-inner { display:block; min-width:100%; } #_form_11_ ._form-title,#_form_11_ ._inline-style { margin-top:0; margin-right:0; margin-left:0; } #_form_11_ ._form-title { font-size:1.2em; } #_form_11_ ._form_element { margin:0 0 20px; padding:0; width:100%; } #_form_11_ ._form-element,#_form_11_ ._inline-style,#_form_11_ input[type="text"],#_form_11_ label,#_form_11_ p,#_form_11_ textarea:not(.g-recaptcha-response) { float:none; display:block; width:100%; } #_form_11_ ._row._checkbox-radio label { display:inline; } #_form_11_ ._row,#_form_11_ p,#_form_11_ label { margin-bottom:0.7em; width:100%; } #_form_11_ ._row input[type="checkbox"],#_form_11_ ._row input[type="radio"] { margin:0 !important; vertical-align:middle !important; } #_form_11_ ._row input[type="checkbox"] + span label { display:inline; } #_form_11_ ._row span label { margin:0 !important; width:initial !important; vertical-align:middle !important; } #_form_11_ ._form-image { max-width:100%; height:auto !important; } #_form_11_ input[type="text"] { padding-left:10px; padding-right:10px; font-size:16px; line-height:1.3em; -webkit-appearance:none; } #_form_11_ input[type="radio"],#_form_11_ input[type="checkbox"] { display:inline-block; width:1.3em; height:1.3em; font-size:1em; margin:0 0.3em 0 0; vertical-align:baseline; } #_form_11_ button[type="submit"] { padding:20px; font-size:1.5em; } #_form_11_ ._inline-style { margin:20px 0 0 !important; } } #_form_11_ { position:relative; text-align:left; margin:0px auto 0; padding:0px; -webkit-box-sizing:border-box; -moz-box-sizing:border-box; box-sizing:border-box; *zoom:1; background:transparent !important; border:0px solid #b0b0b0 !important; width:100%; -moz-border-radius:0px !important; -webkit-border-radius:0px !important; border-radius:0px !important; color:#3a3a3a !important; } #_form_11_._inline-form,#_form_11_._inline-form ._form-content,#_form_11_._inline-form input,#_form_11_._inline-form ._submit { font-family:"IBM Plex Sans", Helvetica, sans-serif, 'IBM Plex Sans', arial, sans-serif; } #_form_11_ ._form-title { font-size:22px; line-height:22px; font-weight:600; margin-bottom:0; } #_form_11_:before,#_form_11_:after { content:" "; display:table; } #_form_11_:after { clear:both; } #_form_11_._inline-style { width:auto; display:inline-block; } #_form_11_._inline-style input[type="text"],#_form_11_._inline-style input[type="date"] { padding:10px 12px; } #_form_11_._inline-style button._inline-style { position:relative; top:27px; } #_form_11_._inline-style p { margin:0; } #_form_11_._inline-style ._button-wrapper { position:relative; margin:27px 12.5px 0 20px; } #_form_11_ ._form-thank-you { position:relative; left:0; right:0; text-align:center; font-size:18px; } @media all and (min-width:320px) and (max-width:667px) { #_form_11_._inline-form._inline-style ._inline-style._button-wrapper { margin-top:20px !important; margin-left:0 !important; } } #_form_11_ ._submit { display:block; width:100px; margin:auto; } #_form_11_ form#_form_61A191352AD2D_ { margin:0px !important; padding:0px !important; }
1 2-5 6-10 11-25 26-50 51-100 101-200 201-500 501 or more
Afghanistan Albania Algeria American Samoa Andorra Angola Anguilla Antarctica Antigua and Barbuda Argentina Armenia Aruba Australia Austria Azerbaijan Bahamas Bahrain Bangladesh Barbados Belarus Belgium Belize Benin Bermuda Bhutan Bolivia Bosnia and Herzegovina Botswana Bouvet Island Brazil British Indian Ocean Territory Brunei Darussalam Bulgaria Burkina Faso Burundi Cambodia Cameroon Canada Cape Verde Cayman Islands Central African Republic Chad Chile China Christmas Island Cocos (Keeling) Islands Colombia Comoros Congo Congo, the Democratic Republic of the Cook Islands Costa Rica Cote D'Ivoire Croatia Cuba Cyprus Czech Republic Denmark Djibouti Dominica Dominican Republic Ecuador Egypt El Salvador Equatorial Guinea Eritrea Estonia Ethiopia Falkland Islands (Malvinas) Faroe Islands Fiji Finland France French Guiana French Polynesia French Southern Territories Gabon Gambia Georgia Germany Ghana Gibraltar Greece Greenland Grenada Guadeloupe Guam Guatemala Guinea Guinea-Bissau Guyana Haiti Heard Island and Mcdonald Islands Holy See (Vatican City State) Honduras Hong Kong Hungary Iceland India Indonesia Iran, Islamic Republic of Iraq Ireland Israel Italy Jamaica Japan Jordan Kazakhstan Kenya Kiribati Korea, Democratic People's Republic of Korea, Republic of Kuwait Kyrgyzstan Lao People's Democratic Republic Latvia Lebanon Lesotho Liberia Libyan Arab Jamahiriya Liechtenstein Lithuania Luxembourg Macao Macedonia, the Former Yugoslav Republic of Madagascar Malawi Malaysia Maldives Mali Malta Marshall Islands Martinique Mauritania Mauritius Mayotte Mexico Micronesia, Federated States of Moldova, Republic of Monaco Mongolia Montserrat Morocco Mozambique Myanmar Namibia Nauru Nepal Netherlands Netherlands Antilles New Caledonia New Zealand Nicaragua Niger Nigeria Niue Norfolk Island Northern Mariana Islands Norway Oman Pakistan Palau Palestinian Territory, Occupied Panama Papua New Guinea Paraguay Peru Philippines Pitcairn Poland Portugal Puerto Rico Qatar Reunion Romania Russian Federation Rwanda Saint Helena Saint Kitts and Nevis Saint Lucia Saint Pierre and Miquelon Saint Vincent and the Grenadines Samoa San Marino Sao Tome and Principe Saudi Arabia Senegal Serbia and Montenegro Seychelles Sierra Leone Singapore Slovakia Slovenia Solomon Islands Somalia South Africa South Georgia and the South Sandwich Islands Spain Sri Lanka Sudan Suriname Svalbard and Jan Mayen Swaziland Sweden Switzerland Syrian Arab Republic Taiwan, Province of China Tajikistan Tanzania, United Republic of Thailand Timor-Leste Togo Tokelau Tonga Trinidad and Tobago Tunisia Turkey Turkmenistan Turks and Caicos Islands Tuvalu Uganda Ukraine United Arab Emirates United Kingdom United States United States Minor Outlying Islands Uruguay Uzbekistan Vanuatu Venezuela Viet Nam Virgin Islands, British Virgin Islands, U.s. Wallis and Futuna Western Sahara Yemen Zambia Zimbabwe
window.cfields = {"7":"employees","6":"website","4":"country","8":"message"}; window._show_thank_you = function(id, message, trackcmp_url, email) { var form = document.getElementById('_form_' + id + '_'), thank_you = form.querySelector('._form-thank-you'); form.querySelector('._form-content').style.display = 'none'; thank_you.innerHTML = message; = 'block'; const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias; var visitorObject = window[vgoAlias]; if (email && typeof visitorObject !== 'undefined') { visitorObject('setEmail', email); visitorObject('update'); } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) { // Site tracking URL to use after inline form submission. _load_script(trackcmp_url); } if (typeof window._form_callback !== 'undefined') window._form_callback(id); }; window._show_error = function(id, message, html) { var form = document.getElementById('_form_' + id + '_'), err = document.createElement('div'), button = form.querySelector('button'), old_error = form.querySelector('._form_error'); if (old_error) old_error.parentNode.removeChild(old_error); err.innerHTML = message; err.className = '_error-inner _form_error _no_arrow'; var wrapper = document.createElement('div'); wrapper.className = '_form-inner'; wrapper.appendChild(err); button.parentNode.insertBefore(wrapper, button); document.querySelector('[id^="_form"][id$="_submit"]').disabled = false; if (html) { var div = document.createElement('div'); div.className = '_error-html'; div.innerHTML = html; err.appendChild(div); } }; window._load_script = function(url, callback) { var head = document.querySelector('head'), script = document.createElement('script'), r = false; script.type = 'text/javascript'; script.charset = 'utf-8'; script.src = url; if (callback) { script.onload = script.onreadystatechange = function() { if (!r && (!this.readyState || this.readyState == 'complete')) { r = true; callback(); } }; } head.appendChild(script); }; (function() { if ("excludeform") !== -1) return false; var getCookie = function(name) { var match = document.cookie.match(new RegExp('(^|; )' + name + '=([^;]+)')); return match ? match[2] : null; } var setCookie = function(name, value) { var now = new Date(); var time = now.getTime(); var expireTime = time + 1000 * 60 * 60 * 24 * 365; now.setTime(expireTime); document.cookie = name + '=' + value + '; expires=' + now + ';path=/'; } var addEvent = function(element, event, func) { if (element.addEventListener) { element.addEventListener(event, func); } else { var oldFunc = element['on' + event]; element['on' + event] = function() { oldFunc.apply(this, arguments); func.apply(this, arguments); }; } } var _removed = false; var form_to_submit = document.getElementById('_form_11_'); var allInputs = form_to_submit.querySelectorAll('input, select, textarea'), tooltips = [], submitted = false; var getUrlParam = function(name) { var regexStr = '[\?&]' + name + '=([^&#]*)'; var results = new RegExp(regexStr, 'i').exec(window.location.href); return results != undefined ? decodeURIComponent(results[1]) : false; }; for (var i = 0; i < allInputs.length; i++) { var regexStr = "field\\[(\\d+)\\]"; var results = new RegExp(regexStr).exec(allInputs[i].name); if (results != undefined) { allInputs[i] = window.cfields[results[1]]; } else { allInputs[i] = allInputs[i].name; } var fieldVal = getUrlParam(allInputs[i]; if (fieldVal) { if (allInputs[i].dataset.autofill === "false") { continue; } if (allInputs[i].type == "radio" || allInputs[i].type == "checkbox") { if (allInputs[i].value == fieldVal) { allInputs[i].checked = true; } } else { allInputs[i].value = fieldVal; } } } var remove_tooltips = function() { for (var i = 0; i < tooltips.length; i++) { tooltips[i].tip.parentNode.removeChild(tooltips[i].tip); } tooltips = []; }; var remove_tooltip = function(elem) { for (var i = 0; i < tooltips.length; i++) { if (tooltips[i].elem === elem) { tooltips[i].tip.parentNode.removeChild(tooltips[i].tip); tooltips.splice(i, 1); return; } } }; var create_tooltip = function(elem, text) { var tooltip = document.createElement('div'), arrow = document.createElement('div'), inner = document.createElement('div'), new_tooltip = {}; if (elem.type != 'radio' && elem.type != 'checkbox') { tooltip.className = '_error'; arrow.className = '_error-arrow'; inner.className = '_error-inner'; inner.innerHTML = text; tooltip.appendChild(arrow); tooltip.appendChild(inner); elem.parentNode.appendChild(tooltip); } else { tooltip.className = '_error-inner _no_arrow'; tooltip.innerHTML = text; elem.parentNode.insertBefore(tooltip, elem); new_tooltip.no_arrow = true; } new_tooltip.tip = tooltip; new_tooltip.elem = elem; tooltips.push(new_tooltip); return new_tooltip; }; var resize_tooltip = function(tooltip) { var rect = tooltip.elem.getBoundingClientRect(); var doc = document.documentElement, scrollPosition = - ((window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)); if (scrollPosition < 40) { tooltip.tip.className = tooltip.tip.className.replace(/ ?(_above|_below) ?/g, '') + ' _below'; } else { tooltip.tip.className = tooltip.tip.className.replace(/ ?(_above|_below) ?/g, '') + ' _above'; } }; var resize_tooltips = function() { if (_removed) return; for (var i = 0; i < tooltips.length; i++) { if (!tooltips[i].no_arrow) resize_tooltip(tooltips[i]); } }; var validate_field = function(elem, remove) { var tooltip = null, value = elem.value, no_error = true; remove ? remove_tooltip(elem) : false; if (elem.type != 'checkbox') elem.className = elem.className.replace(/ ?_has_error ?/g, ''); if (elem.getAttribute('required') !== null) { if (elem.type == 'radio' || (elem.type == 'checkbox' && /any/.test(elem.className))) { var elems = form_to_submit.elements[]; if (!(elems instanceof NodeList || elems instanceof HTMLCollection) || elems.length <= 1) { no_error = elem.checked; } else { no_error = false; for (var i = 0; i < elems.length; i++) { if (elems[i].checked) no_error = true; } } if (!no_error) { tooltip = create_tooltip(elem, "Please select an option."); } } else if (elem.type =='checkbox') { var elems = form_to_submit.elements[], found = false, err = []; no_error = true; for (var i = 0; i < elems.length; i++) { if (elems[i].getAttribute('required') === null) continue; if (!found && elems[i] !== elem) return true; found = true; elems[i].className = elems[i].className.replace(/ ?_has_error ?/g, ''); if (!elems[i].checked) { no_error = false; elems[i].className = elems[i].className + ' _has_error'; err.push("Checking %s is required".replace("%s", elems[i].value)); } } if (!no_error) { tooltip = create_tooltip(elem, err.join('
')); } } else if (elem.tagName == 'SELECT') { var selected = true; if (elem.multiple) { selected = false; for (var i = 0; i < elem.options.length; i++) { if (elem.options[i].selected) { selected = true; break; } } } else { for (var i = 0; i < elem.options.length; i++) { if (elem.options[i].selected && !elem.options[i].value) { selected = false; } } } if (!selected) { elem.className = elem.className + ' _has_error'; no_error = false; tooltip = create_tooltip(elem, "Please select an option."); } } else if (value === undefined || value === null || value === '') { elem.className = elem.className + ' _has_error'; no_error = false; tooltip = create_tooltip(elem, "This field is required."); } } if (no_error && == 'email') { if (!value.match(/^[\+_a-z0-9-'&=]+(\.[\+_a-z0-9-']+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/i)) { elem.className = elem.className + ' _has_error'; no_error = false; tooltip = create_tooltip(elem, "Enter a valid email address."); } } if (no_error && /date_field/.test(elem.className)) { if (!value.match(/^\d\d\d\d-\d\d-\d\d$/)) { elem.className = elem.className + ' _has_error'; no_error = false; tooltip = create_tooltip(elem, "Enter a valid date."); } } tooltip ? resize_tooltip(tooltip) : false; return no_error; }; var needs_validate = function(el) { if(el.getAttribute('required') !== null){ return true } if( === 'email' && el.value !== ""){ return true } return false }; var validate_form = function(e) { var err = form_to_submit.querySelector('._form_error'), no_error = true; if (!submitted) { submitted = true; for (var i = 0, len = allInputs.length; i < len; i++) { var input = allInputs[i]; if (needs_validate(input)) { if (input.type == 'text') { addEvent(input, 'blur', function() { this.value = this.value.trim(); validate_field(this, true); }); addEvent(input, 'input', function() { validate_field(this, true); }); } else if (input.type == 'radio' || input.type == 'checkbox') { (function(el) { var radios = form_to_submit.elements[]; for (var i = 0; i < radios.length; i++) { addEvent(radios[i], 'click', function() { validate_field(el, true); }); } })(input); } else if (input.tagName == 'SELECT') { addEvent(input, 'change', function() { validate_field(this, true); }); } else if (input.type == 'textarea'){ addEvent(input, 'input', function() { validate_field(this, true); }); } } } } remove_tooltips(); for (var i = 0, len = allInputs.length; i < len; i++) { var elem = allInputs[i]; if (needs_validate(elem)) { if (elem.tagName.toLowerCase() !== "select") { elem.value = elem.value.trim(); } validate_field(elem) ? true : no_error = false; } } if (!no_error && e) { e.preventDefault(); } resize_tooltips(); return no_error; }; addEvent(window, 'resize', resize_tooltips); addEvent(window, 'scroll', resize_tooltips); window._old_serialize = null; if (typeof serialize !== 'undefined') window._old_serialize = window.serialize; _load_script("//", function() { window._form_serialize = window.serialize; if (window._old_serialize) window.serialize = window._old_serialize; }); var form_submit = function(e) { e.preventDefault(); if (validate_form()) { // use this trick to get the submit button & disable it using plain javascript document.querySelector('#_form_11_submit').disabled = true; var serialized = _form_serialize(document.getElementById('_form_11_')).replace(/%0A/g, '\\n'); var err = form_to_submit.querySelector('._form_error'); err ? err.parentNode.removeChild(err) : false; _load_script('' + serialized + '&jsonp=true'); } return false; }; addEvent(form_to_submit, 'submit', form_submit); })();

Contact PrintNow​

Let’s get this conversation started. Tell us a bit about yourself, and we’ll get in touch as soon as we can.
Privacy Policy: We hate spam and promise to keep your email address safe​