Sending Bulk Messages from the Contract Report
== Overview ==
Member Manager lets you send bulk emails and text messages to members directly from the Contract Report. This is useful when you want to message a specific contract group — for example, all members on a Frozen contract, all members in a specific program, or all members with contracts ending this month.
The feature uses the same email and SMS infrastructure as the Members tab, so opt-out preferences, communication settings, and personalization tokens all behave the same way.
----
== Before You Start ==
Make sure your members have:
* Email addresses on file with the TCPA email opt-in checked (for emails)
* Mobile phone numbers on file with the TCPA text opt-in checked (for texts)
* Reminders preference set to a value that allows the channel you're sending on:
** **Nothing** → receives neither email nor text
** **Email Only** → receives email only
** **Text Only** → receives text only
** **Both** → receives both
Members who don't meet these requirements will be filtered out automatically and excluded from the send. The recipient count shown before send already reflects this filtering.
----
== Step-by-Step ==
=== 1. Run a Contract Report Query ===
Navigate to **Reports → Contract Report**. Set your filters (status, program, location, contract dates, etc.) and run the query.
=== 2. Switch to the Detail View ===
The bulk messaging buttons only appear on the **Detail** view, not the Summary view.
{{info}}
If you ran the query on Summary and then switched to Detail, re-run the query on Detail before clicking the messaging buttons.
{{/info}}
=== 3. Choose Your Action ===
Four buttons appear at the top of the report:
|=Button|=What It Does|
|**Email All Found**|Sends an email to every member in the current result set|
|**Email Selected**|Sends an email to only the members you've checked in the table|
|**Text All Found**|Sends a text to every member in the current result set|
|**Text Selected**|Sends a text to only the members you've checked in the table|
{{info}}
If a member has multiple contracts that match your query, they will only receive one message — the system deduplicates by member ID before sending.
{{/info}}
=== 4. Compose Your Message ===
**For emails:**
* (Optional) Pick an existing template from the dropdown to pre-fill the subject and body.
* Enter a subject line.
* Edit the body in the rich text editor. You can use bold, italics, lists, links, and images the same way you would when emailing from a member profile.
* Use personalization tokens to customize each message:
** **#FIRST NAME#** — member's first name
** **#LAST NAME#** — member's last name
** **#LOGIN#** — member's portal login
**For texts:**
* Enter your message as plain text.
* A character counter shows you how long the message is. Stay under 160 characters for a single SMS segment — longer messages will be sent as multiple segments and may cost more.
* Personalization tokens (#FIRST NAME#, etc.) work in texts too.
=== 5. Preview the Recipient Count ===
The dialog shows you how many members will actually receive the message after TCPA and reminders filtering is applied. This is your final send count — use it to sanity-check the audience size before you click Send.
=== 6. Send ===
Click **Send**. The message dispatches through MSI's normal email (SendGrid) and SMS (Mobiery) infrastructure. You'll see a confirmation when the send is complete, including the final recipient count.
----
== Frequently Asked Questions ==
**Why is my recipient count lower than my report results?**\\
The count shown before send is after TCPA and reminders filtering. Members without opt-in or with reminders set to Nothing (or to a channel that doesn't match what you're sending) are automatically excluded.
**Can I save a draft and come back to it later?**\\
No. The compose dialog resets when you close it. Compose and send in one session.
**Where do bulk sends show up afterwards?**\\
Each send is logged to the system's message log with the recipient count, channel (email or SMS), and source = contract_report. They are not currently distinguished from member-tab messages in the standard message reports — that's a planned enhancement.
**Can a member be messaged twice if they have multiple contracts?**\\
No. The system deduplicates by member ID before sending. If a member has 3 matching contracts, they receive 1 message.
**What happens if a member's phone number or email is invalid?**\\
Bad addresses fail per-recipient — the rest of the send continues normally. The send count returned reflects only successful dispatches.
**Can I use this on other reports?**\\
Not yet. The Contract Report is the first report wired up to bulk messaging. The backend supports any report; additional reports can be added as a future enhancement.
**Why don't I see the buttons?**
* You may be on the Summary view — switch to Detail.
* You may not have permission for messaging on this report — check with your account administrator.
* You may have switched views without re-running the query — re-run it on Detail.
----
== What This Feature Does NOT Do (Yet) ==
These items were in the original feature plan but are not in this release:
* **Pre-send breakdown by contract status** — you don't currently see a breakdown by Active, Frozen, Cancelled, etc. before confirming.
* **Multi-contract transparency** — no expandable list showing which members have multiple contracts.
* **Reporting differentiation** — message reports don't currently separate contract-based sends from member-based sends.
If any of these are important to your workflow, please let your CSM know.
----
== Need Help? ==
If you run into trouble, contact MSI Support and reference **Member Manager Sprint 33 / Bulk Messaging from Contract Report**.