Send a Social Inbox direct message to the CRM
social_inbox.crm.send_to_crm
Turns an Instagram, Messenger or TikTok direct message into a CRM prospect or deal and moves its whole conversation to CRM → Messages (it leaves the Inbox AI's hands; reply to it with crm.social_dm.send). The lead source decides the destination, dedup, owner and AI qualification, like any lead: source_id (a direct-message lead source; default the one covering the account, or the system one), pipeline_id and stage_id when they exist, and destination (prospect or deal) only with the system source. owner_id sets the owner of the resulting deal (or prospect) in the same call, exactly as crm.deals.update or crm.prospects.update would (changelog, the new owner's notification, the CRM conversation's owner, crm.deal.updated): it must be a member of the organization (400 owner_not_member) and choosing it needs a CRM Manager: an owner, an admin, a CRM admin or a sales manager (403 crm_action_denied otherwise); both are checked before anything is written. The answer then says owner_id (the owner it ended with) and owner_changed. A record owned by an AI agent (ai-…; the lead source may have just given it one, and that agent starts right after the call) keeps that owner here: hand it over later with crm.prospects.update or crm.deals.update. An existing person with the same social identity is reused. Already linked: returns the current link with already_linked true and changes nothing but the owner when owner_id comes (so a retry finishes the job). A comment is not a conversation (409 crm_not_linkable: use social_inbox.crm.create_prospect). Requires full access to the Social Inbox and to the CRM, the CRM permission to create prospects and, for a credential, the crm:write scope. Optional dry run: with dry_run=true nothing is written (no source, person, prospect, deal, link or message, and the assignment rule's rotation does not move): it runs the same gates and checks and fails with the same errors (crm_not_linkable, crm_invalid_source, owner_not_member, crm_action_denied), or returns a Preview with already_linked and conversation_id; source (id, name, is_system, will_be_created: the system source this call would create the first time); destination; pipeline_id and stage_id where a new deal would land (null for a prospect or a reused record); person (id, existing: a person with the same social identity is reused); record (type prospect or deal, id, existing: the person's open deal or active prospect, or the record this contact got when it came in before, is reused); owner (id, from existing_record, assignment_rule, owner_id, contact_owner — a new prospect of a known person goes to that person's owner when they are a member of the organization — or none, rule_id, approximate: an assignment rule's choice is predicted with the same calculation as the rule's Test button and can change if another lead comes in first; a record that would be handed to an AI agent keeps it even with owner_id); and items_to_move (messages of the conversation that would move to CRM → Messages). Warnings say what the real call would silently ignore (a pipeline or stage that does not exist, destination with a non-system source), when the system source would be created and when the owner comes from a rule, an AI agent or the person's owner.
- Scope
social_inbox:write- Permission
- Edit in the module · CRM action:
create_prospect - MCP tool
social_inbox_crm_send_to_crmOn the full surface; on the compact one,mb_execute_operationwithid: "social_inbox.crm.send_to_crm".- Events it can emit
- crm.lead.createdcrm.deal.createdcrm.deal.updated
Declared cost: up to 15 reads and 214 writes per call (they count against the daily quota).
Parameters
item_idstringpathThe inbox item id (from social_inbox.items.list).
source_idstringbodyoptionalA direct-message lead source (crm.lead_sources.list) or a system one (_ig_dm…). Default: the one of the account that received it.
destinationenumbodyoptionalWith a system source only: create a prospect or a deal (an own source decides by its configuration).
Values: prospect, deal
pipeline_idstringbodyoptionalPipeline for a deal (crm.pipelines.list).
stage_idstringbodyoptionalStage of that pipeline (crm.pipelines.get).
owner_idstringbodyoptionalThe owner of the resulting prospect or deal, set in the same call: a member's user id. Needs a CRM Manager (owner, admin, CRM admin or sales manager).
Response
conversation_idstringperson_idstringitems_linkednumberchat_data_suggestednumberalready_linkedbooleanprospect_idstringdeal_idstringowner_idstring | nullOnly with owner_id: the owner the deal or prospect has after the call (null when the conversation has no prospect or deal).
owner_changedbooleanOnly with owner_id: whether this call changed the owner.
Errors
Example
curl -X POST "https://api.mb-suite.com/v1/social-inbox/items/{item_id}/crm/send" \
-H "Authorization: Bearer $MB_API_KEY"Try it with your test API key
With a test API key the request always goes to your practice organization: example data you can reset.
curl -X POST "https://api.mb-suite.com/v1/social-inbox/items/{item_id}/crm/send" \
-H "Authorization: Bearer $MB_TEST_KEY"