← back to Marketing Command Center
data/campaign-drafts/build-suede-edit.mjs
114 lines
// Build "The Suede Edit" DW email — Commercial-Edit template, VERIFIED live data 2026-08-26.
// Novasuede™ + Ultrasuede™ + their benefits, links to collections. Clone of build-classics.mjs.
import fs from 'fs';
const SITE = 'https://www.designerwallcoverings.com'; // www is canonical (bare host 301s)
const PDP = SITE + '/products/';
const lines = [
{ name: 'Novasuede™', col: 'novasuede', tag: 'Palette depth — 176 microfiber-suede colors', picks: [
{ name: 'Novasuede™ — Acorn', color: 'Warm Tan', h: 'novasuede™-acorn', img: 'https://cdn.shopify.com/s/files/1/0015/4117/7456/files/novasuede-acorn.jpg?v=1761251816' },
{ name: 'Novasuede™ — Baltic', color: 'Deep Blue', h: 'novasuede™-baltic', img: 'https://cdn.shopify.com/s/files/1/0015/4117/7456/files/novasuede-baltic.jpg?v=1761251833' },
{ name: 'Novasuede™ — Aubergine', color: 'Plum', h: 'novasuede™-aubergine', img: 'https://cdn.shopify.com/s/files/1/0015/4117/7456/files/novasuede-aubergine.jpg?v=1761251830' },
]},
{ name: 'Ultrasuede™', col: 'ultrasuede', tag: 'The original microsuede — contract-proven', picks: [
{ name: 'Ultrasuede™ — Black Onyx', color: 'Black', h: 'ultra_2730', img: 'https://cdn.shopify.com/s/files/1/0015/4117/7456/products/Ultrasuede_DesignerWallcoverings_5538-5709.jpg?v=1663623335' },
{ name: 'Ultrasuede™ — Cobalt', color: 'Blue', h: 'ultra_2130', img: 'https://cdn.shopify.com/s/files/1/0015/4117/7456/products/Ultrasuede_DesignerWallcoverings_5538-2877.jpg?v=1663623241' },
{ name: 'Ultrasuede™ — Rose Quartz',color: 'Light Pink', h: 'ultrasuede-rose-quartz-light-pink-ultra-3070', img: 'https://cdn.shopify.com/s/files/1/0015/4117/7456/files/ultrasuede-rose-quartz-light-pink-ultra-3070-30024564146227.jpg?v=1785464181' },
]},
];
// Benefits band — conservative, defensible claims (the "and their benefits" ask)
const benefits = [
['Cleanable', 'Spot-clean with soap & water — holds up to real use.'],
['Durable', 'Heavy-duty abrasion resistance for wall & seat.'],
['Color retention', 'Engineered microfiber built to hold its tone — ask for the spec sheet.'],
['Dual-purpose', 'One material for wallcovering, upholstery & panels.'],
['Easy to work', 'Breathable & supple — wraps panels & walls seamlessly.'],
['A full palette', '176 Novasuede colors & the complete Ultrasuede range.'],
];
// Explore row — 6 commercial/contract brands, all verified live (200, www host) 2026-08-26
const cats = [
{ label: 'Koroseal', h: 'koroseal' },
{ label: 'Wolf-Gordon', h: 'wolf-gordon' },
{ label: 'Carnegie', h: 'carnegie' },
{ label: 'Innovations', h: 'innovations' },
{ label: 'Hollywood', h: 'hollywood-wallcoverings' },
{ label: 'Maya Romanoff', h: 'maya-romanoff' },
];
const card = (p) => `
<td width="33.33%" valign="top" style="padding:0 5px;">
<a href="${PDP}${encodeURIComponent(p.h)}" style="text-decoration:none;color:inherit;display:block;">
<img src="${p.img}" alt="${p.name} — ${p.color}" width="176" style="width:100%;height:150px;object-fit:cover;display:block;border:1px solid #e4e0d6;">
<div style="font-size:13px;color:#20211f;margin-top:8px;line-height:1.3;">${p.name}</div>
<div style="font-size:12px;color:#8a8578;margin-top:2px;">${p.color}</div>
</a>
</td>`;
const lineBlock = (L) => `
<tr><td style="padding:22px 30px 4px;border-top:1px solid #ece8de;">
<div style="font-size:15px;letter-spacing:2px;text-transform:uppercase;color:#20211f;"><a href="${SITE}/collections/${L.col}" style="color:#20211f;text-decoration:none;">${L.name}</a></div>
<div style="font-size:12px;color:#8a8578;margin:3px 0 12px;">${L.tag}</div>
</td></tr>
<tr><td style="padding:0 25px 8px;">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0"><tr>${L.picks.map(card).join('')}</tr></table>
</td></tr>
<tr><td align="center" style="padding:4px 30px 18px;">
<a href="${SITE}/collections/${L.col}" style="display:inline-block;background:#20211f;color:#ffffff;text-decoration:none;font-size:12px;letter-spacing:2px;text-transform:uppercase;padding:11px 26px;">Shop ${L.name}</a>
</td></tr>`;
const benefitCell = (b) => `
<td width="33.33%" valign="top" style="padding:10px 10px;">
<div style="font-size:12px;letter-spacing:1px;text-transform:uppercase;color:#9a7b3f;">${b[0]}</div>
<div style="font-size:12px;line-height:1.5;color:#4a4940;margin-top:4px;">${b[1]}</div>
</td>`;
const html = `<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>The Suede Edit</title></head>
<body style="margin:0;padding:0;background:#f3f1ec;font-family:Georgia,'Times New Roman',serif;color:#20211f;">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="background:#f3f1ec;"><tr><td align="center" style="padding:26px 12px;">
<table role="presentation" width="600" cellpadding="0" cellspacing="0" style="width:600px;max-width:600px;background:#ffffff;border:1px solid #e4e0d6;">
<tr><td align="center" style="padding:26px 30px 14px;border-bottom:1px solid #ece8de;">
<a href="${SITE}" style="text-decoration:none;color:#20211f;display:inline-block;">
<div style="font-size:22px;letter-spacing:3px;text-transform:uppercase;">Designer Wallcoverings</div>
</a>
<div style="font-size:12px;letter-spacing:2px;color:#8a8578;margin-top:6px;">TO THE TRADE · SINCE 2003</div>
</td></tr>
<tr><td align="center" style="padding:28px 34px 6px;">
<div style="font-size:13px;letter-spacing:3px;text-transform:uppercase;color:#9a7b3f;">The Suede Edit</div>
<div style="font-size:29px;line-height:1.25;margin:12px 0 10px;">How to Specify Faux Suede<br>Novasuede™ or Ultrasuede™?</div>
<div style="font-size:15px;line-height:1.6;color:#4a4940;">Two microfiber suede lines with the hand of real suede and none of the fragility. Reach for <strong>Novasuede™</strong> when you need <strong>palette depth</strong> — 176 colors, wall to seat. Reach for the original <strong>Ultrasuede™</strong> when the job is <strong>contract-proven</strong> and the spec has to hold. Both are cleanable, dual-purpose, and stocked to the trade — explore the newest colorways below.</div>
</td></tr>
<!-- BENEFITS BAND -->
<tr><td style="padding:22px 20px 4px;">
<div style="border-top:1px solid #ece8de;"></div>
<div align="center" style="font-size:11px;letter-spacing:3px;text-transform:uppercase;color:#8a8578;padding:16px 0 6px;">Why Microfiber Suede</div>
<table role="presentation" width="100%" cellpadding="0" cellspacing="0">
<tr>${benefits.slice(0,3).map(benefitCell).join('')}</tr>
<tr>${benefits.slice(3,6).map(benefitCell).join('')}</tr>
</table>
</td></tr>
${lines.map(lineBlock).join('')}
<tr><td align="center" style="padding:22px 34px 8px;border-top:1px solid #ece8de;">
<div style="font-size:14px;line-height:1.6;color:#4a4940;margin-bottom:16px;">Request a memo sample of any colorway — or explore both suede lines at trade pricing.</div>
<a href="${SITE}/collections/suede" style="display:inline-block;background:#9a7b3f;color:#ffffff;text-decoration:none;font-size:13px;letter-spacing:2px;text-transform:uppercase;padding:13px 30px;">Shop All Suede</a>
</td></tr>
<tr><td align="center" style="padding:18px 34px 4px;">
<div style="font-size:11px;letter-spacing:2px;text-transform:uppercase;color:#8a8578;margin-bottom:10px;">Explore Commercial & Contract Lines</div>
<div style="font-size:13px;color:#4a4940;">${cats.map(c=>`<a href="${SITE}/collections/${c.h}" style="color:#4a4940;text-decoration:none;border-bottom:1px solid #d8d3c6;">${c.label}</a>`).join(' · ')}</div>
</td></tr>
<tr><td align="center" style="padding:26px 34px 30px;border-top:1px solid #ece8de;">
<div style="font-size:14px;letter-spacing:2px;text-transform:uppercase;">Designer Wallcoverings</div>
<div style="font-size:12px;color:#8a8578;margin:6px 0 12px;">The Suede Edit · August 2026 · To the trade — Los Angeles, since 2003</div>
<div style="font-size:11px;line-height:1.7;color:#9a958a;">Designer Wallcoverings & Fabrics · 15442 Ventura Bl, Sherman Oaks, CA 91403 · (888) 373-4564<br>You received this because you're a Designer Wallcoverings customer or trade contact.<br><a href="{{unsubscribe_url}}" style="color:#9a958a;">Unsubscribe</a> | <a href="{{update_profile_url}}" style="color:#9a958a;">Update Profile</a></div>
</td></tr>
</table>
</td></tr></table></body></html>`;
const out = process.argv[2] || '/Users/macstudio3/Projects/marketing-command-center/data/campaign-drafts/the-suede-edit-2026-08-26.html';
fs.writeFileSync(out, html);
console.log('bytes:', html.length, '· lines:', lines.length, '· picks:', lines.reduce((n,l)=>n+l.picks.length,0), '· ->', out);