Engage from CRM (reply or dm or comment)

A user replies to a mention, comments on the post a mention is on, or sends a direct message to a social profile directly from the CRM. The message goes out through the connected account the mention came through (or, for a direct message, a brand or the your own X account), is logged as a Social activity, and is threaded under the source mention.

When this happens: The you click Reply, Comment on the post or Direct message on a mention in the Social inbox or on its activity page, or Direct message on a confirmed X profile in the Social tab of a Contact or Lead.

Step by step

  1. 1

    In the Social inbox (or on the mentions activity page), clicks Reply (Reply in messages on an X direct message) on a mention; Comment on the post writes a comment of the accounts own on the post the mention is on (not on X, which has only replies).

    Asks the composer's gate before opening: the accounts it may send from, the limit and how the network counts, what it answers, the blocked words. When it cannot send it says why instead ().

  2. 2

    Sees the account the reply goes out from, types the reply (the counter counts as the network does: X 280 weighted, each link 23, an emoji or a character outside X's Latin and punctuation ranges twice), optionally inserts a reply template (), clicks Send.

    EasyCRM checks again on the server: the gate, empty text, the network's limit, the blocked words (a refusal names them and the text is audited as SocialEngagementBlocked) and the double send (same text, same target, same account within 60 s: Looks like you already sent that — confirm to send again — ). EasyCRM sends through the account's token: X POST /2/tweets with in_reply_to_tweet_id, YouTube comments.insert, LinkedIn socialActions/{URN}/comments as the organization, Facebook and Instagram through the Page's or account's token. EasyCRM stores the SocialOutbound row with the provider's ExternalMessageId and link, creates the Social activity on the mention's contact or lead and ticket, marks the mention. Audits SocialEngagementSent and fires social.engagement.sent. The reply appears under the mention in Sent from the CRM, and the list row shows Answered.

Other paths

Send direct message

Click Direct message on an X mention (not on a direct message, where Reply in messages answers the conversation), or on a Contacts or Leads Social tab with a confirmed, looked-up X profile. The gate chooses the account: brand X accounts that granted direct messages first, then the your own. A person who never wrote to the account is asked X whether they take its direct messages (receives_your_dm, one paid read) when the composer opens; someone who already wrote to it is an open conversation and X is not asked. The action is gated upfront, not after a failed send. On Send, posts into the conversation or to the person and records the activity on the contact or lead of the profile.

Reply with a template

Types / or browses the composer's templates (FR-27): those for every channel and, for a Facebook or Instagram mention, those restricted to its Inbox channel. Inserts the template with its merge fields resolved against the mention's or profile's contact or lead when the your row-level scope reaches it (else they stay empty) and the sender; the text stays editable, nothing is sent automatically, and one use is counted.

If something goes wrong

Provider rejects send

Returns 4xx with reason (rate limit, blocked user, content policy, Instagrams one-level replies, Xs refusal of a person who takes no direct messages). EasyCRM shows inline error EasyCrm:Social:Engagement:Failed with the provider's own message (and when to retry, if rate limited). No row or activity is stored. No silent failures.

Gate blocks the send

EasyCRM finds the send impossible before the composer opens: the network has no such action here, the account was disconnected or must be reconnected, you lacks brand-account access or the opt-in was not granted, X's reply rule (since 23 February 2026 self-serve apps may reply only to a post whose author @mentioned or quoted the account, so a post found by a keyword search cannot be replied to), the profile is not confirmed and looked up, the person takes no direct messages, or no messaging account is available. Explains the reason and offers the alternatives that apply: Post a public reply, Send a direct message, Open on X (the provider's name) or Reconnect the account, or says to wait for the person to message the account first.

Double send

The same text to the same target from the same account was sent within 60 seconds; the send is refused with EasyCrm:Social:Engagement:Duplicate. Confirms; the composer resends with confirmDuplicate.

Blocked words or too long

The text holds a word or phrase of the company's blocked list (matched whole, ignoring case), or is over the network's limit. The composer warns while typing; the server refuses with the words named or the length and maximum. A refused text is kept in the audit log.

Good to know

  • Outbound messages always honour the provider's character limits (Meta's and LinkedIn's comment limits are configured, not documented by them) — the composer enforces them client-side and the server re-validates. Attachments are not supported yet.
  • A "blocked words" list (at most 200 words or phrases, kept by Admins in Settings — Integrations — Social accounts) blocks sends containing flagged terms with a clear error.
  • All outbound engagement is audit-logged with the message body, blocked sends included.
  • Another your own connection is never used; brand accounts, Pages and Instagram accounts need UseBrandAccounts.
  • A failed send stores nothing.