Portal Community
Messaging platform approval required: The Instagram Messaging API requires your Meta app to have the instagram_manage_messages permission, which requires App Review approval from Meta. You cannot send messages to users who have not previously messaged your account (outside the 24-hour standard messaging window or without additional approvals).

When to Use

Configuration

Connection

FieldRequiredDescription
accessTokenRequiredLong-lived Instagram access token stored in BizFirst Credentials Manager.
igUserIdRequiredYour Instagram Business/Creator account ID (the sender account).

Operation

FieldRequiredDescription
resourceRequiredMust be messaging.
operationRequiredMust be send.
recipientIdRequiredThe Page-Scoped ID (PSID) of the recipient. Obtained from the webhook event when the user messages your account.
messageRequiredText message body to send. Plain text only. Maximum ~2000 characters.

Sample Configuration JSON

{
  "resource": "messaging",
  "operation": "send",
  "accessToken": "{{ $credential.instagram.accessToken }}",
  "igUserId": "17841400000000000",
  "recipientId": "{{ $trigger.body.value.senderId }}",
  "message": "Thanks for reaching out! Our team will respond within 2 hours. In the meantime, check our FAQ at https://yourbrand.com/faq"
}

Validation Errors

ErrorCause
accessToken is requiredaccessToken field is missing or empty.
igUserId is requiredigUserId field is missing or empty.
recipientId is requiredrecipientId field is missing or empty.
message is requiredmessage field is missing or empty.
Graph API error 10Outside 24-hour messaging window or missing platform approval.
Graph API error 551Recipient has blocked messaging from your account.

Output

Success Port

FieldTypeDescription
statusstring"success"
messageIdstringID of the sent message.
recipientIdstringPSID of the recipient — same as input recipientId.
payloadstringRaw JSON response from the Graph API.

Error Port

FieldTypeDescription
statusstring"error"
recipientIdstringThe intended recipient ID, for error logging.
errorCodestringGraph API error code.
errorMessagestringError description.
payloadstringRaw error response.

Sample Output JSON

{
  "status": "success",
  "messageId": "aWdfZAG9waW50ZAXJlY29yZABhc3NldABuYW1lAA==",
  "recipientId": "17858893300000001",
  "payload": "{\"recipient_id\":\"17858893300000001\",\"message_id\":\"aWdfZA...\"}"
}

Expression Reference

ExpressionValue
{{ $output.instagram.messageId }}Sent message ID
{{ $output.instagram.recipientId }}Recipient's PSID

Node Policies & GuardRails

Examples

Auto-acknowledgement on incoming message

{
  "resource": "messaging",
  "operation": "send",
  "accessToken": "{{ $credential.instagram.accessToken }}",
  "igUserId": "{{ $env.IG_USER_ID }}",
  "recipientId": "{{ $trigger.body.value.senderId }}",
  "message": "Hi! Thanks for your message. We'll get back to you within 2 business hours. Our store hours are Mon–Fri 9am–6pm GMT."
}

Triggered by a trigger/webhook node on messages events. Immediately sends an auto-acknowledgement to the user while the CRM ticket is being created in parallel.

Order confirmation follow-up DM

{
  "resource": "messaging",
  "operation": "send",
  "accessToken": "{{ $credential.instagram.accessToken }}",
  "igUserId": "17841400000000000",
  "recipientId": "{{ $db.customers.where(orderId=$input.orderId).instagramPsid }}",
  "message": "Your order #{{ $input.orderId }} is confirmed! Expected delivery: {{ $input.deliveryDate }}. Track at https://yourbrand.com/track/{{ $input.orderId }}"
}