# Weekly Customer Updates Recap

> **Version 1.1.0 · Last updated 2026-10-22 · Difficulty: Beginner · Setup time: 30–45 minutes**

Every Monday morning your clone sums up everything your company sent to customers in the last 7 days and posts one clear recap to your team channel in Slack or Microsoft Teams. Everyone knows what customers just heard from you, before they talk to them.

---

## 1. Overview and value

Customer communication comes from many places: HubSpot sends newsletters, CSMs send update emails, support sends announcements from a shared inbox, and the CRM logs some of it (but rarely all). By Monday, nobody on the team can say for sure what customers received last week. People repeat updates customers already got, or miss the chance to follow up on a great one.

The Weekly Customer Updates Recap fixes that. Every Monday at `{RUN_TIME}` your clone:

- reads the last 7 days of **outbound customer communications** from every source you've connected,
- **combines and de-duplicates** them (one line per piece of content, no matter how many places it showed up),
- **groups them by type** (videos, blog posts, tips, features, announcements and more),
- adds **open/click totals** where HubSpot marketing shares them,
- points out **gaps** (days with no send, items missing from the CRM log, sources that didn't respond),
- posts **one recap** to `{TEAM_CHANNEL}`.

It only reads. The single thing it writes is the channel post.

**What you get:**

| Benefit | What it looks like |
|---|---|
| One shared picture | Sales, CS, support and leadership all see the same list every Monday |
| Better conversations | "Did you see our video on X last week?" instead of repeating it |
| Fewer duplicate sends | Teams see what already went out before sending their own update |
| Program health at a glance | Totals, top email and gaps tell you if your cadence is slipping |
| Cleaner CRM logging | Items missing from the CRM log are flagged every week |

**This is not "voice of the customer".** Voice of the customer is about **inbound** feedback (what customers say to you: surveys, tickets, call notes). This recap is about **outbound** communications (what you said to customers). The two pair well, but this use case never summarizes customer replies or feedback.

---

## 2. Who it's for

- **Customer Success teams** who want to reference recent updates in check-ins and avoid repeating them.
- **Marketing teams** who want a weekly, human-readable log of what actually went out and how it performed.
- **Support teams** who need to know which announcements customers received (so they can answer "I got an email about…").
- **Leadership** who want a quick Monday pulse on customer communication volume and consistency.

It works especially well alongside the **Automated Customer Email Program** use case, which logs each send in your CRM with a consistent subject line. It also works fine on its own.

## 3. How it works

```
 ┌───────────────────────────────────────────────────────────────────┐
 │  Every Monday at {RUN_TIME} (scheduled task)                      │
 └───────────────────────────────┬───────────────────────────────────┘
                                 │
                                 ▼
 ┌───────────────────────────────────────────────────────────────────┐
 │  "Weekly Updates Recap" skill (read-only)                         │
 │                                                                   │
 │  1. Set the window      ──►  last 7 days in {RECAP_TIME_ZONE}     │
 │  2. Read each source (skip what isn't connected):                 │
 │       a. CRM: "[Customer Email]" tasks + synced email activity    │
 │       b. HubSpot marketing: sent emails + open/click totals       │
 │       c. Inbox: Sent items labeled {SEND_LABEL} +                 │
 │          copies received at {SEED_ADDRESS}                        │
 │       d. Shared support inbox {SUPPORT_INBOX} (optional)          │
 │  3. Filter out internal and non-customer mail                     │
 │  4. Combine + de-duplicate by content title                       │
 │       (earliest date wins, record which sources found it)         │
 │  5. Group by type, add stats, find top email and gaps             │
 │  6. Post ONE recap ──►  {TEAM_CHANNEL} (Slack or Teams)           │
 └───────────────────────────────┬───────────────────────────────────┘
                                 │
                                 ▼
 ┌───────────────────────────────────────────────────────────────────┐
 │  Team reads the recap → uses it in customer conversations         │
 │  If every source failed: a failure notice is posted instead       │
 └───────────────────────────────────────────────────────────────────┘
```

### Where the data comes from

| Source | What the clone looks for | Required? |
|---|---|---|
| **Salesforce or HubSpot** | Completed tasks/activities with subject `[Customer Email] {Type} – {Title}` (the logging convention from the Automated Customer Email Program), plus marketing email activity synced into the CRM | Recommended |
| **HubSpot marketing** (HubspotMarketingOperator) | Emails sent in the window, with list/audience and open/click totals | Optional |
| **Your inbox** | Messages in Sent with the label/category `{SEND_LABEL}`, plus marketing emails received at `{SEED_ADDRESS}` (an address subscribed to your customer lists) | Required (at least one of the two) |
| **Shared support inbox** | Customer announcements sent from `{SUPPORT_INBOX}` | Optional |

The clone uses whatever is connected and tells you in every post which sources worked.

## 4. What the clone does each week

1. **Sets the window:** the 7 full days before the run, in `{RECAP_TIME_ZONE}`.
2. **Reads every connected source** and keeps only messages that went **to customers**.
3. **Drops** internal briefings, messages only to `{YOUR_COMPANY_DOMAINS}`, vendor mail, personal one-to-one replies and anything it can't tell is customer-facing.
4. **Merges duplicates:** the same newsletter found in the CRM, HubSpot marketing and the seed inbox becomes one line, dated by the earliest copy, with the sources noted.
5. **Writes a one-line, customer-facing summary** for each item (what the customer was told, in plain words).
6. **Groups items by type** with emoji headers, then adds totals, the top email (if open/click data exists) and gaps.
7. **Posts once** to `{TEAM_CHANNEL}`. If the post is long, it continues in thread replies.

**What it never does:**

- Never emails customers or anyone else. The channel post is its only output.
- Never creates, edits or deletes anything in Salesforce, HubSpot or inboxes (no labels, no archiving, no "mark as read" on purpose).
- Never includes recipient names, email addresses or other personal details in the post. Audiences are described by list or segment name only.
- Never posts "nothing was sent this week" when it simply couldn't read the sources. If every source fails, it posts a failure notice.
- Never summarizes customer replies or feedback (that's voice of the customer, a different use case).

### Example post

```
📬 Customer Updates Recap: Oct 13 – Oct 19 (America/New_York)

🎬 Videos
• Oct 14 · "Setting up approvals in 3 minutes": short walkthrough of the new approval flow · All customers · <link> · 1,240 opens / 212 clicks

📝 Blog
• Oct 15 · "5 ways teams cut reporting time": practical tips with examples from the dashboard · Newsletter list · <link> · 980 opens / 143 clicks

💡 Tips
• Oct 16 · "Tip: save filters as views": how to reuse filters across reports · Admins segment · <link> · stats n/a

✨ Features
• Oct 17 · "Bulk edit is here": customers can now update many records at once · All customers · <link> · 1,410 opens / 305 clicks

📣 Announcements
• Oct 13 · "Scheduled maintenance on Oct 18": 30-minute window, no action needed · All customers (support inbox) · <link> · stats n/a

📈 Totals: 5 items · 4 emails with stats · 4,630 opens · 660 clicks
🏆 Top email: "Bulk edit is here" (305 clicks)
⚠️ Gaps:
• No customer send on: none this week (Mon–Fri all covered)
• Missing from CRM log: "Scheduled maintenance on Oct 18"
• Sources: CRM ✅ · HubSpot marketing ✅ · Inbox (label + seed) ✅ · Support inbox ✅
```

(Your real post uses your own types, lists and links. Stats show "n/a" when no source provides them.)

## 5. Setup walkthrough

The quickest path: download **CLONE-INSTRUCTIONS.md** and give it to your clone. It will check what's already connected, ask you for the placeholder values, show you a plan, and set up what it can after you approve. The steps below are what happens, so you know what to expect.

**Step 1: Check requirements (5 min)**
Open **REQUIREMENTS.md** and run through the pre-flight checklist. You need at least an email connection, a Slack or Teams connection that can post to `{TEAM_CHANNEL}`, and the ability to create a scheduled task. A Salesforce or HubSpot operator is strongly recommended.

**Step 2: Hand the instructions to your clone (2 min)**
Paste or upload CLONE-INSTRUCTIONS.md into a chat with your clone and say: *"Please set up this use case for me. Show me a plan before changing anything."*

**Step 3: Review the discovery table (3 min)**
The clone reports which skills/operators and connections it already has and which are missing.

**Step 4: Answer the placeholder questions (5 min)**
See the table in section 6.

**Step 5: Approve the plan (2 min)**
The clone lists exactly what it will attach, create and schedule. Say "yes" only when it looks right.

**Step 6: Do your part (10–15 min)**
Things only you can do:
- Complete sign-in (OAuth) for email, chat, Salesforce or HubSpot, and HubSpot marketing connections.
- Add the clone to `{TEAM_CHANNEL}` (Slack: `/invite` the clone's app; Teams: add it to the team/channel).
- Subscribe `{SEED_ADDRESS}` to your customer email lists in HubSpot (if you use a seed address).
- Give the clone access to `{SUPPORT_INBOX}` (if used).
- Start labeling customer emails with `{SEND_LABEL}` (if you send updates by hand).

**Step 7: Save the Weekly Updates Recap skill (5 min)**
If the clone can't create custom skills directly, it gives you the full skill text in a copy-paste block with exact steps. **Read it before you save it.**

**Step 8: Run the test (10 min)**
The clone does a test run that posts to a **test channel** first (or sends you the draft in chat), so you can check it before your team sees it.

**Step 9: Let it run**
From next Monday, the recap appears in `{TEAM_CHANNEL}` at `{RUN_TIME}`.

## 6. Placeholders to decide

| Placeholder | What it means | Example |
|---|---|---|
| `{CLONE_NAME}` | Your clone's display name | "Ava" |
| `{CLONE_INBOX}` | The inbox the clone reads (its own, or a delegated one) | ava@yourcompany.com |
| `{YOUR_COMPANY_DOMAINS}` | Your company's email domains (mail only to these = internal) | yourcompany.com, yourcompany.io |
| `{TEAM_CHANNEL}` | The Slack or Teams channel for the recap | #customer-updates (Slack) or "Customer Success › Updates" (Teams) |
| `{TEST_CHANNEL}` | A private channel for the test run | #clone-test |
| `{RUN_TIME}` | When the weekly run happens (with time zone) | Monday 8:00 AM America/New_York |
| `{RECAP_TIME_ZONE}` | Time zone that defines the 7-day window | America/New_York |
| `{SEND_LABEL}` | Label/category on customer emails sent by hand from the inbox | "Customer Update" |
| `{SEED_ADDRESS}` | An inbox subscribed to your customer lists, so marketing copies arrive there | updates-seed@yourcompany.com |
| `{SUPPORT_INBOX}` | Shared support inbox that sends customer announcements (optional) | support@yourcompany.com |
| `{CONTENT_TYPES}` | The types to group by, with emoji headers | 🎬 Videos, 📝 Blog, 💡 Tips, ✨ Features, 📊 Industry/Comparison, 📣 Announcements, 🔁 Other |
| `{SEND_DAYS}` | Days you expect at least one customer send (for gap checks) | Mon–Fri |

Tip: set `{RUN_TIME}` early enough that the recap is there before your Monday team meeting.

## 7. What to expect day to day

- **Every Monday at {RUN_TIME}:** the run starts. It usually takes a few minutes.
- **Shortly after:** one post appears in `{TEAM_CHANNEL}`, with long sections continued in thread replies.
- **Each post ends with source status,** so you know if any source was skipped (for example "HubSpot marketing: send data unavailable").
- **Rest of the week:** nothing. The clone does not post again until next Monday unless you ask: "Run the Weekly Updates Recap for the last 7 days now."
- **Your only regular task:** keep labeling hand-sent customer emails with `{SEND_LABEL}` and keep logging sends in Salesforce or HubSpot.

## 8. Customizing

**Content types.** Rename, add or remove groups (e.g. add 🎓 Webinars or 🛠️ Release notes). Items that don't fit go to 🔁 Other.

**Window and schedule.** Change to a Friday afternoon recap, a two-week window, or business days only.

**Audience detail.** Show list/segment names, or hide them and just show counts.

**Stats.** Show opens and clicks, clicks only, or no stats at all.

**Sources.** Add or remove sources at any time. The skill uses whatever is connected and reports what worked or failed.

**Multiple channels.** Post a short version to a leadership channel and the full version to the CS channel (ask the clone to add a second post step).

## 9. Known gotchas

- **The clone must be in the channel.** Slack: in the channel, type `/invite @{CLONE_NAME}` (or the name of the clone's Slack app). Teams: add the clone/app to the team and channel. Private channels always need this step. Without it, the post fails.
- **The seed address must really be subscribed.** If `{SEED_ADDRESS}` isn't on your customer lists (or got unsubscribed or suppressed by HubSpot after a bounce), marketing emails won't show up there. Check it once a quarter.
- **The clone can only read what it can see.** It can't read a coworker's Sent folder or a shared inbox unless that mailbox is connected or delegated to it.
- **De-duplication isn't perfect.** The same email can appear as "Bulk edit is here!" in HubSpot marketing and "[Customer Email] Feature – Bulk Edit Is Here" in the CRM. The skill normalizes titles (ignores case, punctuation, emoji and prefixes like "Fwd:" or "[Customer Email] Type –"), but very different subjects may still show as two lines. Fix by using the same title everywhere.
- **Time zone of the window.** "Last 7 days" depends on the time zone. An email sent Sunday 11 PM in New York is Monday in London. Set `{RECAP_TIME_ZONE}` to the zone your team works in.
- **HubSpot marketing read permissions.** HubSpot can split "read campaigns" from "read reports/stats". If stats show "n/a" but sends appear, the connection probably lacks reporting access. If the read tools fail entirely, the clone skips the source and notes "send data unavailable".
- **Failure is not an empty week.** If every source fails, the clone posts a failure notice, never "nothing was sent". If one source fails, the recap still posts with that source marked unavailable.
- **Stats change over time.** Open/click totals are a snapshot at run time. Emails sent Friday will have fewer opens than emails sent Monday. Also, privacy features in some mail apps inflate opens, so treat clicks as the more reliable number.
- **Message length limits.** Slack and Teams cut off or reject very long messages. The skill keeps the main post short and moves long groups into thread replies.
- **Use exact skill/operator names** as they appear in your skill catalog. Names can differ slightly between orgs; the clone checks them during discovery.
- **Read every instruction before saving it into a skill.** You're responsible for what your clone does.

## 10. FAQ

**Which CRMs and marketing tools work?**
Salesforce and HubSpot for the CRM log (see the Salesforce to HubSpot mapping in REQUIREMENTS.md). For marketing send data and stats, HubSpot (HubspotMarketingOperator) only. Other marketing tools aren't supported, but the seed address and labeled Sent items still catch their sends.

**Do I need the Automated Customer Email Program use case?**
No. It helps, because it logs every send in the CRM with a consistent subject. Without it, the clone relies on HubSpot marketing, your labeled Sent items and the seed inbox.

**Do I need a HubSpot marketing connection?**
No. Without it you lose open/click stats and the HubSpot send list, but the seed address still catches marketing emails.

**Will the clone email anyone?**
No. It only posts once a week to `{TEAM_CHANNEL}`.

**Will customer names or email addresses appear in the post?**
No. The post describes audiences by list or segment name (e.g. "All customers", "Admins segment") and never lists recipients.

**Will it change anything in my CRM or inbox?**
No. It's read-only everywhere except the single channel post.

**Is this the same as a voice-of-the-customer report?**
No. Voice of the customer summarizes what customers say to you. This recap summarizes what you sent to customers.

**What if we sent nothing last week?**
If the sources were read successfully and found nothing, the post says so clearly and lists the sources it checked. If the sources couldn't be read, it posts a failure notice instead.

## 11. Troubleshooting

| Symptom | Likely cause | Fix |
|---|---|---|
| No post on Monday | Scheduled task missing, paused, or wrong time zone | Ask the clone to list its scheduled tasks; check `{RUN_TIME}` |
| "Couldn't post to channel" | Clone not added to `{TEAM_CHANNEL}`, or chat connection expired | Slack: `/invite` the clone; Teams: add it to the channel; re-run sign-in |
| Marketing emails missing | Seed address not subscribed, or HubSpot marketing not connected | Subscribe `{SEED_ADDRESS}` to customer lists; check it isn't suppressed |
| Same email listed twice | Different titles in different sources | Use the same title everywhere, or ask the clone to add a title alias |
| Stats show "n/a" | HubSpot marketing not connected, or it lacks reporting permission | Reconnect HubSpot with reporting/read stats access |
| "Send data unavailable" | HubspotMarketingOperator read tools failed twice | Re-run sign-in; confirm read access to campaigns and reports |
| Internal emails appear | Internal domain not in `{YOUR_COMPANY_DOMAINS}`, or internal list on seed address | Add the domain; unsubscribe the seed address from internal lists |
| Hand-sent updates missing | `{SEND_LABEL}` not applied, or sent from a mailbox the clone can't read | Apply the label; connect or delegate that mailbox |
| Items flagged "missing from CRM log" every week | Sends not logged in the CRM | Log them with the `[Customer Email]` subject format, or turn off that gap check |
| Post cut off | Message too long for Slack/Teams | Ask the clone to shorten summaries or move more groups to thread replies |
| Failure notice posted | Every source failed (often expired sign-ins) | Re-run sign-in for each connection, then ask the clone to run the recap again |

---

**Version:** 1.1.0 · **Last updated:** 2026-10-22 · Part of the Clone Use Case Library.
