# Automated Customer Email Program

> **Version 1.1.0 · Last updated 2026-10-22 · Difficulty: Advanced · Setup time: 60–120 minutes**

Your clone picks the best customer email of the day, builds it in your brand template, gets your approval, and sends it through the right channel. Every send is checked against history first and logged where your team can see it.

---

## 1. Overview and value

Most companies ship far more useful things than their customers ever hear about. New features land in release notes nobody reads. Great videos and blog posts get one social post and disappear. Customer emails go out when someone finds the time, which is rarely.

The Automated Customer Email Program fixes that. Every day at `{RUN_TIME}` your clone:

- reads your **content calendar** and a **backlog of unsent updates** (release notes, blog, videos, social posts, knowledge base),
- picks **the day's best email** using a fixed priority order,
- writes it in one of **six email types** (plus a fallback for slow days),
- builds it in your **branded HTML template**,
- **checks send history** so nobody gets the same thing twice,
- sends a **preview to you for approval** (always, during the first `{APPROVAL_PERIOD}`),
- sends it through the right channel: **HubSpot marketing email** for list sends, or **1:1 from Gmail or Outlook** for personalized ones,
- **logs every send** (inbox label/category, Salesforce or HubSpot task for 1:1 sends, HubSpot's own send history for list sends) and emails you a short summary.

**What you get:**

| Benefit | What it looks like |
|---|---|
| A steady drumbeat | Customers hear from you on a predictable cadence, not "when someone has time" |
| More feature adoption | Every new feature and update gets a proper customer email |
| Content that works twice | Videos, blogs and posts get a second life in the inbox (videos can optionally be produced with `Clone-Automated-Video`) |
| Personal touch at scale | Role and use-case highlights go 1:1, written for that person |
| No duplicates | Send history is checked before every send |
| You stay in control | Nothing goes out without your "approve" until you choose auto-send |

### The six email types (plus a fallback)

| # | Type | What it is | Usual channel |
|---|---|---|---|
| 1 | **Video highlight** | Short intro + video thumbnail with a play button, linking out to the video | HubSpot marketing email |
| 2 | **Blog / long-form** | A blog post or article rewritten for the email (not just a link) | HubSpot marketing email |
| 3 | **"Did you know?" tip** | One practical tip, how to use it, one button | HubSpot marketing email |
| 4 | **Role / use-case highlight** | "How teams like yours use X", personalized per contact | **1:1 from inbox** |
| 5 | **Skill / feature highlight** | A new or updated feature: what it does, why it matters, how to start | HubSpot marketing email (or 1:1 for a targeted segment) |
| 6 | **Industry / comparison** | Industry trend, benchmark or "how we compare" piece | HubSpot marketing email |
| Fallback | **Social post highlight** | A recent social post worth sharing, for slow days | HubSpot marketing email |

### Daily priority order

When more than one thing is ready, the clone picks the first available in this order:

**New feature → Feature update → Video (relevant, not yet sent) → Blog → Tip → Industry / comparison → Social post (fallback)**

Anything already scheduled for today in `{CONTENT_CALENDAR}` wins over the priority order.

## 2. Who it's for

- **Marketing teams** who want a consistent customer newsletter-style program without building every email by hand.
- **Customer Success teams** who want customers to adopt new features and see relevant use cases.
- **Product marketing** who need every release to reach customers, not just the changelog.
- **Small teams** with lots of content (videos, blogs, docs) and no one with time to turn it into emails.

It is built for **current customers** (as defined by `{CUSTOMER_DEFINITION}`). It is not a cold outreach or prospecting tool.

## 3. How it works

```
 ┌───────────────────────────────────────────────────────────────────┐
 │  Your content: {CONTENT_CALENDAR} + {CONTENT_SOURCES}             │
 │  (release notes · blog feed · video channel · social · KB)        │
 └───────────────────────────────┬───────────────────────────────────┘
                                 │
                   Every day at {RUN_TIME} (scheduled task)
                                 │
                                 ▼
 ┌───────────────────────────────────────────────────────────────────┐
 │  "Customer Email Program" skill                                   │
 │                                                                   │
 │  1. Read calendar + backlog     ──►  candidate items              │
 │  2. Check send history          ──►  drop anything already sent   │
 │  3. Pick today's email          ──►  calendar first, then         │
 │       new feature > update > video > blog > tip >                 │
 │       industry/comparison > social fallback                       │
 │  4. Choose audience + channel   ──►  {LIST_ALL} / {LIST_SEGMENT}  │
 │                                      or 1:1 personalized          │
 │  5. Apply {CADENCE_RULES}       ──►  who is due today             │
 │  6. Write copy + build branded HTML ({BRAND_COLORS}, {LOGO_URL})  │
 │  7. Preview to {APPROVER}       ──►  wait for "approve"           │
 └───────────────────────────────┬───────────────────────────────────┘
                                 │  "approve"
                                 ▼
 ┌───────────────────────────────────────────────────────────────────┐
 │  Send                                                             │
 │   List send ──► HubSpot marketing email ──► HubSpot CRM records  │
 │   1:1       ──► {CLONE_INBOX} / {SENDER_INBOX} (Gmail/Outlook)    │
 │                 ──► label/category {SEND_LABEL}                   │
 │                 ──► completed Salesforce/HubSpot task per contact │
 │  Daily summary ──► {APPROVER}                                     │
 └───────────────────────────────────────────────────────────────────┘
```

### How it routes each email

| Situation | Channel | How it's logged |
|---|---|---|
| Same message for everyone | HubSpot marketing email, to `{LIST_ALL}` | HubSpot send history + HubSpot CRM records |
| Same message for one group (e.g. one product tier) | HubSpot marketing email, to `{LIST_SEGMENT}` | HubSpot send history + HubSpot CRM records |
| Personalized per contact (role / use-case highlight) | 1:1 from `{CLONE_INBOX}` or `{SENDER_INBOX}` | Inbox label/category `{SEND_LABEL}` + completed task (Salesforce or HubSpot) |

The CRM task subject is internal only: `[Customer Email] {Type} – {Title}` (for example `[Customer Email] Feature – Bulk export`). Customers never see it. The customer-facing subject line never contains tags or internal labels.

## 4. What the clone does

**Every day:**

1. **Reads** `{CONTENT_CALENDAR}` for anything planned for today, then the backlog of unsent items from `{CONTENT_SOURCES}`.
2. **Checks history** across three places: HubSpot marketing email sends, the Sent folder items labeled `{SEND_LABEL}`, and `[Customer Email]` tasks in the CRM (Salesforce or HubSpot). Already-sent items are dropped.
3. **Picks one email** using the priority order. On a day with nothing new, it uses a tip or the social post fallback.
4. **Applies cadence.** Top-tier customers can get an email daily; lighter tiers get a weekly digest, per `{CADENCE_RULES}`.
5. **Writes and builds** the email in your branded, email-safe HTML template.
6. **Sends a preview** to `{APPROVER}` (a HubSpot test send, or a preview email for 1:1 sends) with the audience, count, and channel.
7. **Waits for "approve".** Only then does it send. "Skip" or no reply by `{SEND_WINDOW_END}` means nothing goes out today.
8. **Logs** each send and emails `{APPROVER}` a short daily summary (what went out, to whom, opens/clicks from yesterday if available, unsubscribes).
9. **Watches unsubscribes.** If unsubscribes spike above `{UNSUBSCRIBE_ALERT}`, it pauses or lightens the cadence and tells you.

**What it never does:**

- Never sends without approval during `{APPROVAL_PERIOD}` (or ever, if you keep approval on).
- Never emails contacts who unsubscribed, bounced, or are marked do-not-email.
- Never sends the same item to the same person twice.
- Never puts internal tags, deal info, health scores or sales language in customer-facing copy.
- Never emails prospects, leads or anyone outside your customer lists.
- Never changes your HubSpot lists, deletes contacts, or edits CRM records other than adding the completed send task.

## 5. Setup walkthrough

The quickest path: download **CLONE-INSTRUCTIONS.md** and give it to your clone. It will check what's connected, ask for your settings, show you a plan, and set up what it can after you approve.

**Step 1: Check requirements (10 min)**
Open **REQUIREMENTS.md** and run through the pre-flight checklist. You need Gmail or Outlook, HubSpot marketing email (`HubspotMarketingOperator`), a Salesforce or HubSpot CRM operator, access to your content calendar (Google Sheets, Excel or a doc), and scheduled tasks.

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

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

**Step 4: Answer the placeholder questions (10–15 min)**
See section 6. The list names and cadence rules take the most thought.

**Step 5: Approve the plan (2 min)**
Say "yes" only when the plan looks right.

**Step 6: Do your part (20–40 min)**
- Sign in (OAuth) to Gmail or Outlook, HubSpot, your CRM (Salesforce or HubSpot) and any content source connections.
- Share `{CONTENT_CALENDAR}` and content folders with the clone.
- Create a **custom coded template** in HubSpot (Design Manager). The clone gives you the HTML to paste.
- Make sure your logo and email images are **publicly hosted**.
- Create the `{SEND_LABEL}` label (Gmail) or category (Outlook) if the clone can't.

**Step 7: Save the skill and scheduled tasks (10 min)**
If the clone can't create custom skills directly, it gives you the full text to paste. **Read it before you save it.**

**Step 8: Run the test plan (20–30 min)**
The clone sends test emails to internal test addresses only. You check them in real inboxes (Gmail, Outlook desktop, Apple Mail, phone).

**Step 9: Go live with approval on**
For the first `{APPROVAL_PERIOD}`, approve each day's email. After that, you can switch to auto-send with a daily summary.

## 6. Placeholders to decide

| Placeholder | What it means | Example |
|---|---|---|
| `{CLONE_NAME}` | Your clone's display name | "Ava" |
| `{CLONE_INBOX}` | The clone's own email address | ava@yourcompany.com |
| `{SENDER_INBOX}` | Optional human inbox for 1:1 sends (the clone needs send access) | csm-team@yourcompany.com |
| `{YOUR_COMPANY_DOMAINS}` | Your company's email domains (never emailed as customers) | yourcompany.com |
| `{COMPANY_NAME}` | Your company name as customers know it | "Acme Analytics" |
| `{CUSTOMER_DEFINITION}` | How your CRM (Salesforce or HubSpot) marks a current customer | "Lifecycle stage = Customer" (HubSpot) or "Account Type = Customer" (Salesforce) |
| `{CONTENT_CALENDAR}` | Google Sheet, Excel file or doc with planned emails by date | "Customer Email Calendar" sheet |
| `{CONTENT_SOURCES}` | Where new content comes from | Release notes page, blog RSS, video channel, LinkedIn page, help center, a knowledge base (`search_knowledge`) |
| `{LIST_ALL}` | HubSpot list of all emailable current customers | "All Customers: Emailable" |
| `{LIST_SEGMENT}` | Named HubSpot sub-lists for targeted sends | "Tier: Enterprise", "Product: Reporting" |
| `{CADENCE_RULES}` | How often each group may be emailed | Enterprise: daily · Paid: 3×/week · Free: weekly digest |
| `{DAILY_1TO1_CAP}` | Max personalized 1:1 emails per day | 25 |
| `{SEND_LABEL}` | Gmail label / Outlook category for 1:1 sends | "Customer Email" |
| `{APPROVER}` | Who approves previews and gets the daily summary | you@yourcompany.com |
| `{APPROVAL_PERIOD}` | How long every send needs approval | 2 weeks |
| `{SEND_WINDOW_END}` | Latest time a send can go out after approval | 2:00 PM, your time zone |
| `{RUN_TIME}` | When the daily run starts (with time zone) | 8:00 AM America/Chicago, Mon–Fri |
| `{BRAND_COLORS}` | Primary, accent, text and background colors (hex) | #1A73E8, #FF6D00, #222222, #FFFFFF |
| `{LOGO_URL}` | Public URL of your logo (PNG) | https://cdn.yourcompany.com/email/logo.png |
| `{PHYSICAL_ADDRESS}` | Mailing address required in commercial email | 100 Main St, Springfield, USA |
| `{UNSUBSCRIBE_ALERT}` | Unsubscribe rate that triggers a pause | 0.5% of a send, or 3× the 30-day average |

Tip: set `{RUN_TIME}` early enough that you can approve before `{SEND_WINDOW_END}`, and at a time your customers usually read email.

## 7. What to expect day to day

- **At `{RUN_TIME}`:** the run starts. Picking, writing and building usually takes a few minutes.
- **Shortly after:** a preview lands in `{APPROVER}`'s inbox. Subject starts with `[Approval needed]`. It shows the email exactly as customers will see it, plus the audience, recipient count and channel. Reply **approve**, **skip**, or describe a change ("shorter intro", "use the other video").
- **After you approve:** the clone sends it (usually within 30 minutes, at the next approval check) and logs it.
- **End of run:** a short summary: what went out, recipient count, yesterday's opens/clicks if HubSpot shares them, unsubscribes, and anything skipped with the reason.
- **Slow days:** you'll get a tip or social post highlight, or a "nothing worth sending today" note if even the fallback would be weak. Skipping a day is fine.
- **After `{APPROVAL_PERIOD}`:** if you switch to auto-send, you'll only get the daily summary. You can switch back any time.

## 8. Customizing

**Priority order.** Change it, e.g. put videos first during a launch month, or drop industry/comparison emails entirely.

**Email types.** Add your own (e.g. "Customer story", "Webinar invite") or remove ones you don't want. Each type has its own short structure in the skill.

**Cadence.** Tighten or loosen `{CADENCE_RULES}`. A common setup: top-tier customers daily, paid customers a few times a week, free users one weekly digest that bundles the week's best items.

**Voice and tone.** Give the clone 2–3 past customer emails you like and ask it to match the voice. Add a banned-words list.

**Template.** Change colors, add a footer social row, or add a second template for digests.

**Personalization.** Use more CRM fields (Salesforce or HubSpot) for 1:1 emails (role, industry, product used, company size). Only use fields you trust to be accurate.

**Auto-send.** After `{APPROVAL_PERIOD}`, ask the clone to switch some types (e.g. tips) to auto-send while keeping approval for others (e.g. comparisons).

## 9. Known gotchas

- **Send fatigue is the biggest risk.** Daily email is only right for customers who want it. Start lighter than you think, watch unsubscribes, and use `{CADENCE_RULES}` to keep free or low-engagement users on a weekly digest.
- **Outlook renders email differently.** Outlook desktop ignores a lot of modern CSS. The template uses tables, inline CSS and a 600px width for this reason. **Always test in real inboxes**: Gmail (web and app), Outlook desktop, Apple Mail and a phone. A preview pane is not a real test.
- **Image formats.** Avoid WebP (it breaks in some Outlook versions). Use PNG, JPG or GIF. Keep images under ~1 MB.
- **Host images publicly.** Images must load without a login. Images in Google Drive, SharePoint or behind your app's login show as broken boxes. Use HubSpot's file manager, your website, or a CDN for `{LOGO_URL}` and thumbnails.
- **HubSpot needs a custom coded template to accept raw HTML.** Drag-and-drop editors will rewrite or reject pasted HTML. Create a coded template in HubSpot's Design Manager and use that.
- **Keep internal sales language out of customer copy.** Words like "upsell", "expansion", "at-risk", "health score", "tier 1 account" or deal details must never appear in customer emails. The skill checks for this, but read your previews.
- **Never put tags in customer-facing subject lines.** `[Customer Email]` belongs in the internal CRM task subject only.
- **Laws and consent (CAN-SPAM, GDPR, CASL and others).** Every commercial email needs a working unsubscribe and your physical address. Only email people who are allowed to receive it. 1:1 emails from an inbox still count: the clone honors opt-outs and includes a simple opt-out line. Check with whoever owns compliance at your company.
- **List hygiene.** Bounces, unsubscribes and do-not-email flags must be respected in both HubSpot list sends and 1:1 sends (a HubSpot unsubscribe does not automatically update a Salesforce opt-out flag, so check both if you use Salesforce). Keep `{LIST_ALL}` a dynamic list that excludes them automatically.
- **Link tracking.** HubSpot rewrites links for click tracking. That's normal, but it can break links that are already shortened or redirected. Use full, direct URLs. Add UTM tags if you want website analytics to show the source.
- **1:1 sending limits.** Gmail and Microsoft 365 have daily sending limits, and bulk-looking 1:1 email can hurt deliverability. Keep `{DAILY_1TO1_CAP}` modest and personalize for real.
- **The clone can only see what's shared with it.** If the content calendar, a video channel or a release notes folder isn't shared or connected, it can't use it.
- **Read every instruction before saving it into a skill.** You're responsible for what your clone sends.

## 10. FAQ

**Which marketing email tool does this use?**
HubSpot marketing email (`HubspotMarketingOperator`) is the only tool for list and segment sends today. If you don't use HubSpot marketing email, you can still use the 1:1 types from Gmail or Outlook.

**What if the HubSpot operator can only create drafts?**
Then the clone builds the draft and test send, and you click Send in HubSpot after approving. It still logs everything else.

**Does this work with my CRM?**
Yes, if your CRM is **Salesforce** or **HubSpot**. The clone logs each 1:1 send as a completed task (`SalesforceActivityOperator` or `HubspotEngagementOperator`). List sends are logged through HubSpot's own CRM records. See the Salesforce to HubSpot mapping in REQUIREMENTS.md.

**Will the clone email customers during setup?**
No. During setup and testing it only emails internal test addresses that you give it.

**Can I keep approval on forever?**
Yes. Many teams do. Auto-send is optional.

**Who do 1:1 emails come from?**
From `{CLONE_INBOX}` by default, or from `{SENDER_INBOX}` if you give the clone send access to a team inbox. Replies go to that inbox, so make sure someone (or the clone) watches it.

**What happens to replies?**
Replies land in the sending inbox. The clone flags them in the daily summary. It does not answer customers on its own as part of this use case.

**What if there's nothing new to send?**
It sends a tip or social post highlight, or skips the day and tells you why.

## 11. Troubleshooting

| Symptom | Likely cause | Fix |
|---|---|---|
| No preview arrived | Scheduled task not created, paused, or wrong time zone | Ask the clone to list its scheduled tasks; check `{RUN_TIME}` time zone |
| Approved but nothing sent | Approval reply came after `{SEND_WINDOW_END}`, or the approval check task is missing | Reply earlier, or ask the clone to "send today's approved email now"; check both scheduled tasks exist |
| Same email sent twice | Send history not checked (a source was unavailable) or label/task not applied | Check the summary's "history sources" line; fix the failed connection; make sure `{SEND_LABEL}` exists |
| Images broken | Images behind a login or Drive permissions, or WebP format | Host images publicly as PNG/JPG/GIF; update `{LOGO_URL}` |
| Layout broken in Outlook | Template edited with unsupported CSS, or drag-and-drop editor rewrote it | Use the coded template; keep tables and inline CSS; test in Outlook desktop |
| HubSpot rejected the HTML | Drag-and-drop template used | Create a coded template in the Design Manager and point the skill to it |
| "CRM: unavailable" in summary | Connection expired or missing permission to create tasks | Re-run sign-in (Salesforce or HubSpot); confirm read contacts + create tasks |
| Unsubscribes jumped | Cadence too high for that group, or off-target content | Lighten `{CADENCE_RULES}` for that group; review recent topics |
| Customer saw internal wording | Copy pulled from internal notes | Add the words to the banned list in the skill; keep approval on |
| 1:1 emails stopped mid-batch | Inbox daily sending limit reached | Lower `{DAILY_1TO1_CAP}`; spread sends over the day |

---

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