Wiki source code of Sending Bulk Messages from the Contract Report
Version 2.1 by Isaac Mejia on 2026/04/30 14:41
Hide last authors
| author | version | line-number | content |
|---|---|---|---|
| |
2.1 | 1 | = Sending Bulk Messages from the Contract Report = |
| |
1.1 | 2 | |
| |
2.1 | 3 | **Applies to:** Member Manager\\ |
| 4 | **Audience:** Club staff, owners, managers\\ | ||
| 5 | **Last updated:** 2026-04-29 | ||
| 6 | |||
| 7 | ---- | ||
| 8 | |||
| 9 | == Overview == | ||
| 10 | |||
| |
1.1 | 11 | 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. |
| 12 | |||
| 13 | 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. | ||
| 14 | |||
| |
2.1 | 15 | ---- |
| |
1.1 | 16 | |
| |
2.1 | 17 | == Before You Start == |
| |
1.1 | 18 | |
| 19 | Make sure your members have: | ||
| 20 | |||
| |
2.1 | 21 | * Email addresses on file with the TCPA email opt-in checked (for emails) |
| 22 | * Mobile phone numbers on file with the TCPA text opt-in checked (for texts) | ||
| 23 | * Reminders preference set to a value that allows the channel you're sending on: | ||
| 24 | ** **Nothing** → receives neither email nor text | ||
| 25 | ** **Email Only** → receives email only | ||
| 26 | ** **Text Only** → receives text only | ||
| 27 | ** **Both** → receives both | ||
| |
1.1 | 28 | |
| 29 | 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. | ||
| 30 | |||
| |
2.1 | 31 | ---- |
| |
1.1 | 32 | |
| |
2.1 | 33 | == Step-by-Step == |
| |
1.1 | 34 | |
| |
2.1 | 35 | === 1. Run a Contract Report Query === |
| |
1.1 | 36 | |
| |
2.1 | 37 | Navigate to **Reports → Contract Report**. Set your filters (status, program, location, contract dates, etc.) and run the query. |
| |
1.1 | 38 | |
| |
2.1 | 39 | === 2. Switch to the Detail View === |
| |
1.1 | 40 | |
| |
2.1 | 41 | The bulk messaging buttons only appear on the **Detail** view, not the Summary view. |
| |
1.1 | 42 | |
| |
2.1 | 43 | {{info}} |
| |
1.1 | 44 | If you ran the query on Summary and then switched to Detail, re-run the query on Detail before clicking the messaging buttons. |
| |
2.1 | 45 | {{/info}} |
| |
1.1 | 46 | |
| |
2.1 | 47 | === 3. Choose Your Action === |
| |
1.1 | 48 | |
| 49 | Four buttons appear at the top of the report: | ||
| 50 | |||
| |
2.1 | 51 | |=Button|=What It Does| |
| 52 | |**Email All Found**|Sends an email to every member in the current result set| | ||
| 53 | |**Email Selected**|Sends an email to only the members you've checked in the table| | ||
| 54 | |**Text All Found**|Sends a text to every member in the current result set| | ||
| 55 | |**Text Selected**|Sends a text to only the members you've checked in the table| | ||
| |
1.1 | 56 | |
| |
2.1 | 57 | {{info}} |
| |
1.1 | 58 | If a member has multiple contracts that match your query, they will only receive one message — the system deduplicates by member ID before sending. |
| |
2.1 | 59 | {{/info}} |
| |
1.1 | 60 | |
| |
2.1 | 61 | === 4. Compose Your Message === |
| |
1.1 | 62 | |
| |
2.1 | 63 | **For emails:** |
| |
1.1 | 64 | |
| |
2.1 | 65 | * (Optional) Pick an existing template from the dropdown to pre-fill the subject and body. |
| 66 | * Enter a subject line. | ||
| 67 | * 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. | ||
| 68 | * Use personalization tokens to customize each message: | ||
| 69 | ** **#FIRST NAME#** — member's first name | ||
| 70 | ** **#LAST NAME#** — member's last name | ||
| 71 | ** **#LOGIN#** — member's portal login | ||
| |
1.1 | 72 | |
| |
2.1 | 73 | **For texts:** |
| |
1.1 | 74 | |
| |
2.1 | 75 | * Enter your message as plain text. |
| 76 | * 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. | ||
| 77 | * Personalization tokens (#FIRST NAME#, etc.) work in texts too. | ||
| |
1.1 | 78 | |
| |
2.1 | 79 | === 5. Preview the Recipient Count === |
| |
1.1 | 80 | |
| 81 | 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. | ||
| 82 | |||
| |
2.1 | 83 | === 6. Send === |
| |
1.1 | 84 | |
| |
2.1 | 85 | 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. |
| |
1.1 | 86 | |
| |
2.1 | 87 | ---- |
| |
1.1 | 88 | |
| |
2.1 | 89 | == Frequently Asked Questions == |
| |
1.1 | 90 | |
| |
2.1 | 91 | **Why is my recipient count lower than my report results?**\\ |
| |
1.1 | 92 | 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. |
| 93 | |||
| |
2.1 | 94 | **Can I save a draft and come back to it later?**\\ |
| |
1.1 | 95 | No. The compose dialog resets when you close it. Compose and send in one session. |
| 96 | |||
| |
2.1 | 97 | **Where do bulk sends show up afterwards?**\\ |
| |
1.1 | 98 | 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. |
| 99 | |||
| |
2.1 | 100 | **Can a member be messaged twice if they have multiple contracts?**\\ |
| |
1.1 | 101 | No. The system deduplicates by member ID before sending. If a member has 3 matching contracts, they receive 1 message. |
| 102 | |||
| |
2.1 | 103 | **What happens if a member's phone number or email is invalid?**\\ |
| |
1.1 | 104 | Bad addresses fail per-recipient — the rest of the send continues normally. The send count returned reflects only successful dispatches. |
| 105 | |||
| |
2.1 | 106 | **Can I use this on other reports?**\\ |
| |
1.1 | 107 | 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. |
| 108 | |||
| |
2.1 | 109 | **Why don't I see the buttons?** |
| |
1.1 | 110 | |
| |
2.1 | 111 | * You may be on the Summary view — switch to Detail. |
| 112 | * You may not have permission for messaging on this report — check with your account administrator. | ||
| 113 | * You may have switched views without re-running the query — re-run it on Detail. | ||
| |
1.1 | 114 | |
| |
2.1 | 115 | ---- |
| |
1.1 | 116 | |
| |
2.1 | 117 | == What This Feature Does NOT Do (Yet) == |
| |
1.1 | 118 | |
| 119 | These items were in the original feature plan but are not in this release: | ||
| 120 | |||
| |
2.1 | 121 | * **Pre-send breakdown by contract status** — you don't currently see a breakdown by Active, Frozen, Cancelled, etc. before confirming. |
| 122 | * **Multi-contract transparency** — no expandable list showing which members have multiple contracts. | ||
| 123 | * **Reporting differentiation** — message reports don't currently separate contract-based sends from member-based sends. | ||
| |
1.1 | 124 | |
| 125 | If any of these are important to your workflow, please let your CSM know. | ||
| 126 | |||
| |
2.1 | 127 | ---- |
| |
1.1 | 128 | |
| |
2.1 | 129 | == Need Help? == |
| |
1.1 | 130 | |
| |
2.1 | 131 | If you run into trouble, contact MSI Support and reference **Member Manager Sprint 33 / Bulk Messaging from Contract Report**. |