- Brand
- Salesmsg
- Category
- Sales & CRM
- Primary Subcategory
- AI Chat & Messaging Agents
Integration details
Description
Text your customers without leaving ChatGPT. Salesmsg connects your business texting inbox directly to your AI assistant - so you can send messages, read conversation threads, find or create contacts, and check reply history in seconds. Whether you're following up on a lead, responding to an unread thread, or starting a conversation with a new contact, ChatGPT handles it all through your real Salesmsg numbers. Simple to connect. Instant to text.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- AI Chat & Messaging Agents
- Secondary Subcategories
- None listed
- Brand
- Salesmsg
- Access
- Account required
- First tracked
- 2026-10-13
- Tool count
- 41
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for Salesmsg
Get updates when Salesmsg’s Discoverability Score or category rank changes.
Competing in ChatGPT AI Chat & Messaging Agents
View Category41 tools agents can invoke
Use this tool to add an existing Salesmessage tag to one contact by contact ID. The tag is a numeric ID string or exact label. If the label is missing, the tool uses MCP elicitation to ask the user before creating and assigning it. Ambiguous labels should be retried with a numeric tag ID. This changes contact tag assignments.
salesmsg_add_tag_to_contact
Use this tool to assign or unassign a Salesmessage conversation by conversation ID. This changes conversation ownership.
salesmsg_assign_conversation
Use this tool to create a broadcast to a filtered audience: send now, schedule for later, or save as a draft - for example 'text all VIPs sale starts today' or 'schedule that for Friday 9am'. Provide name, number_id (the sending number), and message and/or media_urls. Pick exactly one send mode: send_now=true, send_at+timezone (local time, converted to UTC), or is_draft=true. Non-draft sends need an audience: tag_ids, contact_ids, and/or segment_ids. Consider calling salesmsg_estimate_broadcast_credits first with the same number_id/message/media_urls/audience to preview the credit cost of a send_now or scheduled send - not required, and this call does not check for a prior estimate; if the organization doesn't have enough credit, this call itself fails with insufficient_credits or auto_recharge_disabled. Sending is queued and processed asynchronously by Core, not sent synchronously by this call - verify afterwards with salesmsg_get_broadcast or salesmsg_list_broadcasts. Set recurring_type to daily, weekly, or monthly to create a repeating template instead of a one-time send ('custom' cadences are not supported yet). If number_id does not belong to your organization, this call fails with a generic error rather than a specific one - check salesmsg_get_all_inboxes first if that matters.
salesmsg_create_broadcast
Use this tool to create a Salesmessage contact from a required E.164 phone number and optional name/email fields. It trims supported strings, reports duplicate-phone conflicts, and does not assign tags.
salesmsg_create_contact
Use this tool to permanently delete one non-recurring broadcast (any status - draft, scheduled, sent, stopped, failed, or otherwise) by positive broadcast_id after explicit user confirmation - for example cleaning up a test broadcast or removing a draft that's no longer needed. This is destructive and irreversible; refuse unless confirm is true. A recurring-template broadcast_id must be deleted through its own future recurring-delete tool, not this one. An unknown broadcast_id, a re-delete of an already-deleted broadcast, a cross-organization or non-owned broadcast_id, and a recurring-template broadcast_id are all reported as forbidden, not not_found - Core doesn't distinguish any of these cases.
salesmsg_delete_broadcast
Use this tool to delete one Salesmessage contact by positive contact_id after explicit user confirmation. This is destructive; refuse unless confirm is true.
salesmsg_delete_contact
Use this tool to preview the credit cost of a broadcast before creating it with send_now=true or a scheduled send_at - good practice, especially for a large or expensive audience, but not required: salesmsg_create_broadcast does not gate on a prior estimate call. If the organization doesn't have enough credit, salesmsg_create_broadcast's own call to Core fails with insufficient_credits or auto_recharge_disabled regardless of whether this tool was called first. This tool only estimates SMS/MMS pricing - it verifies number_id's sending team and rejects the call with a validation_error if that team is RCS-enabled, rather than return an incorrect price; it also rejects with forbidden if number_id cannot be verified against an accessible sending team at all. That verification step requires the teams:read scope in addition to broadcasts:read - a token without it fails this call with forbidden even though broadcasts:read alone is otherwise sufficient for every other broadcast tool.
salesmsg_estimate_broadcast_credits
Use this tool to list or search Salesmessage conversations within one inbox status with offset pagination. Use filter=closed for closed conversations and query for an optional contact name, phone number, or email search within that status.
salesmsg_get_all_conversations
Use this tool to list Salesmessage teams, also called inboxes, for sender selection. Returns only the inboxes the current user is assigned to. Inboxes the current user is not a member of are never returned by this tool. Use a returned inbox id as team_id for salesmsg_send_sms.
salesmsg_get_all_inboxes
Use this tool to fetch one broadcast's full record by ID - status, schedule, sender, message, and audience size - for example 'show me broadcast 42' or 'did that Black Friday broadcast send yet'. Use it to confirm a create/edit took effect, or to load context before pausing, resuming, or deleting a broadcast. Set include_recipients=true (or supply any recipients_* argument, which implies it) to also fetch a page of the recipient list - use this to answer 'who received this', 'how many', or 'which ones failed'. recipients_filter scopes the page to a delivery outcome (default sent_to = everyone targeted); recipients_search finds a specific contact by name, email, or phone. Recipients are paginated (recipients_page/recipients_length, default 25, max 100) - call again with a higher page for more. An unknown or cross-organization broadcast_id is reported as forbidden, not not_found - Core doesn't distinguish the two cases.
salesmsg_get_broadcast
Use this tool to get a single broadcast's delivery funnel and engagement results - delivered, undelivered, replies, no-replies, quiet-hours holdback, clicks, conversions, revenue, and unsubscribes - for example 'how did the Black Friday blast do' or 'what was the delivery rate on broadcast 42'. Also returns tool-computed delivery_rate/reply_rate/unsubscribe_rate (each as count/total, matching the dashboard's own percentage convention). stopped_by_user is a composite Core count that mixes recipients the user actually stopped mid-send with contacts that were never even created as a send for this broadcast - Core does not separate the two; treat it as an upper bound, not an exact figure. Set include_failed=true (or supply failed_page/failed_length, which implies it) to also fetch a page of undelivered/failed recipients - this list excludes recipients the user stopped mid-send; use salesmsg_get_broadcast with recipients_filter='skipped' for that subset specifically. conversions/revenue are null (not 0) when is_track_conversion is false, so an LLM doesn't imply a tracked-but-zero result; revenue is a plain USD number, not a formatted currency string. A recurring template's broadcast_id is mapped through as a running series aggregate across every occurrence sent so far, not a single send's result - it has no stopped_by_user figure (Core has no aggregate for it), and its conversions/revenue are always null with a notice, since Core and the current dashboard disagree on what that number should be for a series; include_failed is rejected for a template id, since Core has no cross-occurrence failed-recipient endpoint - call this tool on a specific occurrence's broadcast_id instead. An unknown or cross-organization broadcast_id is reported as forbidden, not not_found - Core doesn't distinguish the two cases.
salesmsg_get_broadcast_analytics
Use this tool to retrieve Salesmessage calling analytics for a date range: inbound, outbound, and forwarded call volume; answered, missed, busy, and failed outcomes; AI-vs-human answered inbound calls; and average call durations (in seconds). Supports optional inbox, number, member, and tag filters and an optional time-of-day window (hour_from/hour_to) for after-hours analysis; an end time earlier than the start time wraps across midnight. Filter values must be IDs; resolve names to IDs first with salesmsg_resolve_analytics_filters.
salesmsg_get_calls_analytics
Use this tool to retrieve the full safe profile for one Salesmessage contact by positive contact_id. Use it when the user asks for a contact profile or when detailed context is needed before another action.
salesmsg_get_contact
Use this tool to find the first Salesmessage conversation returned for a known contact_id after contact search, so the assistant can open that thread, read messages, or decide whether to start one. Returns status found with a conversation summary, or no_conversation when the contact exists but has never been messaged.
salesmsg_get_contact_conversation
Use this tool to retrieve Salesmessage contact growth analytics for a date range with optional inbox, number, member, and tag filters. Filter values must be IDs; resolve names to IDs first with salesmsg_resolve_analytics_filters.
salesmsg_get_contacts_analytics
Use this tool to retrieve contact data by one ID, by a batch of IDs, or as a paginated list slice. Use it when exact contact records are needed after search or before another contact action.
salesmsg_get_contacts_data
Use this tool to retrieve safe full metadata for one Salesmessage conversation by positive conversation_id. Use it when ownership, inbox, participants, call permission, or open/closed state is needed.
salesmsg_get_conversation
Use this tool to retrieve paginated message history for one Salesmessage conversation. Use it when a conversation ID is already known.
salesmsg_get_conversation_history
Use this tool to read recent messages in a specific Salesmessage conversation, ordered newest first. Use it to check what a contact last said, retrieve context before drafting a reply, or verify the delivery status of the most recent outbound message. Use before with a message id to page backward through older messages.
salesmsg_get_conversation_messages
Use this tool to retrieve Salesmessage conversation analytics (new, open, closed, and total thread counts) for a date range with optional inbox, number, member, and tag filters. Filter values must be IDs; resolve names to IDs first with salesmsg_resolve_analytics_filters.
salesmsg_get_conversations_analytics
Use this tool to retrieve Salesmessage credit-spend analytics. Set view to 'summary' (default) for a spend breakdown by category (messages, calls, AI texting agent, AI calling agent, transcripts, RVM) with per-interval charts and previous-period trends, or 'ledger' for an itemized, paginated list of individual charges. In the ledger view, filter to one category with object_event_type_group and set include_details=true to resolve each charge to its underlying message or call. Categories are billing-event types, not automations: the summary's 'chatbots_credits' is the AI Texting Agent's processing charge only, and does not include chatbot-triggered message-send credits, which are counted under 'messages_credits' instead — for the AI Texting Agent's full attributed spend (processing plus the message sends it triggers), use salesmsg_get_credit_usage_by_source with source_group=chatbot, which is not directly comparable to this tool's 'chatbots_credits'. Requires billing access (the billing:read scope).
salesmsg_get_credit_usage_analytics
Use this tool to break Salesmessage credit spend and message/call volume down by the automation that generated it (workflow, broadcast, campaign, trigger, AI texting or calling agent, or integration source) over a date range, to attribute spend and judge ROI. Returns filter-aware headline totals plus a paginated grid of per-automation rows (name, type, status, messages, and credits) sorted by credits (highest first) by default. Filter to one or more source groups with source_group, look up a single automation by name with search_term, and sort by name, type, status, messages, or credits. source_group=chatbot returns the AI Texting Agent's full attributed spend — its processing charge plus every message-send credit it triggered — which is a broader scope than, and not directly comparable to, salesmsg_get_credit_usage_analytics' 'chatbots_credits' (processing charge only).
salesmsg_get_credit_usage_by_source
Use this tool to retrieve one Salesmessage team, also called an inbox, by team_id. It returns whether the current user is a member; is_current_user_member=false means this inbox is not a valid sender for salesmsg_send_sms or send_message, regardless of any sending_options capability flags. Use the returned inbox id as team_id for salesmsg_send_sms only when is_current_user_member is true.
salesmsg_get_inbox
Use this tool to retrieve Salesmessage messaging analytics for a date range: inbound and outbound volume, deliverability (delivered, undelivered, and a computed delivery rate), carrier violations, and opt-outs, with totals and a per-interval time series. Supports optional inbox, number, and member filters (values must be IDs; resolve names to IDs first with salesmsg_resolve_analytics_filters) plus a messages-only sources filter for attributing volume by origin such as api, workflow, campaign, or zapier. Tag filtering is not supported for message analytics.
salesmsg_get_messages_analytics
Use this tool to retrieve Salesmessage message data in paginated, cursor, or scheduled-message modes. For simple recent conversation history, prefer salesmsg_get_conversation_messages.
salesmsg_get_messages_data
Use this tool to retrieve Salesmessage team responsiveness analytics: average time to first response, to response, and to close. Set breakdown to 'team' (default) for an aggregate snapshot with a per-interval trend, or 'member' for a paginated per-agent leaderboard sortable by any response-time metric. Durations are in seconds with a human-readable form. Supports an optional member filter in both views, plus an optional time-of-day window (hour_from/hour_to) for business-hours-only analysis. Inbox, number, and tag filtering are not supported for performance analytics in either view. Filter values must be IDs; resolve names to IDs first with salesmsg_resolve_analytics_filters.
salesmsg_get_performance_analytics
Use this tool to browse, search, or find the connected account's broadcasts by name, status, or type - for example 'show my broadcasts', 'find the Black Friday one', or 'what's scheduled next'. Read-only and paginated (newest-first by default). Set type to scope the list to sms, rvm (ringless voicemail), or recurring (returns recurring broadcast templates instead of one-time sends). search matches against the broadcast name or its message text (a hit may come from either), and sort_by/sort_order reorder the queue. Resolve a broadcast name to its id here before calling a tool that needs one.
salesmsg_list_broadcasts
Use this tool to inspect and control a recurring broadcast series - for example 'show the occurrences of the weekly reminder', 'when's the next send', 'pause it', 'stop all future sends', or 'delete the finished promo series'. action selects the operation (default get): get returns the series' occurrences (child sends - id, status, send_at, sent_at) with pagination, oldest first - optionally narrow with occurrence_status (does not guarantee the earliest send_at is 'the next' one; compare send_at values in the result yourself); activate/pause start or temporarily halt the series (resumable); finish permanently stops generating new occurrences (not resumable); rename changes the series' name (requires name); delete removes a finished series with no unprocessed occurrences (requires confirm=true); stop_all_future halts upcoming sends while keeping history - unlike every other action, recurring_id for stop_all_future must be a specific occurrence id from a prior get call, not the series' own id. Calling activate/pause/finish again after it already took effect is reported as success, not an error; a genuinely invalid transition (e.g. activating a finished series) is reported as a conflict. get can, as a side effect of Core's own pagination logic, materialize a handful of new not-yet-existing occurrences for an active series - the same thing the production dashboard does when browsing the same page; it never sends a message. An unknown recurring_id is not_found for every action except get, where a known Core issue returns a generic service-unavailable error instead; a cross-organization, non-owned, or not-actually-a-recurring-series id is forbidden.
salesmsg_manage_recurring_broadcast
Use this tool to list, create, update, delete, attach, or remove Salesmessage tags. Choose an explicit action; write actions can change tag records or contact-tag assignments.
salesmsg_manage_tags
Use this tool to remove a Salesmessage tag from one contact by contact ID. The tag is a numeric ID string or exact label; missing labels return tag_not_found, ambiguous labels return ambiguous_tag, and tags that are not attached return not_tagged with ok=true. This changes contact tag assignments.
salesmsg_remove_tag_from_contact
Use this tool to resolve a Salesmessage inbox, number, team member, or tag name into the ID that the analytics tools require. Provide a human name or phrase and it returns matching candidates with their IDs and labels. Call it before an analytics tool when the user gives names instead of IDs; if several candidates match, ask the user which one before continuing.
salesmsg_resolve_analytics_filters
Use this tool to schedule an outbound Salesmessage message or list scheduled messages. Choose an explicit action; scheduling creates a future outbound message.
salesmsg_schedule_message
Use this tool to search Salesmessage contacts by free-text partial name, email, or phone query, list contacts, or list contacts with an applied tag ID. Standalone free-text queries must be at least 2 characters; free-text results keep the Public API relevance order; page size is capped at 100.
salesmsg_search_contacts
Use this tool to search Salesmessage conversations by free text across contacts or message content. Provide a trimmed term of at least 3 characters. This tool does not filter by conversation status; use salesmsg_get_all_conversations with one filter value for open, closed, or other inbox-status searches.
salesmsg_search_conversations
Use this tool to search or list the connected account's saved segments by name, resolving a segment name into the numeric segment_id that salesmsg_create_broadcast, salesmsg_update_broadcast, and salesmsg_manage_recurring_broadcast need for their audience selector. Read-only and paginated. Omit search to list every segment. If several candidates match, ask the user which one before continuing.
salesmsg_search_segments
Use this tool to send a message to an existing conversation or to a conversation resolved from a contact ID. This creates an outbound message and may create or reuse a conversation before sending. If the returned message is failed, rejected, opted-out, or sender-unverified, surface the error instead of treating it as sent.
salesmsg_send_message
Use this tool to queue an immediate text-only Salesmessage SMS to an existing, opted-in contact phone number from a specified member team with an active local sender or verified toll-free sender. This creates an outbound message but does not poll or assume final delivery status. If this returns blocked, opted_out, sender_number_unverified, or contact_not_found, do not fall back to salesmsg_send_message; surface the error to the user.
salesmsg_send_sms
Use this tool to inspect Salesmsg MCP server metadata, supported component families, and configured Public API version.
salesmsg_server_info
Use this tool to pause a broadcast that's currently sending, or resume one that's paused - for example 'pause the broadcast going out now' or 'resume broadcast 42'. action must be exactly pause or resume. Defaults to a one-time broadcast (or a single occurrence of a recurring series); set broadcast_kind='recurring' to pause/resume an entire recurring template's future sends instead (requires broadcasts-recurring:write too). Pausing only works on a currently-sending broadcast (or active template); resuming only works on a paused broadcast (or inactive template) - any other current status is reported as a conflict naming the broadcast's actual status, not applied silently. Calling this again after it already took effect is reported as success, not an error. An unknown broadcast_id is not_found; a cross-organization, non-owned, or (for broadcast_kind=recurring) not-actually-a-template id is forbidden.
salesmsg_set_broadcast_status
Use this tool to change one or more fields of a draft or scheduled broadcast that hasn't finished sending - for example 'fix the typo in that broadcast' or 'move it to 10am'. Provide broadcast_id and only the fields you want to change; every other field is preserved as-is (this tool reads the current broadcast first, so you never need to restate unrelated fields). A call with no changed field besides broadcast_id is rejected before any network call. Pick at most one send-mode change per call: send_now=true, send_at+timezone (local time, converted to UTC), or is_draft=true - omit all three to leave the current send mode unchanged. Moving to send_now or send_at requires an audience: tag_ids, contact_ids, and/or segment_ids, either supplied in this call or already present on the broadcast - rejected before the update is sent to Core, same as salesmsg_create_broadcast. Only draft and scheduled broadcasts can be edited; a broadcast that is paused, sent, failed, invalid, stopped, or already sending is rejected with a conflict error, as are recurring broadcast templates (not supported by this tool yet). If number_id does not belong to your organization, this call fails with a generic error rather than a specific one - check salesmsg_get_all_inboxes first if that matters.
salesmsg_update_broadcast
Use this tool to partially update a Salesmessage contact by ID without overwriting unspecified fields. It supports phone, name, email, and custom fields; use the tags workflow for tag changes.
salesmsg_update_contact
Salesmsg ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Salesmsg's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are Salesmsg alternatives on ChatGPT?
As of 2026-10-13, Salesmsg competes with Alhena AI, Bedones, Bravos AI, BubblaV AI Chatbot, Capi Agent for Merchants, Chatbase, eesel, Engage and 22 more in ChatGPT AI Chat & Messaging Agents, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.