Skip to content

Instagram Comments

Instagram Comments receives comments made on a professional account’s own posts. SquadOS applies post and keyword filters and, when an event passes, delivers its text to an agent. The normal response is a public comment; optionally, the agent can decide to use a private DM reply.

You need:

  • an Instagram Business or Creator account;
  • login access to that account;
  • an active agent to process comments;
  • access to the restricted option during App Review.

Authorization uses Instagram Login, not Facebook Login. Comments and Direct are separate inboxes even when they use the same professional account and agent.

  1. In the admin panel, open Inboxes and select Connect inbox.
  2. Under Instagram, choose Instagram Comments.
  3. Select Connect with Instagram, sign in to the professional account in the popup, and approve the requested permissions.
  4. When the card shows Connected: @handle, select Continue.
  5. Under Default destination, choose an active agent, check the inbox name, and select Done.

A Connected state confirms saved connection data, but it does not replace a real delivery test. Comment from another account on a monitored post and confirm both intake and response before using the channel on a busy post.

Under Inboxes, open the row’s Settings action. On the Instagram Comments card, select Configure. The Configure comments trigger panel contains the three blocks below. When finished, select Save settings.

  • All account posts accepts comments from any media owned by the account. Older posts remain in scope and can increase volume, cost, and public exposure.
  • Selected posts limits the channel to chosen IDs. Select + Add post, mark the media, and confirm with Add (N). The picker loads 25 items per page; use Load more to fetch the next page.

The saved limit is 100 posts. Select only what you need: if you confirm more items than the remaining capacity, the interface truncates the list at 100 without identifying which excess items were dropped.

The picker lists owned media returned by the connected account’s API. A Collab post belongs to the account that published it, not to invited collaborator accounts. If the connected account is only a collaborator, the post is absent, its webhook goes to the owner account, and the collaborator cannot reply through the API.

Connect the account that published the media. When it has no owned media, the interface shows This account has no posts of its own.

Type a value and press Enter. Each value is trimmed to 64 characters, and the list accepts up to 50 values.

Under Match logic:

  • Any accepts the comment when at least one value matches;
  • All requires every value to match;
  • None — block accepts only when none of them match.

Under Match type:

  • Contains looks for the value as a substring;
  • Exact compares the full comment, ignoring surrounding whitespace;
  • Regex executes each value as a regular expression.

Case sensitive is off by default. With no values, the keyword filter does not restrict comments.

  • Ignore replies (only respond to top-level comments) is on by default. Replies to another comment are ignored, while top-level comments can enter.
  • Allow Private Reply (DM) makes the instagram_private_reply tool available to the agent. It does not force every response into a DM: the model chooses the tool when it considers the answer confidential, personal, or long. If the tool succeeds, SquadOS does not also publish a comment. If it is not used or fails, the normal flow still attempts a public reply.

The interface states a seven-day private-reply window. SquadOS does not validate that window locally; Meta’s API decides whether the attempt is still accepted. The private message is truncated to 1,000 characters.

  1. Meta sends a webhook for the connected account.
  2. SquadOS resolves that account’s most recently connected active inbox. If duplicate inboxes exist, only that winner processes the event.
  3. The runtime drops empty text, the account’s own comments, posts outside the selection, thread replies when excluded, and comments that do not pass keyword rules.
  4. A top-level comment creates a conversation; replies in the same thread reuse the parent comment’s conversation.
  5. The text is delivered to the agent. Unless a private reply has succeeded, the agent’s response is published as a comment and truncated to 2,200 characters.

Comments published by the connected account are always ignored to prevent loops. This protection cannot be disabled.

  • Start with Selected posts and narrow terms.
  • Test from another account; comments from the connected account are ignored by design.
  • Review the prompt to prevent sensitive claims, public collection of private data, and out-of-scope replies.
  • For personal data, enable Private Reply and instruct the agent when to call the tool, but do not treat DM delivery as guaranteed.
  • Monitor both conversations and the post itself. A public reply is visible to anyone who can see the post.
  • Instagram Comments is absent from the list: the permission is still limited to the App Review account. Use Instagram Direct or wait for approval.
  • Connection finished but no comment enters: confirm the destination is an active agent, the test came from another account, and the media passes the post filter.
  • The picker is empty: connect the account that published the posts; media where it is only a collaborator is not listed.
  • Some comments do not enter: review Ignore replies, logic, match type, case sensitivity, and filter values.
  • A regex was rejected: simplify it. If you switched the type to Regex after filling the list, remove and re-add every value to force validation.
  • The private DM was not sent: the tool depends on the agent’s decision and Meta’s acceptance; check that Allow Private Reply (DM) is enabled and whether the public comment was used as the normal flow.
  • Settings reverted to defaults: do not save over them. The interface treats a read failure as missing configuration and can allow the existing JSON to be overwritten; reload and try again. Recorded as BUG-TRG-186.
  • Expired token or lost connection: use Reconnect on the card and repeat the test from another account.