|
|
@@ -10,13 +10,110 @@ Response.CodePage = 65001 |
|
|
<title>PostcardMojo | Big Local Reach on One 9×12 Postcard</title> |
|
|
<title>PostcardMojo | Big Local Reach on One 9×12 Postcard</title> |
|
|
<meta name="description" content="Put your business on an oversized 9×12 postcard shared by a curated group of local businesses and delivered directly to nearby mailboxes."> |
|
|
<meta name="description" content="Put your business on an oversized 9×12 postcard shared by a curated group of local businesses and delivered directly to nearby mailboxes."> |
|
|
<meta name="theme-color" content="#062f4f"> |
|
|
<meta name="theme-color" content="#062f4f"> |
|
|
|
|
|
<link rel="canonical" href="https://postcardmojo.com/"> |
|
|
|
|
|
<meta property="og:type" content="website"> |
|
|
|
|
|
<meta property="og:site_name" content="PostcardMojo"> |
|
|
|
|
|
<meta property="og:title" content="PostcardMojo | Big Local Reach on One 9×12 Postcard"> |
|
|
|
|
|
<meta property="og:description" content="Put your business on an oversized 9×12 postcard shared by a curated group of local businesses and delivered directly to nearby mailboxes."> |
|
|
|
|
|
<meta property="og:url" content="https://postcardmojo.com/"> |
|
|
|
|
|
<meta property="og:image" content="https://postcardmojo.com/images/og-image.jpg"> |
|
|
|
|
|
<meta property="og:image:width" content="1200"> |
|
|
|
|
|
<meta property="og:image:height" content="630"> |
|
|
|
|
|
<meta property="og:image:alt" content="PostcardMojo shared 9×12 postcard featuring local business ads"> |
|
|
|
|
|
<meta name="twitter:card" content="summary_large_image"> |
|
|
|
|
|
<meta name="twitter:title" content="PostcardMojo | Big Local Reach on One 9×12 Postcard"> |
|
|
|
|
|
<meta name="twitter:description" content="Put your business on an oversized 9×12 postcard shared by a curated group of local businesses and delivered directly to nearby mailboxes."> |
|
|
|
|
|
<meta name="twitter:image" content="https://postcardmojo.com/images/og-image.jpg"> |
|
|
|
|
|
<script type="application/ld+json"> |
|
|
|
|
|
{ |
|
|
|
|
|
"@context": "https://schema.org", |
|
|
|
|
|
"@graph": [ |
|
|
|
|
|
{ |
|
|
|
|
|
"@type": "Organization", |
|
|
|
|
|
"@id": "https://postcardmojo.com/#organization", |
|
|
|
|
|
"name": "PostcardMojo", |
|
|
|
|
|
"url": "https://postcardmojo.com/", |
|
|
|
|
|
"logo": "https://postcardmojo.com/images/logos/png/logo_full_large.png" |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
"@type": "WebSite", |
|
|
|
|
|
"@id": "https://postcardmojo.com/#website", |
|
|
|
|
|
"url": "https://postcardmojo.com/", |
|
|
|
|
|
"name": "PostcardMojo", |
|
|
|
|
|
"publisher": { |
|
|
|
|
|
"@id": "https://postcardmojo.com/#organization" |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
"@type": "FAQPage", |
|
|
|
|
|
"mainEntity": [ |
|
|
|
|
|
{ |
|
|
|
|
|
"@type": "Question", |
|
|
|
|
|
"name": "What is a shared 9×12 postcard?", |
|
|
|
|
|
"acceptedAnswer": { |
|
|
|
|
|
"@type": "Answer", |
|
|
|
|
|
"text": "It is one oversized mail piece featuring a curated collection of local business ads. The format gives recipients multiple useful offers while advertisers share print and mailing costs." |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
"@type": "Question", |
|
|
|
|
|
"name": "Will a direct competitor appear beside me?", |
|
|
|
|
|
"acceptedAnswer": { |
|
|
|
|
|
"@type": "Answer", |
|
|
|
|
|
"text": "Category availability is managed by campaign. Ask about category placement and any available exclusivity when reserving your space." |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
"@type": "Question", |
|
|
|
|
|
"name": "Do I need a finished ad?", |
|
|
|
|
|
"acceptedAnswer": { |
|
|
|
|
|
"@type": "Answer", |
|
|
|
|
|
"text": "No. You can send us your own finished design, or we can create one for you. Either way, start with your logo, offer, contact details, and any brand assets you already have. Creative requirements are confirmed for your campaign." |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
"@type": "Question", |
|
|
|
|
|
"name": "Where will the postcard be mailed?", |
|
|
|
|
|
"acceptedAnswer": { |
|
|
|
|
|
"@type": "Answer", |
|
|
|
|
|
"text": "Campaigns are planned around selected local areas. Exact geography, timing, and mailing details are confirmed before you reserve a spot." |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
"@type": "Question", |
|
|
|
|
|
"name": "What does a campaign cost?", |
|
|
|
|
|
"acceptedAnswer": { |
|
|
|
|
|
"@type": "Answer", |
|
|
|
|
|
"text": "Pricing depends on the campaign, placement, and mailing plan. Request current details for the area you want to reach." |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
] |
|
|
|
|
|
} |
|
|
|
|
|
] |
|
|
|
|
|
} |
|
|
|
|
|
</script> |
|
|
<link rel="icon" type="image/jpeg" href="/images/logos/sharp/jpg/icon_64.jpg"> |
|
|
<link rel="icon" type="image/jpeg" href="/images/logos/sharp/jpg/icon_64.jpg"> |
|
|
|
|
|
<link rel="preload" as="image" type="image/webp" href="/images/hero-postcard-1200.webp" imagesrcset="/images/hero-postcard-600.webp 600w, /images/hero-postcard-1200.webp 1200w" imagesizes="(max-width: 700px) 92vw, 640px"> |
|
|
<link rel="preconnect" href="https://fonts.googleapis.com"> |
|
|
<link rel="preconnect" href="https://fonts.googleapis.com"> |
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
|
|
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@600;700;800&display=swap" rel="stylesheet"> |
|
|
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@600;700;800&display=swap" rel="stylesheet"> |
|
|
<link rel="stylesheet" href="/css/home.css"> |
|
|
<link rel="stylesheet" href="/css/home.css"> |
|
|
</head> |
|
|
</head> |
|
|
<body id="top"> |
|
|
<body id="top"> |
|
|
|
|
|
<svg width="0" height="0" style="position:absolute" aria-hidden="true" focusable="false"> |
|
|
|
|
|
<defs> |
|
|
|
|
|
<symbol id="i-layout" viewBox="0 0 24 24"><path d="M3 3h18v18H3zM3 9h18M9 21V9"/></symbol> |
|
|
|
|
|
<symbol id="i-pen" viewBox="0 0 24 24"><path d="M16.5 3.5l4 4L8 20l-5 1 1-5zM14 6l4 4"/></symbol> |
|
|
|
|
|
<symbol id="i-mail" viewBox="0 0 24 24"><path d="M3 5h18v14H3zM3 5l9 8 9-8"/></symbol> |
|
|
|
|
|
<symbol id="i-home" viewBox="0 0 24 24"><path d="M3 11l9-8 9 8M5 9.5V21h14V9.5M10 21v-6h4v6"/></symbol> |
|
|
|
|
|
<symbol id="i-heart" viewBox="0 0 24 24"><path d="M12 21s-8-5-8-11a4.5 4.5 0 0 1 8-2.5A4.5 4.5 0 0 1 20 10c0 6-8 11-8 11z"/></symbol> |
|
|
|
|
|
<symbol id="i-dining" viewBox="0 0 24 24"><path d="M5 3v6a3 3 0 0 0 6 0V3M8 3v18M17 21V3c-2.5 1.5-4 4.5-4 8h4"/></symbol> |
|
|
|
|
|
<symbol id="i-briefcase" viewBox="0 0 24 24"><path d="M3 7h18v13H3zM9 7V4h6v3M3 13h18"/></symbol> |
|
|
|
|
|
<symbol id="i-check" viewBox="0 0 24 24"><path d="M4 12.5l5 5L20 6.5"/></symbol> |
|
|
|
|
|
<symbol id="i-arrow-up-right" viewBox="0 0 24 24"><path d="M7 17L17 7M8 7h9v9"/></symbol> |
|
|
|
|
|
</defs> |
|
|
|
|
|
</svg> |
|
|
|
|
|
|
|
|
<a class="skip-link" href="#main-content">Skip to main content</a> |
|
|
<a class="skip-link" href="#main-content">Skip to main content</a> |
|
|
|
|
|
|
|
|
<header class="site-header"> |
|
|
<header class="site-header"> |
|
|
@@ -24,13 +121,17 @@ Response.CodePage = 65001 |
|
|
<a class="brand" href="/" aria-label="PostcardMojo home"> |
|
|
<a class="brand" href="/" aria-label="PostcardMojo home"> |
|
|
<img src="/images/logos/sharp/jpg/logo_full_small_b.jpg" width="217" height="73" alt="PostcardMojo"> |
|
|
<img src="/images/logos/sharp/jpg/logo_full_small_b.jpg" width="217" height="73" alt="PostcardMojo"> |
|
|
</a> |
|
|
</a> |
|
|
<nav class="site-nav" aria-label="Primary navigation"> |
|
|
|
|
|
|
|
|
<nav class="site-nav" id="site-nav" aria-label="Primary navigation"> |
|
|
<a href="#how-it-works">How it works</a> |
|
|
<a href="#how-it-works">How it works</a> |
|
|
|
|
|
<a href="#ad-sizes">Ad sizes</a> |
|
|
<a href="#why-postcards">Why it works</a> |
|
|
<a href="#why-postcards">Why it works</a> |
|
|
<a href="#good-fit">Who it is for</a> |
|
|
<a href="#good-fit">Who it is for</a> |
|
|
<a href="#faq">FAQ</a> |
|
|
<a href="#faq">FAQ</a> |
|
|
</nav> |
|
|
</nav> |
|
|
<a class="button button-small button-primary" href="#contact">Find your spot</a> |
|
|
<a class="button button-small button-primary" href="#contact">Find your spot</a> |
|
|
|
|
|
<button class="nav-toggle" type="button" aria-expanded="false" aria-controls="site-nav" aria-label="Menu"> |
|
|
|
|
|
<span class="nav-toggle-bars" aria-hidden="true"></span> |
|
|
|
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
</header> |
|
|
</header> |
|
|
|
|
|
|
|
|
@@ -48,66 +149,31 @@ Response.CodePage = 65001 |
|
|
<a class="button button-quiet" href="#how-it-works">See how it works <span aria-hidden="true">→</span></a> |
|
|
<a class="button button-quiet" href="#how-it-works">See how it works <span aria-hidden="true">→</span></a> |
|
|
</div> |
|
|
</div> |
|
|
<ul class="hero-points" aria-label="Campaign highlights"> |
|
|
<ul class="hero-points" aria-label="Campaign highlights"> |
|
|
<li><span aria-hidden="true">✓</span> Oversized 9×12 format</li> |
|
|
|
|
|
<li><span aria-hidden="true">✓</span> Built for neighborhood reach</li> |
|
|
|
|
|
<li><span aria-hidden="true">✓</span> Shared production costs</li> |
|
|
|
|
|
|
|
|
<li><span><svg class="icon" aria-hidden="true" focusable="false"><use href="#i-check"/></svg></span> Oversized 9×12 format</li> |
|
|
|
|
|
<li><span><svg class="icon" aria-hidden="true" focusable="false"><use href="#i-check"/></svg></span> Built for neighborhood reach</li> |
|
|
|
|
|
<li><span><svg class="icon" aria-hidden="true" focusable="false"><use href="#i-check"/></svg></span> Shared production costs</li> |
|
|
</ul> |
|
|
</ul> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="postcard-stage"> |
|
|
<div class="postcard-stage"> |
|
|
<div class="postcard-shadow" aria-hidden="true"></div> |
|
|
<div class="postcard-shadow" aria-hidden="true"></div> |
|
|
<div class="postcard"> |
|
|
<div class="postcard"> |
|
|
<img class="postcard-image" src="/images/download%20(1).png" width="2048" height="1536" alt="Sample shared postcard featuring advertisements for local home-service businesses"> |
|
|
|
|
|
|
|
|
<picture> |
|
|
|
|
|
<source type="image/webp" srcset="/images/hero-postcard-600.webp 600w, /images/hero-postcard-1200.webp 1200w" sizes="(max-width: 700px) 92vw, 640px"> |
|
|
|
|
|
<img class="postcard-image" src="/images/hero-postcard-1200.jpg" srcset="/images/hero-postcard-600.jpg 600w, /images/hero-postcard-1200.jpg 1200w" sizes="(max-width: 700px) 92vw, 640px" width="1200" height="900" fetchpriority="high" decoding="async" alt="Sample shared postcard featuring advertisements for local home-service businesses"> |
|
|
|
|
|
</picture> |
|
|
</div> |
|
|
</div> |
|
|
<div class="stage-note"><span aria-hidden="true">↗</span> One card. Multiple businesses. A whole neighborhood of opportunity.</div> |
|
|
|
|
|
|
|
|
<div class="stage-note"><span><svg class="icon" aria-hidden="true" focusable="false"><use href="#i-arrow-up-right"/></svg></span> One card. Multiple businesses. A whole neighborhood of opportunity.</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<aside class="contact-card" id="contact" aria-labelledby="contact-title"> |
|
|
|
|
|
<p class="eyebrow eyebrow-on-dark"><span></span> Contact us</p> |
|
|
|
|
|
<h2 id="contact-title">Interested in a spot on the next card?</h2> |
|
|
|
|
|
<% If contactSent Then %> |
|
|
|
|
|
<p class="contact-success" role="status">Thank you! Your message was sent and we will be in touch soon.</p> |
|
|
|
|
|
<% Else %> |
|
|
|
|
|
<form class="contact-form" method="post" action="/contact#contact" novalidate> |
|
|
|
|
|
<% If UBound(contactErrors) >= 0 Then %> |
|
|
|
|
|
<div class="contact-errors" role="alert"> |
|
|
|
|
|
<ul> |
|
|
|
|
|
<% Dim contactErrorIndex : For contactErrorIndex = 0 To UBound(contactErrors) %> |
|
|
|
|
|
<li><%= Server.HTMLEncode(contactErrors(contactErrorIndex)) %></li> |
|
|
|
|
|
<% Next %> |
|
|
|
|
|
</ul> |
|
|
|
|
|
</div> |
|
|
|
|
|
<% End If %> |
|
|
|
|
|
<input type="hidden" name="csrf_token" value="<%= Server.HTMLEncode(ContactCsrfToken()) %>"> |
|
|
|
|
|
<div class="contact-trap" aria-hidden="true"><label>Leave this empty <input type="text" name="zq_trap_field" tabindex="-1" autocomplete="off"></label></div> |
|
|
|
|
|
<label>Name <span aria-hidden="true">*</span> |
|
|
|
|
|
<input type="text" name="name" maxlength="100" required autocomplete="name" value="<%= Server.HTMLEncode(contactName & "") %>"> |
|
|
|
|
|
</label> |
|
|
|
|
|
<label>Email <span aria-hidden="true">*</span> |
|
|
|
|
|
<input type="email" name="email" maxlength="150" required autocomplete="email" value="<%= Server.HTMLEncode(contactEmail & "") %>"> |
|
|
|
|
|
</label> |
|
|
|
|
|
<label>Phone |
|
|
|
|
|
<input type="tel" name="phone" maxlength="40" autocomplete="tel" value="<%= Server.HTMLEncode(contactPhone & "") %>"> |
|
|
|
|
|
</label> |
|
|
|
|
|
<label>Business |
|
|
|
|
|
<input type="text" name="business" maxlength="150" autocomplete="organization" value="<%= Server.HTMLEncode(contactBusiness & "") %>"> |
|
|
|
|
|
</label> |
|
|
|
|
|
<label class="contact-wide">How can we help? |
|
|
|
|
|
<textarea name="message" rows="3" maxlength="2000"><%= Server.HTMLEncode(contactMessage & "") %></textarea> |
|
|
|
|
|
</label> |
|
|
|
|
|
<button class="button button-primary" type="submit">Send my interest</button> |
|
|
|
|
|
</form> |
|
|
|
|
|
<% End If %> |
|
|
|
|
|
</aside> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
</section> |
|
|
|
|
|
|
|
|
<section class="signal-strip" aria-label="What makes PostcardMojo different"> |
|
|
<section class="signal-strip" aria-label="What makes PostcardMojo different"> |
|
|
<div class="shell signal-grid"> |
|
|
<div class="shell signal-grid"> |
|
|
<div><strong>9 × 12</strong><span>Oversized presence</span></div> |
|
|
|
|
|
<div><strong>One card</strong><span>A curated local lineup</span></div> |
|
|
|
|
|
<div><strong>Shared</strong><span>Print and postage costs</span></div> |
|
|
|
|
|
<div><strong>Local</strong><span>Campaign-focused reach</span></div> |
|
|
|
|
|
|
|
|
<div><strong>5,000</strong><span>Mailboxes reached</span></div> |
|
|
|
|
|
<div><strong>9 × 12 in</strong><span>Oversized postcard</span></div> |
|
|
|
|
|
<div><strong>2 ad sizes</strong><span>3×4 or 6×4</span></div> |
|
|
|
|
|
<div><strong>Design help</strong><span>Send yours or we create it</span></div> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
</section> |
|
|
|
|
|
|
|
|
@@ -121,19 +187,19 @@ Response.CodePage = 65001 |
|
|
<ol class="steps"> |
|
|
<ol class="steps"> |
|
|
<li> |
|
|
<li> |
|
|
<span class="step-number">01</span> |
|
|
<span class="step-number">01</span> |
|
|
<div class="step-icon" aria-hidden="true">◎</div> |
|
|
|
|
|
|
|
|
<div class="step-icon"><svg class="icon" aria-hidden="true" focusable="false"><use href="#i-layout"/></svg></div> |
|
|
<h3>Choose your ad size</h3> |
|
|
<h3>Choose your ad size</h3> |
|
|
<p>Pick a 3×4 or a 6×8 space on the shared 9×12 postcard.</p> |
|
|
|
|
|
|
|
|
<p>Pick a 3×4 or a 6×4 space on the shared 9×12 postcard.</p> |
|
|
</li> |
|
|
</li> |
|
|
<li> |
|
|
<li> |
|
|
<span class="step-number">02</span> |
|
|
<span class="step-number">02</span> |
|
|
<div class="step-icon" aria-hidden="true">✦</div> |
|
|
|
|
|
|
|
|
<div class="step-icon"><svg class="icon" aria-hidden="true" focusable="false"><use href="#i-pen"/></svg></div> |
|
|
<h3>Send your layout or let us design it</h3> |
|
|
<h3>Send your layout or let us design it</h3> |
|
|
<p>Already have an ad? Send it over. Need one? We will design it for you.</p> |
|
|
<p>Already have an ad? Send it over. Need one? We will design it for you.</p> |
|
|
</li> |
|
|
</li> |
|
|
<li> |
|
|
<li> |
|
|
<span class="step-number">03</span> |
|
|
<span class="step-number">03</span> |
|
|
<div class="step-icon" aria-hidden="true">↗</div> |
|
|
|
|
|
|
|
|
<div class="step-icon"><svg class="icon" aria-hidden="true" focusable="false"><use href="#i-mail"/></svg></div> |
|
|
<h3>We mail it out</h3> |
|
|
<h3>We mail it out</h3> |
|
|
<p>We print the postcard and deliver it to mailboxes in your area.</p> |
|
|
<p>We print the postcard and deliver it to mailboxes in your area.</p> |
|
|
</li> |
|
|
</li> |
|
|
@@ -141,13 +207,59 @@ Response.CodePage = 65001 |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
</section> |
|
|
|
|
|
|
|
|
|
|
|
<section class="section section-warm" id="ad-sizes"> |
|
|
|
|
|
<div class="shell"> |
|
|
|
|
|
<div class="section-heading heading-centered"> |
|
|
|
|
|
<p class="eyebrow eyebrow-centered"><span></span> Pick your space</p> |
|
|
|
|
|
<h2>Two sizes. One clear offer.</h2> |
|
|
|
|
|
<p>Every ad shares the 9×12 postcard with other local businesses. Choose the size that fits your message.</p> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<figure class="size-scale"> |
|
|
|
|
|
<div class="size-scale-row" role="img" aria-label="Scale drawing of the 9 by 12 inch postcard beside the 6 by 4 inch and 3 by 4 inch ad sizes"> |
|
|
|
|
|
<div class="scale-item"><span class="scale-shape scale-card"></span><figcaption>9×12 postcard</figcaption></div> |
|
|
|
|
|
<div class="scale-item"><span class="scale-shape scale-large"></span><figcaption>6×4 ad</figcaption></div> |
|
|
|
|
|
<div class="scale-item"><span class="scale-shape scale-small"></span><figcaption>3×4 ad</figcaption></div> |
|
|
|
|
|
</div> |
|
|
|
|
|
<p class="scale-caption">Shown to scale</p> |
|
|
|
|
|
</figure> |
|
|
|
|
|
|
|
|
|
|
|
<div class="size-grid"> |
|
|
|
|
|
<article class="size-card"> |
|
|
|
|
|
<h3>3×4 spot</h3> |
|
|
|
|
|
<p>A focused space for one strong offer, your logo, and a clear next step.</p> |
|
|
|
|
|
<ul> |
|
|
|
|
|
<li>Headline and one offer</li> |
|
|
|
|
|
<li>Phone number, URL, or QR code</li> |
|
|
|
|
|
</ul> |
|
|
|
|
|
</article> |
|
|
|
|
|
<article class="size-card size-card-featured"> |
|
|
|
|
|
<h3>6×4 spot</h3> |
|
|
|
|
|
<p>Twice the width of a 3×4, with more room for a photo, a bigger offer, and a message that stands out on the card.</p> |
|
|
|
|
|
<ul> |
|
|
|
|
|
<li>Headline, photo, and offer</li> |
|
|
|
|
|
<li>Phone number, URL, and QR code</li> |
|
|
|
|
|
</ul> |
|
|
|
|
|
</article> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div class="pricing-note"> |
|
|
|
|
|
<div> |
|
|
|
|
|
<h3>Pricing and mail dates are set per campaign</h3> |
|
|
|
|
|
<p>We are building the next campaign now. Tell us your business and service area and we will confirm pricing, availability, and the mail date for your spot.</p> |
|
|
|
|
|
</div> |
|
|
|
|
|
<a class="button button-primary" href="#contact">Get pricing for my area</a> |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
</section> |
|
|
|
|
|
|
|
|
<section class="section section-navy" id="why-postcards"> |
|
|
<section class="section section-navy" id="why-postcards"> |
|
|
<div class="shell value-grid"> |
|
|
<div class="shell value-grid"> |
|
|
<div class="value-copy"> |
|
|
<div class="value-copy"> |
|
|
<p class="eyebrow eyebrow-on-dark"><span></span> A physical advantage</p> |
|
|
<p class="eyebrow eyebrow-on-dark"><span></span> A physical advantage</p> |
|
|
<h2>Digital ads disappear with a swipe. A great postcard gets held.</h2> |
|
|
<h2>Digital ads disappear with a swipe. A great postcard gets held.</h2> |
|
|
<p>PostcardMojo gives your business a physical moment with a local customer. The oversized format creates room for a useful offer, recognizable branding, and a direct next step.</p> |
|
|
<p>PostcardMojo gives your business a physical moment with a local customer. The oversized format creates room for a useful offer, recognizable branding, and a direct next step.</p> |
|
|
<a class="text-link" href="#get-started">Put your offer on the next card <span aria-hidden="true">→</span></a> |
|
|
|
|
|
|
|
|
<a class="text-link" href="#contact">Put your offer on the next card <span aria-hidden="true">→</span></a> |
|
|
</div> |
|
|
</div> |
|
|
<div class="benefit-list"> |
|
|
<div class="benefit-list"> |
|
|
<article> |
|
|
<article> |
|
|
@@ -181,22 +293,22 @@ Response.CodePage = 65001 |
|
|
</div> |
|
|
</div> |
|
|
<div class="fit-grid"> |
|
|
<div class="fit-grid"> |
|
|
<article class="fit-card"> |
|
|
<article class="fit-card"> |
|
|
<span class="fit-icon" aria-hidden="true">⌂</span> |
|
|
|
|
|
|
|
|
<span class="fit-icon"><svg class="icon" aria-hidden="true" focusable="false"><use href="#i-home"/></svg></span> |
|
|
<h3>Home services</h3> |
|
|
<h3>Home services</h3> |
|
|
<p>Landscaping, cleaning, roofing, HVAC, plumbing, remodeling, and other trusted pros.</p> |
|
|
<p>Landscaping, cleaning, roofing, HVAC, plumbing, remodeling, and other trusted pros.</p> |
|
|
</article> |
|
|
</article> |
|
|
<article class="fit-card"> |
|
|
<article class="fit-card"> |
|
|
<span class="fit-icon" aria-hidden="true">+</span> |
|
|
|
|
|
|
|
|
<span class="fit-icon"><svg class="icon" aria-hidden="true" focusable="false"><use href="#i-heart"/></svg></span> |
|
|
<h3>Health & wellness</h3> |
|
|
<h3>Health & wellness</h3> |
|
|
<p>Dentists, chiropractors, fitness studios, salons, spas, and wellness providers.</p> |
|
|
<p>Dentists, chiropractors, fitness studios, salons, spas, and wellness providers.</p> |
|
|
</article> |
|
|
</article> |
|
|
<article class="fit-card"> |
|
|
<article class="fit-card"> |
|
|
<span class="fit-icon" aria-hidden="true">♨</span> |
|
|
|
|
|
|
|
|
<span class="fit-icon"><svg class="icon" aria-hidden="true" focusable="false"><use href="#i-dining"/></svg></span> |
|
|
<h3>Food & experiences</h3> |
|
|
<h3>Food & experiences</h3> |
|
|
<p>Restaurants, cafés, entertainment, family activities, and places worth discovering.</p> |
|
|
<p>Restaurants, cafés, entertainment, family activities, and places worth discovering.</p> |
|
|
</article> |
|
|
</article> |
|
|
<article class="fit-card"> |
|
|
<article class="fit-card"> |
|
|
<span class="fit-icon" aria-hidden="true">◆</span> |
|
|
|
|
|
|
|
|
<span class="fit-icon"><svg class="icon" aria-hidden="true" focusable="false"><use href="#i-briefcase"/></svg></span> |
|
|
<h3>Professional services</h3> |
|
|
<h3>Professional services</h3> |
|
|
<p>Real estate, insurance, financial, legal, pet care, automotive, and local experts.</p> |
|
|
<p>Real estate, insurance, financial, legal, pet care, automotive, and local experts.</p> |
|
|
</article> |
|
|
</article> |
|
|
@@ -218,9 +330,9 @@ Response.CodePage = 65001 |
|
|
<h2>A clear offer turns attention into action.</h2> |
|
|
<h2>A clear offer turns attention into action.</h2> |
|
|
<p>Your ad does not need to tell your whole story. It needs to make one strong promise and give a nearby customer one easy next step.</p> |
|
|
<p>Your ad does not need to tell your whole story. It needs to make one strong promise and give a nearby customer one easy next step.</p> |
|
|
<ul class="check-list"> |
|
|
<ul class="check-list"> |
|
|
<li><span>✓</span><div><strong>A direct headline</strong><small>Say what you do and why it matters.</small></div></li> |
|
|
|
|
|
<li><span>✓</span><div><strong>A compelling reason to respond</strong><small>Feature an offer, service, or timely benefit.</small></div></li> |
|
|
|
|
|
<li><span>✓</span><div><strong>A simple call to action</strong><small>Use a memorable URL, phone number, or QR code.</small></div></li> |
|
|
|
|
|
|
|
|
<li><span><svg class="icon" aria-hidden="true" focusable="false"><use href="#i-check"/></svg></span><div><strong>A direct headline</strong><small>Say what you do and why it matters.</small></div></li> |
|
|
|
|
|
<li><span><svg class="icon" aria-hidden="true" focusable="false"><use href="#i-check"/></svg></span><div><strong>A compelling reason to respond</strong><small>Feature an offer, service, or timely benefit.</small></div></li> |
|
|
|
|
|
<li><span><svg class="icon" aria-hidden="true" focusable="false"><use href="#i-check"/></svg></span><div><strong>A simple call to action</strong><small>Use a memorable URL, phone number, or QR code.</small></div></li> |
|
|
</ul> |
|
|
</ul> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
@@ -244,7 +356,7 @@ Response.CodePage = 65001 |
|
|
</details> |
|
|
</details> |
|
|
<details> |
|
|
<details> |
|
|
<summary>Do I need a finished ad?<span aria-hidden="true">+</span></summary> |
|
|
<summary>Do I need a finished ad?<span aria-hidden="true">+</span></summary> |
|
|
<p>Start with your logo, offer, contact details, and any brand assets you already have. Creative requirements and available assistance can be confirmed for your campaign.</p> |
|
|
|
|
|
|
|
|
<p>No. You can send us your own finished design, or we can create one for you. Either way, start with your logo, offer, contact details, and any brand assets you already have. Creative requirements are confirmed for your campaign.</p> |
|
|
</details> |
|
|
</details> |
|
|
<details> |
|
|
<details> |
|
|
<summary>Where will the postcard be mailed?<span aria-hidden="true">+</span></summary> |
|
|
<summary>Where will the postcard be mailed?<span aria-hidden="true">+</span></summary> |
|
|
@@ -253,22 +365,56 @@ Response.CodePage = 65001 |
|
|
<details> |
|
|
<details> |
|
|
<summary>What does a campaign cost?<span aria-hidden="true">+</span></summary> |
|
|
<summary>What does a campaign cost?<span aria-hidden="true">+</span></summary> |
|
|
<p>Pricing depends on the campaign, placement, and mailing plan. Request current details for the area you want to reach.</p> |
|
|
<p>Pricing depends on the campaign, placement, and mailing plan. Request current details for the area you want to reach.</p> |
|
|
|
|
|
<a class="button button-small button-primary" href="#contact">Request Details</a> |
|
|
</details> |
|
|
</details> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
</section> |
|
|
|
|
|
|
|
|
<section class="cta-section" id="get-started"> |
|
|
|
|
|
<div class="shell cta-card"> |
|
|
|
|
|
|
|
|
<section class="contact-section" id="contact" aria-labelledby="contact-title"> |
|
|
|
|
|
<div class="shell contact-card"> |
|
|
<div class="cta-rings" aria-hidden="true"></div> |
|
|
<div class="cta-rings" aria-hidden="true"></div> |
|
|
<div> |
|
|
|
|
|
|
|
|
<div class="contact-intro"> |
|
|
<p class="eyebrow eyebrow-on-dark"><span></span> Your neighborhood is waiting</p> |
|
|
<p class="eyebrow eyebrow-on-dark"><span></span> Your neighborhood is waiting</p> |
|
|
<h2>Put your business in the next mailbox moment.</h2> |
|
|
|
|
|
<p>Tell us what you do and where you want to be seen. We will help you explore the right PostcardMojo campaign.</p> |
|
|
|
|
|
|
|
|
<h2 id="contact-title">Interested in a spot on the next card?</h2> |
|
|
|
|
|
<p>Tell us what you do and where you want to be seen. We will help you explore the right PostcardMojo campaign and confirm sizes, pricing, and mail dates.</p> |
|
|
|
|
|
<p class="contact-note">Campaign availability varies by area. We reply within one business day.</p> |
|
|
</div> |
|
|
</div> |
|
|
<div class="cta-actions"> |
|
|
|
|
|
<a class="button button-gold" href="#contact">Request campaign details</a> |
|
|
|
|
|
<span>Campaign availability varies by area.</span> |
|
|
|
|
|
|
|
|
<div class="contact-panel"> |
|
|
|
|
|
<% If contactSent Then %> |
|
|
|
|
|
<p class="contact-success" role="status" tabindex="-1">Thank you! Your message was sent and we will be in touch soon.</p> |
|
|
|
|
|
<% Else %> |
|
|
|
|
|
<form class="contact-form" method="post" action="/contact#contact" novalidate aria-labelledby="contact-title"> |
|
|
|
|
|
<% If UBound(contactErrors) >= 0 Then %> |
|
|
|
|
|
<div class="contact-errors" role="alert" tabindex="-1"> |
|
|
|
|
|
<ul> |
|
|
|
|
|
<% Dim contactErrorIndex : For contactErrorIndex = 0 To UBound(contactErrors) %> |
|
|
|
|
|
<li><%= Server.HTMLEncode(contactErrors(contactErrorIndex)) %></li> |
|
|
|
|
|
<% Next %> |
|
|
|
|
|
</ul> |
|
|
|
|
|
</div> |
|
|
|
|
|
<% End If %> |
|
|
|
|
|
<input type="hidden" name="csrf_token" value="<%= Server.HTMLEncode(ContactCsrfToken()) %>"> |
|
|
|
|
|
<div class="contact-trap" aria-hidden="true"><label>Leave this empty <input type="text" name="zq_trap_field" tabindex="-1" autocomplete="off"></label></div> |
|
|
|
|
|
<label><span>Name <span aria-hidden="true">*</span></span> |
|
|
|
|
|
<input type="text" name="name" maxlength="100" required autocomplete="name" value="<%= Server.HTMLEncode(contactName & "") %>"> |
|
|
|
|
|
</label> |
|
|
|
|
|
<label><span>Email <span aria-hidden="true">*</span></span> |
|
|
|
|
|
<input type="email" name="email" maxlength="150" required autocomplete="email" value="<%= Server.HTMLEncode(contactEmail & "") %>"> |
|
|
|
|
|
</label> |
|
|
|
|
|
<label>Phone |
|
|
|
|
|
<input type="tel" name="phone" maxlength="40" autocomplete="tel" value="<%= Server.HTMLEncode(contactPhone & "") %>"> |
|
|
|
|
|
</label> |
|
|
|
|
|
<label>Business |
|
|
|
|
|
<input type="text" name="business" maxlength="150" autocomplete="organization" value="<%= Server.HTMLEncode(contactBusiness & "") %>"> |
|
|
|
|
|
</label> |
|
|
|
|
|
<label class="contact-wide">How can we help? |
|
|
|
|
|
<textarea name="message" rows="3" maxlength="2000"><%= Server.HTMLEncode(contactMessage & "") %></textarea> |
|
|
|
|
|
</label> |
|
|
|
|
|
<button class="button button-gold" type="submit">Send my interest</button> |
|
|
|
|
|
<p class="contact-privacy">We use your details only to contact you about our services. We never sell or share them. <a href="/privacy">Privacy policy</a></p> |
|
|
|
|
|
</form> |
|
|
|
|
|
<% End If %> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
</section> |
|
|
@@ -284,9 +430,94 @@ Response.CodePage = 65001 |
|
|
<a href="#how-it-works">How it works</a> |
|
|
<a href="#how-it-works">How it works</a> |
|
|
<a href="#faq">FAQ</a> |
|
|
<a href="#faq">FAQ</a> |
|
|
<a href="#contact">Contact</a> |
|
|
<a href="#contact">Contact</a> |
|
|
|
|
|
<a href="/privacy">Privacy</a> |
|
|
</nav> |
|
|
</nav> |
|
|
<small>© <%= Year(Date()) %> PostcardMojo. All rights reserved.</small> |
|
|
<small>© <%= Year(Date()) %> PostcardMojo. All rights reserved.</small> |
|
|
</div> |
|
|
</div> |
|
|
</footer> |
|
|
</footer> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="sticky-cta" id="sticky-cta"> |
|
|
|
|
|
<a class="button button-gold" href="#contact">Get pricing for my area</a> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<script src="/js/nav.js"></script> |
|
|
|
|
|
<script> |
|
|
|
|
|
(function () { |
|
|
|
|
|
var bar = document.getElementById('sticky-cta'); |
|
|
|
|
|
var hero = document.querySelector('.hero'); |
|
|
|
|
|
var contact = document.getElementById('contact'); |
|
|
|
|
|
if (bar && hero && contact && 'IntersectionObserver' in window) { |
|
|
|
|
|
var heroVisible = true; |
|
|
|
|
|
var contactVisible = false; |
|
|
|
|
|
function updateBar() { |
|
|
|
|
|
bar.classList.toggle('is-visible', !heroVisible && !contactVisible); |
|
|
|
|
|
} |
|
|
|
|
|
new IntersectionObserver(function (entries) { |
|
|
|
|
|
heroVisible = entries[0].isIntersecting; |
|
|
|
|
|
updateBar(); |
|
|
|
|
|
}).observe(hero); |
|
|
|
|
|
new IntersectionObserver(function (entries) { |
|
|
|
|
|
contactVisible = entries[0].isIntersecting; |
|
|
|
|
|
updateBar(); |
|
|
|
|
|
}).observe(contact); |
|
|
|
|
|
} |
|
|
|
|
|
})(); |
|
|
|
|
|
</script> |
|
|
|
|
|
|
|
|
|
|
|
<script> |
|
|
|
|
|
(function () { |
|
|
|
|
|
var form = document.querySelector('.contact-form'); |
|
|
|
|
|
var notice = document.querySelector('.contact-errors, .contact-success'); |
|
|
|
|
|
if (notice) notice.focus(); |
|
|
|
|
|
if (!form) return; |
|
|
|
|
|
|
|
|
|
|
|
var rules = [ |
|
|
|
|
|
{ name: 'name', message: 'Please enter your name.' }, |
|
|
|
|
|
{ name: 'email', message: 'Please enter a valid email address.', pattern: /^[^\s@<>,;"]+@[^\s@<>,;"]+\.[A-Za-z]{2,}$/ } |
|
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
|
|
function clearError(field) { |
|
|
|
|
|
var old = document.getElementById('error-' + field.name); |
|
|
|
|
|
if (old) old.remove(); |
|
|
|
|
|
field.removeAttribute('aria-invalid'); |
|
|
|
|
|
field.removeAttribute('aria-describedby'); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function showError(field, message) { |
|
|
|
|
|
clearError(field); |
|
|
|
|
|
var note = document.createElement('p'); |
|
|
|
|
|
note.className = 'field-error'; |
|
|
|
|
|
note.id = 'error-' + field.name; |
|
|
|
|
|
note.textContent = message; |
|
|
|
|
|
field.insertAdjacentElement('afterend', note); |
|
|
|
|
|
field.setAttribute('aria-invalid', 'true'); |
|
|
|
|
|
field.setAttribute('aria-describedby', note.id); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
form.addEventListener('submit', function (event) { |
|
|
|
|
|
var firstInvalid = null; |
|
|
|
|
|
rules.forEach(function (rule) { |
|
|
|
|
|
var field = form.elements[rule.name]; |
|
|
|
|
|
var value = field.value.trim(); |
|
|
|
|
|
var invalid = value.length === 0 || (rule.pattern && !rule.pattern.test(value)); |
|
|
|
|
|
if (invalid) { |
|
|
|
|
|
showError(field, rule.message); |
|
|
|
|
|
if (!firstInvalid) firstInvalid = field; |
|
|
|
|
|
} else { |
|
|
|
|
|
clearError(field); |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
if (firstInvalid) { |
|
|
|
|
|
event.preventDefault(); |
|
|
|
|
|
firstInvalid.focus(); |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
form.addEventListener('input', function (event) { |
|
|
|
|
|
if (event.target.getAttribute('aria-invalid') === 'true') clearError(event.target); |
|
|
|
|
|
}); |
|
|
|
|
|
})(); |
|
|
|
|
|
</script> |
|
|
</body> |
|
|
</body> |
|
|
</html> |
|
|
</html> |