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