Skip to main content
MSG

Message Manager

Conversations & Messaging · Intermediate · Updated March 2026

Retrieve individual messages, update read status, and manually create inbound/outbound message records across all communication channels.

While Conversation CRUD handles the thread level, Message Manager works at the individual message level. Retrieve specific messages, mark them as read or unread, and create message records manually. The manual creation capability is particularly powerful — it lets you log messages from external systems into GHL’s conversation timeline, maintaining a complete communication history even when conversations happen outside GHL.

What This MCP Tool Does

Retrieve individual message details by ID, update message status (read/unread), and create inbound or outbound message records manually. Manual message creation is useful for logging interactions that happened in external systems so the GHL conversation timeline stays complete.

Endpoint Reference

Get a message: GET /messages/{messageId} Retrieve the full message record including content, timestamps, delivery status, and metadata.

Update message status: PUT /messages/{messageId}/status Mark a message as read or unread. Affects the conversation’s unread count in the inbox.

Add an inbound message record: POST /conversations/messages/inbound Create a record that looks like an inbound message from the contact. Used to log external communications.

Add an outbound message record: POST /conversations/messages/outbound Create a record that looks like an outbound message to the contact. Used to log external sends.

Authentication

Requires a Private Integration Token (PIT) with the conversations scope enabled.

Key Parameters

For manual message creation:

  • type — message type (SMS, Email, etc.)
  • contactId — the contact associated with the message
  • message — the message content
  • conversationId — the conversation thread to add to
  • direction — inbound or outbound

Important Notes

Manually created messages appear in the conversation timeline alongside real messages. There’s no visual distinction, which is the point — it creates a complete record regardless of where the interaction happened.

Inbound message records created via MCP can trigger workflows that listen for inbound messages. Be careful with this — if you log an external message and a workflow is configured to auto-respond to inbound messages, it will fire on your logged record.

Read status updates affect the inbox’s unread badge counts. Marking messages as read through MCP clears the notification indicators for team members viewing the inbox.

Common Questions

Why would I create manual message records? To maintain a complete communication history. If your team texts a client from a personal phone, or has a conversation through an external system, logging those interactions in GHL keeps the CRM timeline accurate.

Do manually created inbound messages trigger workflows? Yes, potentially. If a workflow is triggered by inbound messages on the relevant channel, a manually created inbound record can fire it. Plan accordingly.

Can I edit the content of an existing message? No. Messages are immutable once created. You can only update status (read/unread), not content.

How do I find a specific message ID? Message IDs are returned when you send messages via SMS Operations or Email Send, and they’re included in conversation detail responses from Conversation CRUD.