Group Mail System
Factory specification — privacy-first group communication by email — factory.success.build
- Overview & Design Principles
- Addressing & Email Routing
- Identity, Aliases & Privacy
- Member Commands
- Manager Commands
- Delivery Modes & Digest
- Group Communication Modes
- Moderation & Bounce Handling
- Unsubscribe, Mute & Soft Presence
- Meeting Booking
- Agent Commands
- Creating a Group
- Explain & Help
- Full Settings Reference
- Message Flow Diagrams
- Reply Message Examples
1. Overview & Design Principles
This is a group communication system where email is the interface. Every action — subscribing, changing settings, booking a meeting — can be done by sending an email. There is no required web login, no app to install, no account to create beyond having an email address.
Core Principles
- Privacy-first. A group can be configured so that no member knows anything about other members beyond a chosen handle (display name). Email addresses are never exposed to other members. Messages are relayed through the system, not forwarded.
- Email-native. Every command is sent as the subject line (or first line of the body) of a plain email to the group's command address. Replies come back as plain email.
- Soft presence. Unsubscribing stops regular group messages but does not remove you from the group. The manager can still reach you for important announcements (meetings, events). Your replies still get delivered. You are a member who has muted the firehose, not someone who has left.
- Groups are real groups. This is not a mailing list in the traditional sense. It is a group of real people with a communication channel. The distinction matters for unsubscribe/mute behavior and for the relationship between members and managers.
- Agent-capable. Any message can be routed to an AI agent for processing, summarization, research, or action. The agent acts on behalf of the sender within the group context.
- Platform-integrated. Groups are managed through Factory (factory.success.build). Group creation, membership, and settings are available via the web UI as well as by email command.
2. Addressing & Email Routing
Each group has a slug — a short identifier set when the group is created (e.g., marketing, board, neighborhood-watch). The slug determines the group's email addresses.
| Address | Purpose |
|---|---|
| {slug}[email protected] | Send a message to the group (distributed per group settings) |
| {slug}[email protected] | Send a command (subject line is the command) |
| {slug}[email protected] | Send a message to group managers only |
Commands can also be sent by including the command keyword as the first line of the message body when emailing the +cmd address, or as the subject line. If the subject is empty, the first non-blank line of the body is used as the command.
+cmd means the group's command address. To subscribe to a group with slug "neighborhood-watch," email [email protected] with subject subscribe.
{slug}[email protected]. Inbound commands and manager messages use the parse.success.build domain, which routes through the inbound email processor webhook.
3. Identity, Aliases & Privacy
Display Names & Handles
Every member has a display name visible to other group members. This can be:
- Their real name (default, pulled from their email display name on first message)
- A group-only alias — a name used only within this specific group, invisible to other groups
- A network alias — a handle used across all groups on the platform
Aliases are set via email command and can be changed at any time. In a fully anonymous group, only the alias is ever shown — no email address, no real name, nothing.
Privacy Levels (per group setting)
| Level | What members see | What managers see |
|---|---|---|
| open | Display names and email addresses of all members | Everything |
| names-only | Display names only, no email addresses | Everything |
| anonymous | Aliases/handles only. No real names, no emails. Member count only. | Real identity + alias mapping |
Identity Commands
| Command (subject line) | What it does |
|---|---|
| set name Your Name Here | Set your display name for this group (group-only alias) |
| set network-name Your Handle | Set your network-wide handle (used across all groups) |
| whoami | Reply with your current display name, network name, email (masked), and group membership |
4. Member Commands
All commands are sent to {slug}[email protected] as the subject line.
Subscription & Membership
| Command | What it does |
|---|---|
| subscribe | Join the group. May require confirmation or manager approval depending on group settings. |
| confirm TOKEN | Confirm a pending subscription (double opt-in). Token is provided in the confirmation email. |
| unsubscribe | Stop receiving regular group messages. Does not remove you from the group. See Unsubscribe & Mute. |
| leave | Permanently leave the group. Removes you from the member list entirely. Requires confirmation. |
| resubscribe | Resume delivery after unsubscribe or mute. |
Delivery & Preferences
| Command | What it does |
|---|---|
| digest | Switch to digest mode (bundled messages). Default: daily. |
| digest daily | Receive digest once per day (sent at 6 AM, group timezone). |
| digest weekly | Receive digest once per week (sent Monday at 6 AM). |
| nodigest | Switch back to individual message delivery (each email). |
| mute | Stop all delivery (including digest) but remain a member. See Unsubscribe & Mute. |
| unmute | Resume delivery after mute. |
| vacation | Temporarily stop delivery. Alias for mute with a friendlier label. |
| norepro | Don't send me copies of my own messages. |
| repro | Send me copies of my own messages. |
Information & Discovery
| Command | What it does |
|---|---|
| help | Get a friendly reply with available commands, tips, and a link to this page. |
| explain | Get a plain-language explanation of how the group works, privacy model, and available modes. See Explain. |
| info | Get the group description, member count, creation date, and group type. |
| members | Get the member list (if privacy settings allow) or the member count (if anonymous). |
| who | Alias for members. |
| mygroups | List all groups you belong to on this platform. |
| settings | Show your current personal settings for this group (delivery mode, alias, etc.). |
| index | Get a list of recent message subjects (archive index). |
| search KEYWORDS | Search group archive for messages matching keywords (if archives enabled). |
| last | Get the most recent message sent to the group. |
| last N | Get the last N messages (max 25). |
Sending Messages
| Command | What it does |
|---|---|
| private | Send this message to managers only (not the whole group). Use as subject prefix: private: actual subject |
| reply HANDLE | Send a direct reply to a specific member by handle (if group allows 1-to-1). The system relays without exposing either address. |
5. Manager Commands
Manager commands require the sender to be a designated group manager. Sent to the same +cmd address.
Member Management
| Command | What it does |
|---|---|
| add EMAIL | Add a member to the group. Sends them a welcome message. |
| add EMAIL as ALIAS | Add a member with a pre-set group alias. |
| remove EMAIL | Remove a member from the group entirely. |
| approve EMAIL | Approve a pending subscription request. |
| reject EMAIL | Reject a pending subscription request (with optional reason in body). |
| ban EMAIL | Ban an email address from the group. |
| unban EMAIL | Remove a ban. |
| invite EMAIL | Send an invitation to join the group. |
| mod EMAIL | Put a member on moderation (their posts require approval). |
| unmod EMAIL | Remove moderation from a member. |
| promote EMAIL | Make a member a co-manager. |
| demote EMAIL | Remove manager role from a co-manager. |
Message Moderation
| Command | What it does |
|---|---|
| accept MSGID | Approve a held message for distribution. |
| reject MSGID | Reject a held message. Sender gets a notification with optional reason. |
| discard MSGID | Silently discard a held message (no notification to sender). |
| pending | List all messages awaiting moderation. |
Announcements
| Command | What it does |
|---|---|
| announce | Send to ALL members, including unsubscribed and muted. For meetings, events, critical notices. Use sparingly. Subject prefix: announce: actual subject |
| broadcast | Alias for announce. |
Group Configuration
| Command | What it does |
|---|---|
| set SETTING VALUE | Change a group setting. See Full Settings Reference. |
| config | Show all current group settings. |
| config diff | Show only settings that differ from defaults. |
factory.success.build/group/{group}/settings/mailgroup. The email moderation queue is at /group/{group}/email-queue.
6. Delivery Modes & Digest
Each member independently controls how they receive group messages. Preferences are managed via email command or at the Subscription Center (factory.success.build/user/{user}/subscriptions).
| Mode | Behavior | Command to activate |
|---|---|---|
| each_email | Each message delivered immediately as a separate email | nodigest |
| daily_digest | One bundled email per day (6 AM, group timezone) | digest daily |
| weekly_digest | One bundled email per week (Monday 6 AM) | digest weekly |
| none | No delivery at all. Member still exists, can still send, still receives announcements. | mute |
7. Group Communication Modes
The manager sets how messages flow. Factory supports granular posting permissions and moderation levels that map to these communication patterns:
Posting Permissions (field_who_can_post)
| Value | Behavior | Setting command |
|---|---|---|
| all_members | Any group member can post. Classic discussion list. | set who-can-post all_members |
| managers_and_owners | Only managers and owners can post. Announcement channel. | set who-can-post managers_and_owners |
| owners_only | Only group owners can post. | set who-can-post owners_only |
| all_platform_users | Any platform user (even non-members) can post. | set who-can-post all_platform_users |
| anyone | Anyone, including external senders, can post. | set who-can-post anyone |
| none | No email posting allowed (web-only group). | set who-can-post none |
Moderation Levels (field_moderation_level)
| Value | Behavior | Setting command |
|---|---|---|
| none | Messages distributed immediately, no moderation. | set moderation none |
| new_members | First few messages from new members are held for approval. | set moderation new_members |
| non_members | Messages from non-members are held for approval. | set moderation non_members |
| all | All messages require manager approval before distribution. | set moderation all |
Reply Behavior (field_reply_to)
| Value | Behavior | Setting command |
|---|---|---|
| reply_to_list | Reply-To header points to the group address. Replies go to the whole group. | set reply-to list |
| reply_to_sender | Reply-To header points to the original sender. Replies go to the author only. | set reply-to sender |
| reply_to_owner | Reply-To header points to the group owner. | set reply-to owner |
| reply_to_custom | Reply-To header points to a custom address configured by the manager. | set reply-to custom ADDRESS |
| reply_to_ignore | No Reply-To header set. Behavior depends on the member's email client. | set reply-to ignore |
Member-to-Member Direct Messages
In any mode, if the group allows it, members can send direct messages to other members by handle using reply HANDLE. The system relays the message without exposing either party's email address. This is controlled by the allow-dm setting.
8. Moderation & Bounce Handling
Moderation
- Full moderation: All posts require approval (
set moderation all) - New member moderation: First messages from new members held (
set moderation new_members) - Non-member moderation: Messages from non-members held (
set moderation non_members) - Per-member moderation: Specific members on moderation (
mod EMAIL) - Content filtering: Optional keyword blocklist (
set blocklist word1, word2) - Attachment policy: Allow all, strip all, or allow specific MIME types
- Max message size: Configurable, default 2MB
- Moderation expiry: Held messages expire after 14 days (configurable)
factory.success.build/group/{group}/email-queue with approve, reject, and spam actions.
Bounce Handling
- The system tracks delivery failures per member
- After 5 consecutive bounces over 7+ days, delivery is automatically suspended (equivalent to
mute) - Manager is notified of suspended members
- Member receives a "your delivery has been paused" notice to an alternate contact if available
- Manager can manually re-enable with
unmute EMAIL - VERP (Variable Envelope Return Path) is used for precise bounce attribution
9. Unsubscribe, Mute & Soft Presence
This is a key design distinction from traditional mailing lists.
Unsubscribe (soft)
When a member sends unsubscribe:
- Regular group messages stop
- The member is not removed from the group
- The group manager can still send occasional messages (meetings, events) via
announce - If the member replies to a group message (e.g., forwarded by someone, or an announcement), their reply is still delivered to the appropriate recipients
- A notice is sent on every message they send while unsubscribed
"You are currently unsubscribed from [group name]. Your message has been delivered to [managers / the group] as appropriate.
You are still a member of this group. The group manager may send occasional messages about meetings or events. To resume full delivery, reply with
resubscribe. To switch to a digest, reply with digest. To permanently leave the group, reply with leave."
Mute
Identical to unsubscribe but with a different semantic intent (temporary silence vs. opting out). Same behavior, same auto-reply. Delivery preference is set to none.
After a muted member sends 3 messages to the group without resubscribing, they receive a shorter notice:
"You're muted in [group name] — you're sending messages but not receiving them. To start receiving again: reply
unmute or digest.Manage all your subscriptions: factory.success.build/user/{user}/subscriptions"
Leave (hard)
The leave command permanently removes the member. Requires confirmation. After leaving, they receive no messages of any kind and must re-subscribe to rejoin.
10. Meeting Booking
Members can propose and book meetings through the group. Meetings are tracked by the system and can generate calendar invites.
| Command | What it does |
|---|---|
| meet | Propose a meeting. Subject becomes meeting title. Body contains details (date/time, agenda, location/link). System parses natural language dates. |
| meet DATE TIME | Propose a meeting at a specific date/time. Example: meet 2026-03-15 2pm EST |
| meet poll | Propose a meeting with a time poll. List options in the body, one per line. Members vote by reply. |
| rsvp yes | Accept a meeting invitation (reply to the meeting message). |
| rsvp no | Decline a meeting invitation. |
| rsvp maybe | Tentatively accept. |
| meetings | List upcoming meetings for this group. |
| cancel MEETINGID | Cancel a meeting you proposed (or any meeting, if manager). Sends cancellation notice. |
.ics attachment that can be added to any calendar app. RSVP responses update the meeting record. The group can optionally generate a shared calendar feed URL (set calendar on).
11. Agent Commands
Any member can route a message to an AI agent for processing. The agent operates within the group context, respecting privacy settings.
| Command | What it does |
|---|---|
| agent | Send the message body as instructions to the group's AI agent. The agent's response is emailed back to you. |
| agent summarize | Ask the agent to summarize recent group activity (last 7 days or since your last read). |
| agent draft TOPIC | Ask the agent to draft a message to the group on a given topic. You review before it sends. |
| agent research QUERY | Ask the agent to research a topic and email you the results. |
| agent remind DATE MESSAGE | Set a reminder. The agent emails you (or the group) at the specified date/time. |
| agent translate LANG | Translate the most recent group message into the specified language and email it to you. |
| agent action | The message body contains action items. The agent extracts them, confirms with you, and tracks completion. |
12. Creating a Group
Groups can be created in two ways: by email or through the web interface.
Create by email
- Send an email to
[email protected] - The subject line becomes the group name (if available). Alphanumeric and hyphens only, lowercased automatically.
- The message body becomes the group description that all members see.
- You become the group manager automatically.
Create via web
- Log in to factory.success.build
- Navigate to the group creation form for the desired group type
- Enter the group name and description
- The system auto-generates an email slug from the group title (lowercased, hyphenated). You can customize it.
- Configure initial settings (posting permissions, moderation, reply behavior)
- Save. The group is immediately active.
What you get back
The system replies with:
Group Types
Factory supports multiple group types, each with email capability. The email slug format is the same across all types: {slug}[email protected].
13. Explain & Help
The help command
Returns a concise list of available commands organized by category, with one-line descriptions. Includes a link to this page for full documentation.
The explain command
Returns a plain-language explanation of how the group works. This is longer than help and is meant for someone who wants to understand the system, not just use it.
14. Full Settings Reference
All settings are changed by the group manager via set SETTING VALUE to the +cmd address, or through the web UI at factory.success.build/group/{group}/settings/mailgroup.
Communication
| Setting | Values | Default | Description |
|---|---|---|---|
| who-can-post | none, owners_only, managers_and_owners, all_members, all_platform_users, anyone | all_members | Who can send messages to the group. |
| moderation | none, new_members, non_members, all | none | Which messages require approval. See Moderation. |
| reply-to | list, sender, owner, custom, ignore | list | Where the Reply-To header points. |
| allow-dm | on, off | off | Allow members to send direct messages via handle. |
| subject-prefix | any text, or "off" | [groupname] | Prefix added to all message subjects. |
Privacy & Access
| Setting | Values | Default | Description |
|---|---|---|---|
| privacy | open, names-only, anonymous | names-only | What members can see about each other. |
| join | open, approval, invite-only, closed | open | How new members join. |
| archive | on, off, members-only | members-only | Message archive availability. Web archive at /group/{group}/emails. |
| member-list | visible, count-only, hidden | count-only | Whether the members command returns names or just a count. |
Content & Moderation
| Setting | Values | Default | Description |
|---|---|---|---|
| attachments | on, off, MIME types | on | Attachment policy. Use MIME types to whitelist: set attachments image/*, application/pdf |
| max-size | size in KB or MB | 2MB | Maximum message size including attachments. |
| blocklist | comma-separated words | (none) | Messages containing these words are held for review. |
Delivery
| Setting | Values | Default | Description |
|---|---|---|---|
| digest-default | each_email, daily_digest, weekly_digest | each_email | Default delivery mode for new members. |
| welcome-message | text (in body) | (default) | Custom welcome message for new members. Put full message in the email body. |
| goodbye-message | text (in body) | (default) | Custom message sent when a member leaves. |
| footer | text, or "off" | (default) | Text appended to every message. |
| header | text, or "off" | off | Text prepended to every message. |
Features
| Setting | Values | Default | Description |
|---|---|---|---|
| calendar | on, off | off | Enable shared group calendar and meeting features. |
| agent | on, off | on | Enable AI agent commands for members. |
| max-members | number, or "unlimited" | unlimited | Cap on group membership. |
| timezone | IANA timezone | America/New_York | Group timezone for digest delivery, meeting scheduling. |
Platform Administration
These settings are controlled by platform administrators at factory.success.build/admin/config/success-build/mailgroup and affect all groups.
| Setting | Values | Default | Description |
|---|---|---|---|
| command_channel | full, essentials, disabled | full | Controls which email commands are available platform-wide. See below. |
| enabled | on, off | on | Master kill switch for all mailgroup functionality (distribution, inbound processing, digest cron). |
Command channel levels
The command_channel setting controls what members can do via email commands sent to the +cmd address. This is a platform-level control — it applies to all groups and cannot be overridden per group.
| Level | What's available | Use case |
|---|---|---|
| full | All commands in this spec: subscription, delivery, identity, info, meetings, agent, manager commands, group creation by email, settings by email. | Fully email-native platform. Members never need to visit the web UI. |
| essentials | Subscription: subscribe, confirm, unsubscribe, leave, resubscribe. Delivery: digest, digest daily, digest weekly, nodigest, mute, unmute, vacation. Info: help, explain, info, settings, whoami, mygroups. Safety: All List-Unsubscribe one-click handling. Blocked: identity commands (set name, set network-name), discovery (members, who, index, search, last), sending (private, reply HANDLE), all manager commands, group creation by email, config by email, meetings, agent commands. | Members manage their own subscription and delivery preferences by email. All group administration and advanced features require the web UI. |
| disabled | No email commands processed. The +cmd address returns a reply directing the user to the web UI. List-Unsubscribe one-click still works (RFC 8058 compliance).Email distribution and digest delivery continue normally — this only disables the command channel, not the mail system itself. | Web-first platform. Email is for receiving group messages only. All actions happen at factory.success.build. |
command_channel=disabled is NOT the same as enabled=off. When enabled=off, the entire mailgroup system is shut down — no distribution, no digests, no inbound processing. When command_channel=disabled, email distribution works normally; only the command interface is turned off.
15. Message Flow Diagrams
Standard Distribution (all_members posting)
Moderated Distribution
Announcement Pattern (managers_and_owners posting)
16. Reply Message Examples
Subscribe confirmation
Welcome message
Unsubscribe acknowledgment
Manager message (managed mode)
Group Mail System specification — Factory platform — factory.success.build
\n