[object Object]

← back to Dw Validator Debug TK11314

commercial mailer: swap static poster for auto-animating flip-book GIF (no play button)

91e000bd11ee2c4b887a384089c7e3d8360bb3b8 · 2026-08-13 10:59:50 -0700 · Steve Abrams

Files touched

Diff

commit 91e000bd11ee2c4b887a384089c7e3d8360bb3b8
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Thu Aug 13 10:59:50 2026 -0700

    commercial mailer: swap static poster for auto-animating flip-book GIF (no play button)
---
 mailers/cc-api/test-send.js                    |  2 +-
 mailers/cc-api/update-showcase-draft.js        | 43 ++++++++++++++++++++++++++
 mailers/commercial-wallcoverings-showcase.html |  6 ++--
 3 files changed, 46 insertions(+), 5 deletions(-)

diff --git a/mailers/cc-api/test-send.js b/mailers/cc-api/test-send.js
index a70881ef..3284d157 100644
--- a/mailers/cc-api/test-send.js
+++ b/mailers/cc-api/test-send.js
@@ -31,7 +31,7 @@ function post(pathname, token, body) {
   const token = await cc.getAccessToken();
   const r = await post(`/emails/activities/${activityId}/tests`, token, {
     email_addresses: emails,
-    personal_message: 'Preview — The Classics (Kravet-family chinoiserie/traditional). Draft only, not sent to any list.',
+    personal_message: 'Preview — The Commercial Edit (8 contract houses, 3 picks each) + narrated flip-book. Draft only, not sent to any list.',
   });
   console.log('test-send HTTP', r.status);
   console.log(r.body || '(empty body = accepted)');
diff --git a/mailers/cc-api/update-showcase-draft.js b/mailers/cc-api/update-showcase-draft.js
new file mode 100644
index 00000000..4180f5a5
--- /dev/null
+++ b/mailers/cc-api/update-showcase-draft.js
@@ -0,0 +1,43 @@
+'use strict';
+
+/**
+ * update-showcase-draft.js — push the current commercial-wallcoverings-showcase.html
+ * into the EXISTING Constant Contact DRAFT activity (PUT /v3/emails/activities/{id}).
+ * Updating a DRAFT's content is not a send. Gated by CC_LIVE=1 AND --confirm.
+ *
+ *   node update-showcase-draft.js            # dry-run (NO-OP)
+ *   CC_LIVE=1 node update-showcase-draft.js --confirm
+ */
+
+const fs = require('fs');
+const path = require('path');
+const cc = require('./cc-client');
+
+const ACTIVITY_ID = '78b6fcff-b859-4749-8fa1-2924eb0f5a17';
+const MAILER = path.join(__dirname, '..', 'commercial-wallcoverings-showcase.html');
+const CONFIRM = process.argv.slice(2).includes('--confirm');
+
+const CAMPAIGN = {
+  subject: 'The Commercial Edit — 8 contract houses, 3 picks each',
+  preheader: 'Koroseal, Maharam, Knoll, Carnegie, Designtex, Wolf Gordon, Hollywood & Majilite — commercial wallcoverings at trade pricing.',
+  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',
+  },
+};
+
+async function main() {
+  const html = fs.readFileSync(MAILER, 'utf8');
+  console.log(`[update-draft] activity ${ACTIVITY_ID}  html=${html.length} bytes  confirm=${CONFIRM}  CC_LIVE=${process.env.CC_LIVE === '1' ? '1' : '(unset)'}`);
+  const res = await cc.updateCampaignActivity(ACTIVITY_ID, {
+    subject: CAMPAIGN.subject, preheader: CAMPAIGN.preheader,
+    fromEmail: CAMPAIGN.fromEmail, fromName: CAMPAIGN.fromName, replyTo: CAMPAIGN.replyTo,
+    htmlContent: html, physicalAddress: CAMPAIGN.physicalAddress,
+  }, CONFIRM);
+  console.log('[update-draft] result:', JSON.stringify(res).slice(0, 300));
+}
+
+main().catch((e) => { console.error('[update-draft] ERROR:', e.message); process.exitCode = 1; });
diff --git a/mailers/commercial-wallcoverings-showcase.html b/mailers/commercial-wallcoverings-showcase.html
index 3917edce..025b80ca 100644
--- a/mailers/commercial-wallcoverings-showcase.html
+++ b/mailers/commercial-wallcoverings-showcase.html
@@ -236,11 +236,9 @@
       <p style="font-family:Georgia,'Times New Roman',serif;font-size:22px;line-height:30px;color:#1a1a1a;margin:0 0 6px">The commercial edit, page by page.</p>
       <p style="font-family:Helvetica,Arial,sans-serif;font-size:11px;letter-spacing:1.5px;color:#8d8478;margin:0 0 22px">Leaf through all eight houses &middot; narrated by Steve Abrams &middot; watch with sound</p>
       <a href="https://marketing.designerwallcoverings.com/collections/commercial-collection?utm_source=email&utm_medium=mailer&utm_campaign=commercial-showcase-2026-08-12" target="_blank" style="text-decoration:none">
-        <img src="https://photo.designerwallcoverings.com/marketing/commercial-poster.jpg?v=1" alt="Watch the Commercial &amp; Contract flip-book — narrated by Steve Abrams" width="460" style="width:100%;max-width:460px;height:auto;border-radius:6px;border:1px solid #e8e2d6;display:block;margin:0 auto"/>
+        <img src="https://photo.designerwallcoverings.com/marketing/commercial-flipbook.gif?v=2" alt="The Commercial &amp; Contract flip-book — leafing through all eight houses, narrated by Steve Abrams" width="460" style="width:100%;max-width:460px;height:auto;border-radius:6px;border:1px solid #e8e2d6;display:block;margin:0 auto"/>
       </a>
-      <p style="margin:26px 0 0">
-        <a href="https://marketing.designerwallcoverings.com/collections/commercial-collection?utm_source=email&utm_medium=mailer&utm_campaign=commercial-showcase-2026-08-12" target="_blank" style="display:inline-block;padding:12px 34px;background:transparent;color:#1a1a1a;font-family:Helvetica,Arial,sans-serif;font-size:10px;letter-spacing:3px;text-transform:uppercase;text-decoration:none;border-radius:2px;border:1px solid #1a1a1a">Watch with Sound</a>
-      </p>
+      <p style="font-family:Helvetica,Arial,sans-serif;font-size:11px;letter-spacing:1.5px;color:#8d8478;margin:16px 0 0">Tap the flip-book to watch the full version with sound &rarr;</p>
     </td></tr>
 
     <!-- ============ CLOSING CTA — memo samples ============ -->

← d88992a8 auto-data-snapshot: 2026-08-13T06:19:17 (1 data files) — sho  ·  back to Dw Validator Debug TK11314  ·  commercial mailer: slow flip-book GIF to 0.66s/frame (4x) + eba49f0c →