[object Object]

← back to Designer Wallcoverings

New Arrivals weekly campaign: 12-vendor mailer from live mirror + CC builder; draft created d1cb66d7

1100dbaaa3810fb1d7a73aa9696dc1dfe48ce1cb · 2026-07-22 12:33:01 -0700 · Steve

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Files touched

Diff

commit 1100dbaaa3810fb1d7a73aa9696dc1dfe48ce1cb
Author: Steve <steve@designerwallcoverings.com>
Date:   Wed Jul 22 12:33:01 2026 -0700

    New Arrivals weekly campaign: 12-vendor mailer from live mirror + CC builder; draft created d1cb66d7
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---
 mailers/cc-api/build-new-arrivals-campaign.js | 134 ++++++++++++++
 mailers/new-arrivals-launch.html              | 253 ++++++++++++++++++++++++++
 2 files changed, 387 insertions(+)

diff --git a/mailers/cc-api/build-new-arrivals-campaign.js b/mailers/cc-api/build-new-arrivals-campaign.js
new file mode 100644
index 00000000..6715d7e0
--- /dev/null
+++ b/mailers/cc-api/build-new-arrivals-campaign.js
@@ -0,0 +1,134 @@
+'use strict';
+
+/**
+ * build-hollywood-campaign.js — Designer Wallcoverings
+ * A DUPLICATE of build-pr-naturals-campaign.js (same validation + create path),
+ * pointed at ../hollywood-launch.html. Promotes this week's storewide New Arrivals.
+ *
+ *   --dry-run (DEFAULT): prints payload + validation checklist. NO network.
+ *   --confirm          : creates the DRAFT campaign — STILL double-gated by
+ *                        CC_LIVE === '1' inside cc-client. Creating a DRAFT
+ *                        does NOT send; scheduling/sending is a separate gate.
+ */
+
+const fs = require('fs');
+const path = require('path');
+const cc = require('./cc-client');
+
+const MAILER = path.join(__dirname, '..', 'new-arrivals-launch.html');
+
+const argv = process.argv.slice(2);
+const CONFIRM = argv.includes('--confirm');
+const DRY_RUN = argv.includes('--dry-run') || !CONFIRM; // default dry-run
+
+const CAMPAIGN = {
+  name: `New Arrivals Weekly — ${new Date().toISOString().slice(0, 10)}`,
+  subject: 'Just In — De Gournay gilded papers, a Nick Cave floral for Knoll & more new arrivals',
+  preheader: 'This week: gilded Xuan papers, wide-width sisals, scenic murals & statement florals from twelve great houses.',
+  fromName: 'Designer Wallcoverings',
+  fromEmail: 'steve@designerwallcoverings.com',
+  replyTo: 'steve@designerwallcoverings.com',
+  physicalAddress: {
+    address_line1: '15442 Ventura Bl',
+    city: 'Sherman Oaks',
+    state_code: 'CA',
+    postal_code: '91403',
+    country_code: 'US',
+  },
+};
+
+const PLACEHOLDER_ADDRESS_MARKER = '15442 Ventura Boulevard #102';
+
+function loadHtml() {
+  if (!fs.existsSync(MAILER)) throw new Error(`mailer not found: ${MAILER}`);
+  return fs.readFileSync(MAILER, 'utf8');
+}
+function extractImageSrcs(html) {
+  const srcs = []; const re = /<img\b[^>]*?\bsrc\s*=\s*(["'])(.*?)\1/gi; let m;
+  while ((m = re.exec(html)) !== null) srcs.push(m[2]);
+  return srcs;
+}
+const isAbsoluteHttps = (u) => /^https:\/\//i.test(u);
+const unhostedLogoSrcs = (srcs) => srcs.filter((s) => /\/vendor-logos\//i.test(s));
+
+function visibleWallpaperHits(html) {
+  const hits = [];
+  const noComments = html.replace(/<!--[\s\S]*?-->/g, '');
+  const altRe = /\balt\s*=\s*(["'])(.*?)\1/gi; let m;
+  while ((m = altRe.exec(noComments)) !== null) if (/\bwallpapers?\b/i.test(m[2])) hits.push(`alt: "${m[2]}"`);
+  const textOnly = noComments.replace(/<[^>]+>/g, ' ');
+  for (const t of (textOnly.match(/\bwallpapers?\b/gi) || [])) hits.push(`visible text: "${t}"`);
+  return hits;
+}
+
+function runChecklist(html) {
+  const results = []; const add = (name, pass, detail) => results.push({ name, pass, detail });
+  add('subject set', !!CAMPAIGN.subject && CAMPAIGN.subject.trim().length > 0, CAMPAIGN.subject);
+  add('from name + email set', !!CAMPAIGN.fromName && !!CAMPAIGN.fromEmail && CAMPAIGN.fromEmail.includes('@'), `${CAMPAIGN.fromName} <${CAMPAIGN.fromEmail}>`);
+  add('reply-to set', !!CAMPAIGN.replyTo && CAMPAIGN.replyTo.includes('@'), CAMPAIGN.replyTo);
+  const addr = CAMPAIGN.physicalAddress || {};
+  const addrComplete = !!(addr.address_line1 && addr.city && addr.state_code && addr.postal_code && addr.country_code);
+  const addrIsPlaceholder = (addr.address_line1 || '').includes(PLACEHOLDER_ADDRESS_MARKER);
+  add('physical address complete', addrComplete, JSON.stringify(addr));
+  add('physical address non-placeholder', addrComplete && !addrIsPlaceholder, addrIsPlaceholder ? 'matches placeholder marker' : 'confirmed non-placeholder');
+  add('html content non-empty', !!html && html.length > 200, `${html.length} bytes`);
+  const bannedHits = visibleWallpaperHits(html);
+  add('no banned word "Wallpaper" (visible copy + alt)', bannedHits.length === 0, bannedHits.length ? `found:\n      - ${bannedHits.join('\n      - ')}` : 'clean (alt + visible text)');
+  const srcs = extractImageSrcs(html);
+  const nonHttps = srcs.filter((s) => !isAbsoluteHttps(s));
+  add('all image src absolute https', nonHttps.length === 0, nonHttps.length ? `${nonHttps.length}/${srcs.length} not absolute-https` : `${srcs.length}/${srcs.length} absolute-https`);
+  const unhosted = unhostedLogoSrcs(srcs);
+  add('logos hosted at public https (not the un-hosted /vendor-logos/ path)', unhosted.length === 0, unhosted.length ? `${unhosted.length} on un-hosted path` : 'all logos on a confirmed-live host');
+  return results;
+}
+
+function buildPayload(html) {
+  return {
+    name: CAMPAIGN.name,
+    email_campaign_activities: [{
+      format_type: 5,
+      from_name: CAMPAIGN.fromName,
+      from_email: CAMPAIGN.fromEmail,
+      reply_to_email: CAMPAIGN.replyTo,
+      subject: CAMPAIGN.subject,
+      preheader: CAMPAIGN.preheader,
+      html_content: html,
+      physical_address_in_footer: CAMPAIGN.physicalAddress,
+    }],
+  };
+}
+
+async function main() {
+  const html = loadHtml();
+  console.log('='.repeat(72));
+  console.log('New Arrivals Weekly → Constant Contact v3 campaign builder');
+  console.log(`mode: ${CONFIRM ? '--confirm' : '--dry-run (default)'}   CC_LIVE=${process.env.CC_LIVE === '1' ? '1' : '(unset)'}`);
+  console.log('='.repeat(72));
+
+  const payload = buildPayload(html);
+  const printable = JSON.parse(JSON.stringify(payload));
+  printable.email_campaign_activities[0].html_content = `<<${html.length} bytes of HTML — truncated>>\n` + html.slice(0, 300) + '\n…';
+  console.log('\n--- CREATE-CAMPAIGN PAYLOAD (html_content truncated) ---');
+  console.log(JSON.stringify(printable, null, 2));
+
+  console.log('\n--- VALIDATION CHECKLIST ---');
+  const results = runChecklist(html); let failed = 0;
+  for (const r of results) { const mark = r.pass ? 'PASS' : 'FAIL'; if (!r.pass) failed++; console.log(`  [${mark}] ${r.name}`); if (r.detail) console.log(`         ${r.detail}`); }
+  console.log(`\n  ${results.length - failed}/${results.length} checks passed, ${failed} failed.`);
+
+  if (DRY_RUN) {
+    console.log('\nDRY-RUN: no network call made. (default)');
+    process.exitCode = failed > 0 ? 2 : 0;
+    return;
+  }
+  if (failed > 0) { console.log('\nREFUSING to create: validation has FAILs.'); process.exitCode = 2; return; }
+  console.log('\n--confirm + validation clean → creating DRAFT (NO-OPs unless CC_LIVE=1):');
+  const activityId = await cc.createCustomCodeCampaign({
+    name: CAMPAIGN.name, subject: CAMPAIGN.subject, preheader: CAMPAIGN.preheader,
+    fromEmail: CAMPAIGN.fromEmail, fromName: CAMPAIGN.fromName, replyTo: CAMPAIGN.replyTo,
+    htmlContent: html, physicalAddress: CAMPAIGN.physicalAddress, confirm: true,
+  });
+  console.log('result:', activityId);
+}
+
+main().catch((e) => { console.error('[build-new-arrivals] ERROR:', e.message); process.exitCode = 1; });
diff --git a/mailers/new-arrivals-launch.html b/mailers/new-arrivals-launch.html
new file mode 100644
index 00000000..56040a0a
--- /dev/null
+++ b/mailers/new-arrivals-launch.html
@@ -0,0 +1,253 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<!--[if mso]>
+<noscript><xml><o:OfficeDocumentSettings><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings></xml></noscript>
+<![endif]-->
+<title>New Arrivals — fresh this week at Designer Wallcoverings</title>
+<style type="text/css">
+  body, table, td, p, a, li, blockquote { -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; }
+  body { margin: 0 !important; padding: 0 !important; width: 100% !important; background: #f4f1ec; font-family: Georgia, 'Times New Roman', serif; color: #2a2724; }
+  table { border-collapse: collapse !important; }
+  img { -ms-interpolation-mode: bicubic; border: 0; outline: none; text-decoration: none; display: block; }
+  a { color: #1a1a1a; text-decoration: none; }
+  .wrap { width: 100%; background: #f4f1ec; padding: 0; }
+  .container { max-width: 620px; margin: 0 auto; background: #ffffff; }
+  .hero-img { width: 100%; height: auto; display: block; }
+  .thumb-img { width: 100%; height: auto; display: block; }
+  .h1 { font-size: 30px; line-height: 36px; letter-spacing: 0.5px; font-weight: 400; margin: 0; color: #1a1a1a; }
+  .lede { font-size: 15px; line-height: 22px; color: #5a544c; margin: 12px 0 0; }
+  .cta-btn { display: inline-block; padding: 14px 28px; background: #1a1a1a; color: #ffffff !important; font-family: Helvetica, Arial, sans-serif; font-size: 12px; letter-spacing: 2.5px; text-transform: uppercase; text-decoration: none; border-radius: 26px; }
+  .cta-btn:visited, .cta-btn:hover { color: #ffffff !important; }
+  .pill-theme {
+    display: inline-block; margin: 5px 4px; padding: 11px 22px;
+    background-color: #1c1816; border: 1px solid #1c1816; border-radius: 26px;
+    color: #ffffff !important; font-family: Helvetica, Arial, sans-serif; font-size: 11px;
+    letter-spacing: 2px; text-transform: uppercase; text-decoration: none; white-space: nowrap;
+  }
+  .pill-theme:visited, .pill-theme:hover { color: #ffffff !important; }
+  .footer-text { font-family: Helvetica, Arial, sans-serif; font-size: 11px; line-height: 18px; color: #8d8478; }
+  .chip-fallback { display: none; }
+  @media only screen and (max-width: 620px) {
+    .stack { display: block !important; width: 100% !important; }
+    .h1 { font-size: 24px !important; line-height: 30px !important; }
+    .pill-theme { font-size: 10px !important; padding: 10px 16px !important; }
+    .spec-label { font-size: 10px !important; letter-spacing: 1px !important; }
+  }
+  @media only screen and (max-width: 480px) {
+    .chip-row { display: none !important; }
+    .chip-fallback { display: block !important; }
+  }
+  @media (prefers-color-scheme: dark) {
+    .cta-btn { background-color: #1a1a1a !important; color: #ffffff !important; }
+    body, .wrap { background-color: #f4f1ec !important; }
+  }
+</style>
+</head>
+<body style="margin:0;padding:0;background:#f4f1ec;">
+<table role="presentation" class="wrap" width="100%" cellspacing="0" cellpadding="0" border="0">
+<tr><td align="center" style="padding: 20px 0;">
+
+  <!-- ============ CONTAINER ============ -->
+  <table role="presentation" class="container" width="620" cellspacing="0" cellpadding="0" border="0" style="background:#ffffff;">
+
+    <!-- ============ TOP — DESIGNER WALLCOVERINGS LOGO ============ -->
+    <tr><td align="center" style="padding: 28px 0 14px; border-bottom: 1px solid #e8e2d6;">
+      <a href="https://www.designerwallcoverings.com/collections/new-arrivals?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank" style="text-decoration:none;color:#1a1a1a;">
+        <div style="font-family: Georgia, 'Times New Roman', serif; font-size: 28px; letter-spacing: 6px; font-weight: 400; color: #1a1a1a; text-transform: uppercase;">Designer Wallcoverings</div>
+        <div style="font-family: Helvetica, Arial, sans-serif; font-size: 9px; letter-spacing: 4px; color: #8d8478; margin-top: 4px; text-transform: uppercase;">est. 2003 · to the trade</div>
+      </a>
+    </td></tr>
+
+    <!-- ============ NAV — single link ============ -->
+    <tr><td align="center" style="padding: 12px 14px; border-bottom: 1px solid #e8e2d6; font-family: Helvetica, Arial, sans-serif; font-size: 10px; letter-spacing: 4px; text-transform: uppercase;">
+      <a href="https://www.designerwallcoverings.com/?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" style="color:#8d8478; text-decoration:none;">designerwallcoverings.com</a>
+    </td></tr>
+
+    <!-- ============ HERO — Rebel Walls Flower Fall in the room ============ -->
+    <tr><td style="padding: 0; min-height: 300px; background-color: #d8d3c9;" bgcolor="#d8d3c9">
+      <a href="https://www.designerwallcoverings.com/products/flower-fall-pearl-wallcoverings-dwrw-361341?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank">
+        <img src="https://cdn.shopify.com/s/files/1/0015/4117/7456/files/R19251_interior1.jpg?v=1784706015&width=1240&format=pjpg" alt="Flower Fall wallcovering in Pearl by Rebel Walls styled in a serene bedroom" width="620" style="width:100%; max-width:620px; height:auto; display:block;">
+      </a>
+    </td></tr>
+
+    <!-- ============ ANNOUNCEMENT + EDITORIAL LEDE + PRIMARY CTA ============ -->
+    <tr><td style="padding: 32px 36px 8px;" align="center">
+      <p style="font-family: Helvetica, Arial, sans-serif; font-size: 11px; letter-spacing: 3px; text-transform: uppercase; color: #7a6030; margin: 0;">New Arrivals · Fresh This Week</p>
+      <p style="font-family: Georgia, 'Times New Roman', serif; font-size: 28px; line-height: 34px; letter-spacing: 1px; color: #1a1a1a; text-align: center; margin: 14px 0 0;">Just Landed on Our Walls<br><span style="font-size:15px; letter-spacing:2px; color:#5a544c;">the newest from twelve great houses</span></p>
+      <p class="lede" style="font-family: Georgia, 'Times New Roman', serif; font-size: 15px; line-height: 22px; color: #5a544c; margin: 18px 32px 0; max-width: 480px;">
+        Gilded Xuan papers from De Gournay, a Nick Cave floral for Knoll, wide-width sisals from Thibaut and Groundworks, hand-drawn stripes from Coordonn&eacute; — this week's arrivals span the spectrum, and every one is stocked at Designer Wallcoverings.
+      </p>
+      <p style="margin: 28px 0 0;">
+        <a href="https://www.designerwallcoverings.com/collections/new-arrivals?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank" class="cta-btn" style="display:inline-block; padding:14px 36px; background:#1a1a1a; background-color:#1a1a1a !important; color:#ffffff !important; font-family: Helvetica, Arial, sans-serif; font-size:11px; letter-spacing:3px; text-transform:uppercase; text-decoration:none; border-radius:26px;">Shop All New Arrivals</a>
+      </p>
+    </td></tr>
+
+    <!-- ============ FROSTED PILL BAND ============ -->
+    <tr><td align="center" style="padding: 0; background:#1c1816; background: linear-gradient(180deg, #221d1a 0%, #1c1816 100%);">
+      <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr><td align="center" style="padding: 24px 18px 28px;">
+          <div style="font-family:Georgia,'Times New Roman',serif; font-style:italic; font-size:18px; line-height:26px; color:#f4f1ec; margin:0;">Gilded papers, statement florals, quiet sisals &amp; scenic murals — new every week</div>
+        </td></tr>
+      </table>
+    </td></tr>
+
+    <!-- ============ FRESH FROM THE HOUSES — five chips (hidden on phones for a text line) ============ -->
+    <tr><td style="padding: 40px 24px 0;" align="center">
+      <p style="font-family: Helvetica, Arial, sans-serif; font-size: 10px; letter-spacing: 3px; text-transform: uppercase; color: #8d8478; margin: 0 0 18px;">Fresh From the Houses</p>
+      <table role="presentation" class="chip-row" width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td width="20%" valign="top" style="padding: 0 3px;" align="center">
+            <a href="https://www.designerwallcoverings.com/products/anthology-stria-stone-graphite-mink-wallcovering-anthology?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank">
+              <img src="https://cdn.shopify.com/s/files/1/0015/4117/7456/files/ESHE131797.jpg?v=1784735554&width=232&height=232&crop=center" alt="Stria wallcovering in Stone and Graphite by Anthology" width="110" style="width:100%; max-width:110px; height:auto;">
+              <p class="spec-label" style="font-family: Helvetica, Arial, sans-serif; font-size: 11px; letter-spacing: 2px; text-transform: uppercase; color: #1a1a1a; margin: 8px 0 0;">Anthology</p>
+            </a>
+          </td>
+          <td width="20%" valign="top" style="padding: 0 3px;" align="center">
+            <a href="https://www.designerwallcoverings.com/products/carnegie-blair-2?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank">
+              <img src="https://cdn.shopify.com/s/files/1/0015/4117/7456/files/3b939cb6099480f87495278c2df300f8_9a832cf5-8d1b-426c-89a1-7029d87520e7.jpg?v=1784740002&width=232&height=232&crop=center" alt="Blair textile wallcovering by Carnegie" width="110" style="width:100%; max-width:110px; height:auto;">
+              <p class="spec-label" style="font-family: Helvetica, Arial, sans-serif; font-size: 11px; letter-spacing: 2px; text-transform: uppercase; color: #1a1a1a; margin: 8px 0 0;">Carnegie</p>
+            </a>
+          </td>
+          <td width="20%" valign="top" style="padding: 0 3px;" align="center">
+            <a href="https://www.designerwallcoverings.com/products/cullen-sage-wallpaper-4202-408171?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank">
+              <img src="https://cdn.shopify.com/s/files/1/0015/4117/7456/files/0162832_cullen-sage-faux-linen-wallpaper.jpg?v=1784209068&width=232&height=232&crop=center" alt="Cullen faux linen wallcovering in Sage by Jeffrey Stevens" width="110" style="width:100%; max-width:110px; height:auto;">
+              <p class="spec-label" style="font-family: Helvetica, Arial, sans-serif; font-size: 11px; letter-spacing: 2px; text-transform: uppercase; color: #1a1a1a; margin: 8px 0 0;">Jeffrey Stevens</p>
+            </a>
+          </td>
+          <td width="20%" valign="top" style="padding: 0 3px;" align="center">
+            <a href="https://www.designerwallcoverings.com/products/cabana-solid-color-black-hollywood-wallcoverings?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank">
+              <img src="https://cdn.shopify.com/s/files/1/0015/4117/7456/files/solid_c_cabana-black.jpg?v=1784127736&width=232&height=232&crop=center" alt="Cabana solid wallcovering in Black by Hollywood Wallcoverings" width="110" style="width:100%; max-width:110px; height:auto;">
+              <p class="spec-label" style="font-family: Helvetica, Arial, sans-serif; font-size: 11px; letter-spacing: 2px; text-transform: uppercase; color: #1a1a1a; margin: 8px 0 0;">Hollywood</p>
+            </a>
+          </td>
+          <td width="20%" valign="top" style="padding: 0 3px;" align="center">
+            <a href="https://www.designerwallcoverings.com/products/temple-of-beauty-light-blue-mural-source?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank">
+              <img src="https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Temple-of-Beauty_4113__58494.1779224614.386.513.jpg?v=1784735495&width=232&height=232&crop=center" alt="Temple of Beauty scenic mural in Light Blue by Mural Source" width="110" style="width:100%; max-width:110px; height:auto;">
+              <p class="spec-label" style="font-family: Helvetica, Arial, sans-serif; font-size: 11px; letter-spacing: 2px; text-transform: uppercase; color: #1a1a1a; margin: 8px 0 0;">Mural Source</p>
+            </a>
+          </td>
+        </tr>
+      </table>
+      <div class="chip-fallback" style="display:none;">
+        <a href="https://www.designerwallcoverings.com/collections/new-arrivals?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank" style="font-family: Helvetica, Arial, sans-serif; font-size: 11px; letter-spacing: 2px; text-transform: uppercase; color: #7a6030; text-decoration: none;">Anthology · Carnegie · Jeffrey Stevens · Hollywood · Mural Source</a>
+      </div>
+    </td></tr>
+
+    <!-- ============ 6 FEATURED PATTERNS ============ -->
+    <tr><td style="padding: 48px 24px 16px;" align="center">
+      <p style="font-family: Helvetica, Arial, sans-serif; font-size: 10px; letter-spacing: 3px; text-transform: uppercase; color: #8d8478; margin: 0 0 24px;">New This Week</p>
+      <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td class="stack" width="33%" valign="top" style="padding: 0 6px;" align="center">
+            <a href="https://www.designerwallcoverings.com/products/coutts-deep-rich-gold-gilded-xuan-paper?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank">
+              <img src="https://cdn.shopify.com/s/files/1/0015/4117/7456/files/06052020101555.jpg?v=1784731138&width=360&height=360&crop=center" alt="Coutts gilded Xuan paper in Deep Rich Gold by De Gournay" class="thumb-img" width="180" style="width:100%; max-width:180px; height:auto;">
+              <p style="font-family: Georgia, serif; font-size: 13px; color: #1a1a1a; margin: 12px 0 2px;">Coutts — Deep Rich Gold</p>
+              <p style="font-family: Helvetica, Arial, sans-serif; font-size: 10px; letter-spacing: 1.5px; color: #8d8478; margin: 0;">De Gournay</p>
+            </a>
+          </td>
+          <td class="stack" width="33%" valign="top" style="padding: 0 6px;" align="center">
+            <a href="https://www.designerwallcoverings.com/products/big-floral-by-nick-cave-grayscale-knoll?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank">
+              <img src="https://cdn.shopify.com/s/files/1/0015/4117/7456/files/KT-BIG_FLORAL_BY_NICK_CAVE-003_0.jpg?v=1784731861&width=360&height=360&crop=center" alt="Big Floral by Nick Cave wallcovering in Grayscale for Knoll" class="thumb-img" width="180" style="width:100%; max-width:180px; height:auto;">
+              <p style="font-family: Georgia, serif; font-size: 13px; color: #1a1a1a; margin: 12px 0 2px;">Big Floral by Nick Cave</p>
+              <p style="font-family: Helvetica, Arial, sans-serif; font-size: 10px; letter-spacing: 1.5px; color: #8d8478; margin: 0;">Knoll</p>
+            </a>
+          </td>
+          <td class="stack" width="33%" valign="top" style="padding: 0 6px;" align="center">
+            <a href="https://www.designerwallcoverings.com/products/luta-sisal-wide-width-off-white-and-mist-dwtt-74393?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank">
+              <img src="https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TWW14523_a6edc350-ea15-4175-a458-4634cfcb036e.jpg?v=1784475617&width=360&height=360&crop=center" alt="Luta wide-width sisal wallcovering in Off White and Mist by Thibaut" class="thumb-img" width="180" style="width:100%; max-width:180px; height:auto;">
+              <p style="font-family: Georgia, serif; font-size: 13px; color: #1a1a1a; margin: 12px 0 2px;">Luta Sisal — Off White &amp; Mist</p>
+              <p style="font-family: Helvetica, Arial, sans-serif; font-size: 10px; letter-spacing: 1.5px; color: #8d8478; margin: 0;">Thibaut</p>
+            </a>
+          </td>
+        </tr>
+        <tr>
+          <td class="stack" width="33%" valign="top" style="padding: 32px 6px 0;" align="center">
+            <a href="https://www.designerwallcoverings.com/products/dwkk-158384?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank">
+              <img src="https://cdn.shopify.com/s/files/1/0015/4117/7456/files/GWP-3746.513.0.jpg?v=1784734880&width=360&height=360&crop=center" alt="Flutter Sisal wallcovering in The Blues by Groundworks" class="thumb-img" width="180" style="width:100%; max-width:180px; height:auto;">
+              <p style="font-family: Georgia, serif; font-size: 13px; color: #1a1a1a; margin: 12px 0 2px;">Flutter Sisal — The Blues</p>
+              <p style="font-family: Helvetica, Arial, sans-serif; font-size: 10px; letter-spacing: 1.5px; color: #8d8478; margin: 0;">Groundworks</p>
+            </a>
+          </td>
+          <td class="stack" width="33%" valign="top" style="padding: 32px 6px 0;" align="center">
+            <a href="https://www.designerwallcoverings.com/products/rolling-stripes-bone-coordonne?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank">
+              <img src="https://cdn.shopify.com/s/files/1/0015/4117/7456/files/rolling-stripes-bone-coordonne.jpg?v=1784738397&width=360&height=360&crop=center" alt="Rolling Stripes wallcovering in Bone by Coordonne" class="thumb-img" width="180" style="width:100%; max-width:180px; height:auto;">
+              <p style="font-family: Georgia, serif; font-size: 13px; color: #1a1a1a; margin: 12px 0 2px;">Rolling Stripes — Bone</p>
+              <p style="font-family: Helvetica, Arial, sans-serif; font-size: 10px; letter-spacing: 1.5px; color: #8d8478; margin: 0;">Coordonn&eacute;</p>
+            </a>
+          </td>
+          <td class="stack" width="33%" valign="top" style="padding: 32px 6px 0;" align="center">
+            <a href="https://www.designerwallcoverings.com/products/vienna-truffle-ruby-wrap-wallcovering-phillipe-romano?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank">
+              <img src="https://cdn.shopify.com/s/files/1/0015/4117/7456/files/MDD3074.jpg?v=1784739209&width=360&height=360&crop=center" alt="Vienna wallcovering in Truffle Ruby Wrap by Phillipe Romano" class="thumb-img" width="180" style="width:100%; max-width:180px; height:auto;">
+              <p style="font-family: Georgia, serif; font-size: 13px; color: #1a1a1a; margin: 12px 0 2px;">Vienna — Truffle Ruby Wrap</p>
+              <p style="font-family: Helvetica, Arial, sans-serif; font-size: 10px; letter-spacing: 1.5px; color: #8d8478; margin: 0;">Phillipe Romano</p>
+            </a>
+          </td>
+        </tr>
+      </table>
+    </td></tr>
+
+    <!-- ============ IN THE ROOM — full-bleed scenic ============ -->
+    <tr><td style="padding: 24px 0 0; min-height: 320px; background-color: #c3ccd4;" bgcolor="#c3ccd4">
+      <a href="https://www.designerwallcoverings.com/products/temple-of-beauty-light-blue-mural-source?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank">
+        <img src="https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Temple-of-Beauty_4113__58494.1779224614.386.513.jpg?v=1784735495&width=1240&format=pjpg" alt="Temple of Beauty scenic mural in Light Blue by Mural Source across a full wall" width="620" style="width:100%; max-width:620px; height:auto; display:block;">
+      </a>
+      <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" style="background:#ffffff;">
+        <tr><td align="center" style="padding: 16px 36px 0; background:#ffffff;">
+          <p style="font-family: Georgia, 'Times New Roman', serif; font-style: italic; font-size: 14px; line-height: 21px; color: #5a544c; margin: 0;">Temple of Beauty in Light Blue — a scenic that turns one wall into the whole story.</p>
+        </td></tr>
+      </table>
+    </td></tr>
+
+    <!-- ============ CLOSING CTA — memo samples front-loaded ============ -->
+    <tr><td align="center" style="padding: 48px 36px 24px; border-top: 1px solid #e8e2d6; background:#ffffff;">
+      <p style="font-family: Georgia, serif; font-size: 14px; line-height: 22px; color: #5a544c; margin: 0;">
+        Request a <em>memo sample</em> of any pattern — or shop everything that landed this week at trade pricing.
+      </p>
+      <p style="margin: 24px 0 0;">
+        <a href="https://www.designerwallcoverings.com/collections/new-arrivals?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank" class="cta-btn" style="display:inline-block; padding:14px 36px; background:#1a1a1a; background-color:#1a1a1a !important; color:#ffffff !important; font-family: Helvetica, Arial, sans-serif; font-size:11px; letter-spacing:3px; text-transform:uppercase; text-decoration:none; border-radius:26px;">Shop All New Arrivals</a>
+      </p>
+    </td></tr>
+
+    <!-- ============ BOTTOM — DW WORDMARK (brand close, room to breathe) ============ -->
+    <tr><td align="center" style="padding: 48px 24px 32px; border-top: 1px solid #e8e2d6;">
+      <a href="https://www.designerwallcoverings.com/collections/new-arrivals?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank" style="text-decoration:none;">
+        <div style="font-family: Georgia, 'Times New Roman', serif; font-size: 22px; letter-spacing: 5px; color: #1a1a1a; text-transform: uppercase;">Designer Wallcoverings</div>
+        <div style="font-family: Helvetica, Arial, sans-serif; font-size: 9px; letter-spacing: 4px; color: #7a6030; margin-top: 6px; text-transform: uppercase;">New Arrivals · July 2026</div>
+        <div style="font-family: Georgia, 'Times New Roman', serif; font-style: italic; font-size: 12px; color: #8d8478; margin-top: 10px;">To the trade — Los Angeles, since 2003</div>
+      </a>
+    </td></tr>
+
+    <!-- ============ SHOP BY CATEGORY — pills ============ -->
+    <tr><td align="center" style="padding: 4px 18px 36px; background:#ffffff; border-top: 1px solid #e8e2d6;">
+      <div style="font-family:Helvetica,Arial,sans-serif; font-size:10px; letter-spacing:3px; text-transform:uppercase; color:#8d8478; margin:24px 0 18px;">Shop by Category</div>
+      <a href="https://www.designerwallcoverings.com/collections/new-arrivals?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank" class="pill-theme" style="display:inline-block; margin:5px 4px; padding:11px 22px; background-color:#7a6030; border:1px solid #7a6030; border-radius:26px; color:#ffffff; font-family:Helvetica,Arial,sans-serif; font-size:11px; letter-spacing:2px; text-transform:uppercase; text-decoration:none; white-space:nowrap;">New Arrivals</a>
+      <a href="https://www.designerwallcoverings.com/collections/grasscloth?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank" class="pill-theme" style="display:inline-block; margin:5px 4px; padding:11px 22px; background-color:#1c1816; border:1px solid #1c1816; border-radius:26px; color:#ffffff; font-family:Helvetica,Arial,sans-serif; font-size:11px; letter-spacing:2px; text-transform:uppercase; text-decoration:none; white-space:nowrap;">Grasscloth</a>
+      <a href="https://www.designerwallcoverings.com/collections/murals?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank" class="pill-theme" style="display:inline-block; margin:5px 4px; padding:11px 22px; background-color:#1c1816; border:1px solid #1c1816; border-radius:26px; color:#ffffff; font-family:Helvetica,Arial,sans-serif; font-size:11px; letter-spacing:2px; text-transform:uppercase; text-decoration:none; white-space:nowrap;">Murals</a>
+      <a href="https://www.designerwallcoverings.com/collections/sisal?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank" class="pill-theme" style="display:inline-block; margin:5px 4px; padding:11px 22px; background-color:#1c1816; border:1px solid #1c1816; border-radius:26px; color:#ffffff; font-family:Helvetica,Arial,sans-serif; font-size:11px; letter-spacing:2px; text-transform:uppercase; text-decoration:none; white-space:nowrap;">Sisal</a>
+      <a href="https://www.designerwallcoverings.com/collections/mica?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank" class="pill-theme" style="display:inline-block; margin:5px 4px; padding:11px 22px; background-color:#1c1816; border:1px solid #1c1816; border-radius:26px; color:#ffffff; font-family:Helvetica,Arial,sans-serif; font-size:11px; letter-spacing:2px; text-transform:uppercase; text-decoration:none; white-space:nowrap;">Mica</a>
+      <a href="https://www.designerwallcoverings.com/pages/shop-by-color?utm_source=email&utm_medium=mailer&utm_campaign=new-arrivals-2026-07" target="_blank" class="pill-theme" style="display:inline-block; margin:5px 4px; padding:11px 22px; background-color:#1c1816; border:1px solid #1c1816; border-radius:26px; color:#ffffff; font-family:Helvetica,Arial,sans-serif; font-size:11px; letter-spacing:2px; text-transform:uppercase; text-decoration:none; white-space:nowrap;">Shop by Color</a>
+    </td></tr>
+
+    <!-- ============ FOOTER (CAN-SPAM) ============ -->
+    <tr><td align="center" style="padding: 32px 36px; background: #f4f1ec; border-top: 1px solid #e8e2d6;">
+      <p class="footer-text" style="font-family: Helvetica, Arial, sans-serif; font-size: 11px; line-height: 18px; color: #8d8478; margin: 0 0 8px;">
+        <strong style="color:#5a544c; letter-spacing: 1px;">DESIGNER WALLCOVERINGS</strong><br>
+        15442 Ventura Bl · Sherman Oaks, CA 91403 · 1-888-373-4564<br>
+        info@designerwallcoverings.com · designerwallcoverings.com
+      </p>
+      <p class="footer-text" style="font-family: Helvetica, Arial, sans-serif; font-size: 10px; line-height: 16px; color: #8d8478; margin: 16px 0 0;">
+        You're receiving this email because you've shopped or registered with Designer Wallcoverings.<br>
+        Unsubscribe and preference links appear below (added automatically by Constant Contact).
+      </p>
+    </td></tr>
+
+  </table>
+  <!-- ============ /CONTAINER ============ -->
+
+</td></tr>
+</table>
+</body>
+</html>

← 573fac58 cc-api: survive Constant Contact refresh-token rotation (cac  ·  back to Designer Wallcoverings  ·  New Arrivals mailer: remove Temple of Beauty in-the-room sec f5cc767f →