Message Events¶
GroupMe messages can contain an event
object, which describes system-generated occurrences or specific actions within a group, subgroup (topic), or DM. These events provide structured data about changes like members being added, polls being created, calendar events being updated, messages being pinned, and more. Messages containing events often have system: true
or a sender_type
of "system" or "service".
This document lists the different event.type
values observed, along with the structure of their corresponding event
object.
API Inconsistency: User ID Data Types
Developers should be aware that within the event.data
objects detailed below, user IDs (such as user.id
, member.id
, pinned_by
, etc.) are sometimes represented as numbers and other times as strings. This is inconsistent with the general GroupMe API practice where user IDs are typically strings. These types may be patched at any time.
This highlights the critical need to handle both types robustly in your code.
Membership Events¶
Events related to group membership changes (users joining, leaving, etc.). These apply to main groups.
membership.announce.added
¶
Indicates that one or more users have been added to the group by an existing member.
Object Structure | |
---|---|
-
type
string - Must be
membership.announce.added
. -
data (object) - Contains details of the added members.
-
added_users (array of objects) - A list of users who were added. Each object contains:
-
id
number - The ID of the added user (e.g.,
131245991
). (See warning about User ID types). -
nickname
string - The nickname of the added user.
-
-
adder_user (object) - Information about the user who added the new member(s).
-
id
number - The ID of the user who added the new member(s).
-
nickname
string - The nickname of the user who added the new member(s).
-
-
membership.announce.joined
¶
Indicates that a user has joined the group (e.g., via a share link or if the group is open).
Note
This event typically fires in groups that either have "Request to Join" enabled or in smaller groups (generally with fewer than ~200 members). In very large, open groups, individual join events might not always be generated.
Object Structure | |
---|---|
-
type
string - Must be
membership.announce.joined
. -
data (object) - Contains details of the user who joined.
-
user (object) - Information about the user who joined.
-
id
number - The ID of the user who joined (e.g.,
131245991
). (See warning about User ID types). -
nickname
string - The nickname of the user who joined.
-
-
membership.announce.rejoined
¶
Indicates that a user has rejoined the group.
Object Structure | |
---|---|
-
type
string - Must be
membership.announce.rejoined
. -
data (object) - Contains details of the user who rejoined.
-
user (object) - Information about the user who rejoined.
-
id
number - The ID of the user who rejoined (e.g.,
131245991
). (See warning about User ID types). -
nickname
string - The nickname of the user who rejoined.
-
-
membership.notifications.exited
¶
Indicates that a user has left the group themselves.
Object Structure | |
---|---|
-
type
string - Must be
membership.notifications.exited
. -
data (object) - Contains details of the user who exited.
-
removed_user (object) - Information about the user who exited the group.
-
id
number - The ID of the user who exited (e.g.,
131245991
). (See warning about User ID types). -
nickname
string - The nickname of the user who exited.
-
-
membership.notifications.removed
¶
Indicates that a user has been removed from the group by another member.
Object Structure | |
---|---|
-
type
string - Must be
membership.notifications.removed
. -
data (object) - Contains details of the removed member.
-
remover_user (object) - Information about the user who performed the removal.
-
id
number - The ID of the user who performed the removal.
-
nickname
string - The nickname of the user who performed the removal.
-
-
removed_user (object) - Information about the user who was removed.
-
id
number - The ID of the user who was removed (e.g.,
131245991
). (See warning about User ID types). -
nickname
string - The nickname of the user who was removed.
-
-
Group Management Events¶
Events related to changes in main group settings and properties.
group.avatar_change
¶
Indicates that the group's avatar has been changed.
Object Structure | |
---|---|
-
type
string - Must be
group.avatar_change
. -
data (object) - Contains details of the avatar change.
-
user (object) - Information about the user who changed the avatar.
-
id
number - The ID of the user who changed the avatar.
-
nickname
string - The nickname of the user who changed the avatar.
-
-
avatar_url
string - The URL of the new group avatar.
-
group.like_icon_removed
¶
Indicates that the group's custom like icon has been removed, reverting to the default.
Object Structure | |
---|---|
-
type
string - Must be
group.like_icon_removed
. -
data (object) - Contains details of the like icon removal.
-
user (object) - Information about the user who removed the custom like icon.
-
id
number - The ID of the user who removed the custom like icon.
-
nickname
string - The nickname of the user who removed the custom like icon.
-
-
group.like_icon_set
¶
Indicates that a custom like icon has been set for the group.
Object Structure | |
---|---|
-
type
string - Must be
group.like_icon_set
. -
data (object) - Contains details of the new like icon.
-
user (object) - Information about the user who set the like icon.
-
id
number - The ID of the user who set the like icon.
-
nickname
string - The nickname of the user who set the like icon.
-
-
like_icon (object) - Details of the custom like icon.
-
pack_id
number - The ID of the emoji pack.
-
pack_index
number - The index of the emoji within the pack.
-
type
string - The type of like icon (e.g., "emoji").
-
-
group.name_change
¶
Indicates that the group's name has been changed.
Object Structure | |
---|---|
-
type
string - Must be
group.name_change
. -
data (object) - Contains details of the name change.
-
user (object) - Information about the user who changed the group name.
-
id
number - The ID of the user who changed the group name.
-
nickname
string - The nickname of the user who changed the group name.
-
-
name
string - The new name of the group.
-
group.owner_changed
¶
Indicates that the ownership of the group has been transferred.
Object Structure | |
---|---|
-
type
string - Must be
group.owner_changed
. -
data (object) - Contains details of the ownership change.
-
old_owner (object) - Information about the previous owner.
-
id
number - The ID of the previous owner (e.g.,
131245991
). (See warning about User ID types). -
nickname
string - The nickname of the previous owner.
-
-
new_owner (object) - Information about the new owner.
-
id
number - The ID of the new owner.
-
nickname
string - The nickname of the new owner.
-
-
group.requires_approval_disabled
¶
Indicates that the "join requires approval" setting has been disabled for the group.
Object Structure | |
---|---|
-
type
string - Must be
group.requires_approval_disabled
. -
data (object) - Contains details of the setting change.
-
user (object) - Information about the user who changed the setting.
-
id
number - The ID of the user who changed the setting.
-
nickname
string - The nickname of the user who changed the setting.
-
-
group.requires_approval_enabled
¶
Indicates that the "join requires approval" setting has been enabled for the group.
Object Structure | |
---|---|
-
type
string - Must be
group.requires_approval_enabled
. -
data (object) - Contains details of the setting change.
-
user (object) - Information about the user who changed the setting.
-
id
number - The ID of the user who changed the setting.
-
nickname
string - The nickname of the user who changed the setting.
-
-
group.role_change_admin
¶
Indicates that a member's role has been changed regarding admin status.
Object Structure | |
---|---|
-
type
string - Must be
group.role_change_admin
. -
data (object) - Contains details of the role change.
-
user (object) - Information about the user who performed the role change.
-
id
number - The ID of the user who performed the role change.
-
nickname
string - The nickname of the user who performed the role change.
-
-
role
string - The new role assigned (e.g., "admin").
-
member (object) - Information about the member whose role was changed.
-
id
number - The ID of the member whose role was changed (e.g.,
131245991
). (See warning about User ID types). -
nickname
string - The nickname of the member whose role was changed.
-
-
group.shared
¶
Indicates that group sharing (join link) has been enabled.
Object Structure | |
---|---|
-
type
string - Must be
group.shared
. -
data (object) - Contains details of the group sharing enablement.
-
user (object) - Information about the user who enabled sharing.
-
id
number - The ID of the user who enabled sharing.
-
nickname
string - The nickname of the user who enabled sharing.
-
-
share_url
string - The URL to join the group.
-
share_qr_code_url
string - The URL for the QR code image to join the group.
-
group.subgroup_created
¶
Indicates that a new topic (subgroup/channel) has been created within the group.
Object Structure | |
---|---|
-
type
string - Must be
group.subgroup_created
. -
data (object) - Contains details of the created subgroup.
-
user (object) - Information about the user who created the topic.
-
id
number - The ID of the user who created the topic.
-
nickname
string - The nickname of the user who created the topic.
-
-
subgroup_topic
string - The name/topic of the created subgroup.
-
subgroup_avatar_url
string or null - The URL of the avatar for the subgroup, if any.
-
subgroup_id
number - The ID of the newly created subgroup.
-
group.subgroup_removed
¶
Indicates that a topic (subgroup/channel) has been removed from the group.
Object Structure | |
---|---|
-
type
string - Must be
group.subgroup_removed
. -
data (object) - Contains details of the removed subgroup.
-
user (object) - Information about the user who removed the topic.
-
id
number - The ID of the user who removed the topic.
-
nickname
string - The nickname of the user who removed the topic.
-
-
subgroup_topic
string - The name/topic of the removed subgroup.
-
subgroup_id
number - The ID of the removed subgroup.
-
group.theme_change
¶
Indicates that the group's chat theme has been changed.
Object Structure | |
---|---|
-
type
string - Must be
group.theme_change
. -
data (object) - Contains details of the theme change.
-
user (object) - Information about the user who changed the theme.
-
id
number - The ID of the user who changed the theme.
-
nickname
string - The nickname of the user who changed the theme.
-
-
theme_name
string - The name of the new theme (e.g., "ideas", "default", "stars").
-
group.topic_change
¶
Indicates that the group's description (often referred to as "topic" in settings) has been changed.
Object Structure | |
---|---|
-
type
string - Must be
group.topic_change
. -
data (object) - Contains details of the description change.
-
user (object) - Information about the user who changed the group description.
-
id
number - The ID of the user who changed the group description.
-
nickname
string - The nickname of the user who changed the group description.
-
-
topic
string - The new description of the group.
-
group.type_change
¶
Indicates that the group's type (e.g., private, closed, announcement) has been changed.
Object Structure | |
---|---|
-
type
string - Must be
group.type_change
. -
data (object) - Contains details of the type change.
-
user (object) - Information about the user who changed the group type.
-
id
number - The ID of the user who changed the group type.
-
nickname
string - The nickname of the user who changed the group type.
-
-
type
string - The new type of the group. Observed values include: *
"closed"
: Members can be added by other members. *"private"
: Only admins can add new members. (Note: API text might sometimes say "open" for this type). *"announcement"
: Only admins can send messages. -
message_edit_period
number - The time window (in minutes) during which messages can be edited. This value can change based on the group type (e.g.,
15
for closed/private,43200
for announcement, ornull
/absent).
-
group.unshared
¶
Indicates that group sharing (join link) has been disabled.
Object Structure | |
---|---|
-
type
string - Must be
group.unshared
. -
data (object) - Contains details of the group sharing disablement.
-
user (object) - Information about the user who disabled sharing.
-
id
number - The ID of the user who disabled sharing.
-
nickname
string - The nickname of the user who disabled sharing.
-
-
group.visibility_set.community
¶
Indicates the group's visibility has been set to a specific community (e.g., a campus directory).
Note
The specific school directory information is usually part of the message text rather than the event data.
Object Structure | |
---|---|
-
type
string - Must be
group.visibility_set.community
. -
data (object) - Contains details of the visibility change.
-
user (object) - Information about the user who changed the visibility.
-
id
number - The ID of the user who changed the visibility.
-
nickname
string - The nickname of the user who changed the visibility.
-
-
group.visibility_set.hidden
¶
Indicates the group has been made hidden and is not discoverable.
Object Structure | |
---|---|
-
type
string - Must be
group.visibility_set.hidden
. -
data (object) - Contains details of the visibility change.
-
user (object) - Information about the user who changed the visibility.
-
id
number - The ID of the user who changed the visibility.
-
nickname
string - The nickname of the user who changed the visibility.
-
-
group.visibility_set.searchable
¶
Indicates the group has been made visible and can be found in Discover.
Object Structure | |
---|---|
-
type
string - Must be
group.visibility_set.searchable
. -
data (object) - Contains details of the visibility change.
-
user (object) - Information about the user who changed the visibility.
-
id
number - The ID of the user who changed the visibility.
-
nickname
string - The nickname of the user who changed the visibility.
-
-
Subgroup/Topic Management Events¶
Events related to changes in subgroup (topic/channel) settings and properties within a main group.
group.subgroup_avatar_change
¶
Indicates that a subgroup's avatar has been changed.
Object Structure | |
---|---|
-
type
string - Must be
group.subgroup_avatar_change
. -
data (object) - Contains details of the subgroup avatar change.
-
user (object) - Information about the user who changed the subgroup avatar.
-
id
number - The ID of the user.
-
nickname
string - The nickname of the user.
-
-
subgroup_topic
string - The current name/topic of the subgroup.
-
subgroup_avatar_url
string - The URL of the new subgroup avatar.
-
parent_id
number - The ID of the main group this subgroup belongs to.
-
group.subgroup_description_change
¶
Indicates that a subgroup's description has been changed.
Object Structure | |
---|---|
-
type
string - Must be
group.subgroup_description_change
. -
data (object) - Contains details of the subgroup description change.
-
user (object) - Information about the user who changed the subgroup description.
-
id
number - The ID of the user.
-
nickname
string - The nickname of the user.
-
-
subgroup_topic
string - The name/topic of the subgroup.
-
subgroup_description
string - The new description for the subgroup.
-
parent_id
number - The ID of the main group this subgroup belongs to.
-
group.subgroup_like_icon_change
¶
Indicates that a subgroup's custom like icon has been changed or removed.
Object Structure | |
---|---|
-
type
string - Must be
group.subgroup_like_icon_change
. -
data (object) - Contains details of the subgroup like icon change.
-
user (object) - Information about the user who changed the like icon.
-
id
number - The ID of the user.
-
nickname
string - The nickname of the user.
-
-
subgroup_topic
string - The name/topic of the subgroup.
-
parent_id
number - The ID of the main group this subgroup belongs to.
-
like_icon (object or null) - Details of the custom like icon. If
null
, the custom like icon was removed.-
pack_id
number - The ID of the emoji pack (if
like_icon
is not null). -
pack_index
number - The index of the emoji within the pack (if
like_icon
is not null). -
type
string - The type of like icon, e.g., "emoji" (if
like_icon
is not null).
-
-
group.subgroup_name_change
¶
Indicates that a subgroup's name (topic) has been changed.
Object Structure | |
---|---|
-
type
string - Must be
group.subgroup_name_change
. -
data (object) - Contains details of the subgroup name change.
-
user (object) - Information about the user who changed the subgroup name.
-
id
number - The ID of the user.
-
nickname
string - The nickname of the user.
-
-
subgroup_topic
string - The new name/topic of the subgroup.
-
parent_id
number - The ID of the main group this subgroup belongs to.
-
group.subgroup_type_change
¶
Indicates that a subgroup's type (e.g., closed, announcement) has been changed.
Object Structure | |
---|---|
-
type
string - Must be
group.subgroup_type_change
. -
data (object) - Contains details of the subgroup type change.
-
user (object) - Information about the user who changed the subgroup type.
-
id
number - The ID of the user.
-
nickname
string - The nickname of the user.
-
-
subgroup_topic
string - The name/topic of the subgroup.
-
parent_id
number - The ID of the main group this subgroup belongs to.
-
type
string - The new type of the subgroup (e.g., "closed", "announcement").
-
message_edit_period
number - The time window for message editing, corresponding to the type (e.g.,
15
for closed,43200
for announcement).
-
Call Events¶
Events related to group calls.
group.call.ended
¶
Indicates that a group call has ended.
Object Structure | |
---|---|
-
type
string - Must be
group.call.ended
. -
data (object) - Contains details about the ended call.
-
call_duration
number - The duration of the call in milliseconds.
-
user (object) - Information about who ended the call.
-
id
string - The ID of the user who ended the call (e.g.,
"system"
). In some cases, if a user ends it, this might be their numerical ID as a string or number - API is inconsistent. -
nickname
string - The nickname of the user who ended the call (e.g.,
"system"
).
-
-
group.call.started
¶
Indicates that a group call has been started.
Object Structure | |
---|---|
-
type
string - Must be
group.call.started
. -
data (object) - Contains details about the started call.
-
meeting_id
string - A URL or identifier for the meeting, often related to Microsoft Teams.
-
user (object) - Information about the user who started the call.
-
id
string - The ID of the user who started the call.
-
nickname
string - The nickname of the user who started the call.
-
-
Poll Events¶
Events related to polls created within a group or subgroup.
poll.created
¶
Indicates that a new poll has been created.
Object Structure | |
---|---|
-
type
string - Must be
poll.created
. -
data (object) - Contains details of the created poll.
-
conversation (object) - Information about the context of the poll.
-
id
string - The ID of the group or subgroup/conversation where the poll was created.
-
-
poll (object) - Information about the poll itself.
-
id
string - The ID of the newly created poll.
-
subject
string - The question or subject of the poll.
-
-
user (object) - Information about the user who created the poll.
-
id
string - The ID of the user who created the poll
-
nickname
string - The nickname of the user who created the poll.
-
-
poll.finished
¶
Indicates that a poll has expired or been closed.
Object Structure | |
---|---|
-
type
string - Must be
poll.finished
. -
data (object) - Contains details of the finished poll.
-
conversation (object) - Information about the context of the poll.
-
id
string - The ID of the group or subgroup/conversation where the poll existed.
-
-
options (array of objects) - The options that were available in the poll. Each object contains:
-
id
string - The ID of the poll option.
-
title
string - The text of the poll option.
-
voter_ids
array of strings (optional) - A list of user IDs who voted for this option.
-
votes
number (optional) - The number of votes this option received. May not be present if no votes or if data is incomplete.
-
-
poll (object) - Information about the poll itself.
-
id
string - The ID of the poll that finished.
-
subject
string - The question or subject of the poll.
-
-
Calendar Events¶
Events related to the group or DM calendar feature.
Note
These events can occur in both group chats and Direct Messages.
calendar.event.cancelled
¶
Indicates that a calendar event has been canceled.
Object Structure | |
---|---|
-
type
string - Must be
calendar.event.cancelled
. -
data (object) - Contains the details of the cancellation.
-
event (object) - Information about the event that was cancelled.
-
id
string - The ID of the canceled calendar event.
-
name
string - The name of the canceled calendar event.
-
-
user (object) - Information about the user who performed the action.
-
id
string - The ID of the user who canceled the event.
-
nickname
string - The nickname of the user who canceled the event.
-
-
calendar.event.created
¶
Indicates that a new calendar event has been created.
Object Structure | |
---|---|
-
type
string - Must be
calendar.event.created
. -
data (object) - Contains the details of the created event.
-
event (object) - Information about the newly created event.
-
id
string - The ID of the newly created calendar event.
-
name
string - The name of the newly created calendar event.
-
-
original_url
string (optional) - The full URL to the event on GroupMe's website. (Path may vary based on context, e.g., group ID or DM ID).
-
url
string - A shortened URL to the event.
-
user (object) - Information about the user who created the event.
-
id
string - The ID of the user who created the event.
-
nickname
string - The nickname of the user who created the event.
-
-
calendar.event.starting
¶
Indicates that a calendar event is starting soon or now.
Object Structure | |
---|---|
-
type
string - Must be
calendar.event.starting
. -
data (object) - Contains details about the starting event.
-
call_started
boolean - Indicates if a call was automatically started for this event.
-
event_name
string - The name of the event that is starting.
-
minutes
string - The number of minutes until the event starts (e.g., "0" for starting now, "15" for 15 minutes).
-
calendar.event.updated
¶
Indicates that a calendar event's details have been updated.
Object Structure | |
---|---|
-
type
string - Must be
calendar.event.updated
. -
data (object) - Contains details of the update.
-
event (object) - Information about the updated event.
-
id
string - The ID of the updated calendar event.
-
name
string - The current (potentially updated) name of the calendar event.
-
-
updated_fields
array of strings - A list of fields that were updated (e.g.,
"calendar.event.field.name"
,"calendar.event.field.description"
,"calendar.event.field.time"
). -
user (object) - Information about the user who updated the event.
-
id
string - The ID of the user who updated the event.
-
nickname
string - The nickname of the user who updated the event.
-
-
calendar.event.user.going
¶
Indicates a user has RSVP'd as "going" to a calendar event.
Object Structure | |
---|---|
-
type
string - Must be
calendar.event.user.going
. -
data (object) - Contains details of the RSVP.
-
event (object) - Information about the event.
-
id
string - The ID of the calendar event.
-
name
string - The name of the calendar event.
-
-
user (object) - Information about the user who RSVP'd.
-
id
string - The ID of the user who RSVP'd.
-
nickname
string - The nickname of the user who RSVP'd.
-
-
calendar.event.user.not_going
¶
Indicates a user has RSVP'd as "not going" to a calendar event.
Object Structure | |
---|---|
-
type
string - Must be
calendar.event.user.not_going
. -
data (object) - Contains details of the RSVP.
-
event (object) - Information about the event.
-
id
string - The ID of the calendar event.
-
name
string - The name of the calendar event.
-
-
user (object) - Information about the user who RSVP'd.
-
id
string - The ID of the user who RSVP'd.
-
nickname
string - The nickname of the user who RSVP'd.
-
-
calendar.event.user.undecided
¶
Indicates a user has changed their RSVP to "undecided" for a calendar event.
Object Structure | |
---|---|
-
type
string - Must be
calendar.event.user.undecided
. -
data (object) - Contains details of the RSVP change.
-
event (object) - Information about the event.
-
id
string - The ID of the calendar event.
-
name
string - The name of the calendar event.
-
-
user (object) - Information about the user who changed their RSVP.
-
id
string - The ID of the user who changed their RSVP.
-
nickname
string - The nickname of the user who changed their RSVP.
-
-
General Message Events¶
Events that can apply to messages in various contexts (groups, DMs, subgroups).
message.deleted
¶
Indicates that a message has been deleted.
Object Structure | |
---|---|
-
type
string - Must be
message.deleted
. -
data (object) - Contains details about the deleted message.
-
deleted_at
number - Unix timestamp (seconds) of when the message was deleted.
-
deletion_actor
string - Who deleted the message (e.g.,
"sender"
,"admin"
). -
message_id
string - The ID of the message that was deleted.
-
message.pinned
¶
Indicates that a message has been pinned in the chat.
Object Structure | |
---|---|
-
type
string - Must be
message.pinned
. -
data (object) - Contains details of the pinned message.
-
message_id
string - The ID of the message that was pinned.
-
pinned
boolean - Always
true
for this event type. -
pinned_by
string - The user ID of the person who pinned the message.
-
pinned_at
number - Unix timestamp (seconds) of when the message was pinned.
-
Bot Events¶
Events related to bots being added, removed, or modified in a group.
bot.add
¶
Indicates that a bot has been added to the group.
Object Structure | |
---|---|
-
type
string - Must be
bot.add
. -
data (object) - Contains details of the bot addition.
-
user (object) - Information about the user who added the bot.
-
id
number - The ID of the user who added the bot.
-
nickname
string - The nickname of the user who added the bot.
-
-
bot
string - The name of the bot that was added.
-
bot.del
¶
Indicates that a bot has been removed from the group.
Object Structure | |
---|---|
-
type
string - Must be
bot.del
. -
data (object) - Contains details of the bot removal.
-
user (object) - Information about the user who removed the bot.
-
id
number - The ID of the user who removed the bot.
-
nickname
string - The nickname of the user who removed the bot.
-
-
bot
string - The name of the bot that was removed.
-
bot.rename
¶
Indicates that a bot has been renamed.
Object Structure | |
---|---|
-
type
string - Must be
bot.rename
. -
data (object) - Contains details of the bot rename.
-
user (object) - Information about the user who renamed the bot.
-
id
number - The ID of the user who renamed the bot.
-
nickname
string - The nickname of the user who renamed the bot.
-
-
bot_name_old
string - The previous name of the bot.
-
bot_name_new
string - The new name of the bot.
-
Copilot Events¶
Events related to the GroupMe Copilot (AI assistant) feature.
copilot.group.privacy_notice
¶
Indicates that a privacy notice regarding the Copilot feature has been posted in the group. This typically occurs when Copilot is activated or first mentioned.
Object Structure | |
---|---|
-
type
string - Must be
copilot.group.privacy_notice
. -
data (object) - Contains details related to the notice.
-
trigger_message
string - The ID of the message that likely triggered the display of this privacy notice.
-
Note
There might be other event types or variations not covered here. If you find any, please edit this page and submit a pull request.