If a comment-triggered automation reports an activity status: "sent" but the person who commented says they never got the DM, this is almost always the recipient’s Instagram privacy settings — not a bug in your automation or in Ayrshare.
sent means Instagram accepted the message, not that it was delivered. Instagram does not expose message delivery on any API surface. Ayrshare marks a send_dm action sent the instant Instagram accepts it; whether it actually reaches the recipient is decided by settings Ayrshare cannot read or change.
The recipient’s “Message requests” setting decides delivery
Every Instagram user controls who may send them a message request under Settings and activity → Messages and story replies → Message requests. The options are roughly “Everyone”, “Your followers”, and “No one”.
When your automation sends a DM to someone who has restricted message requests, Meta accepts the request, returns a success response with a message ID, and then silently drops the message. There is no error, no failure webhook, and no delivery/read signal — the drop is invisible at every API layer. Meta knows the message is undeliverable (its own app UI shows “This account can’t receive your message because they don’t allow new message requests from everyone”), but it does not expose that on the API.
An existing conversation overrides the setting
If the sender and recipient already have a message thread (for example, the recipient has DMed the account before), that existing conversation overrides the Message requests setting and the automation DM is delivered into the existing thread rather than as a new request. This is why the same automation can reach some commenters and not others, and why a recipient who messages the account first will then reliably receive automation DMs.
How to recognize this
- The activity row shows
status: “sent” with no errorDetails. - The recipient reports no DM (and it is not sitting in their message-requests folder).
- It is intermittent across recipients — some receive the DM, others do not — with no pattern in your configuration.
This is a delivery outcome, not a failure state, so it will never appear as failed. A failed row means Instagram rejected the send and the reason is on actionResults[].errorDetails — that is a different situation (see error codes).
What you can do
There is no programmatic workaround — no API, scope, or send shape can bypass a recipient’s Message requests setting. What you can do:
- Set expectations up front: a comment-triggered DM only reaches people whose Instagram settings allow message requests, or who already have a conversation with your account.
- Encourage commenters to DM your account (or turn on message requests) if they want the follow-up — an inbound message opens the thread permanently.
- Consider a public reply to the comment as a fallback path for reaching everyone.
Comment-triggered automations deliver the DM through Instagram private replies, anchored to the comment itself. This is what lets the automation message a commenter you have never messaged before. The mechanics — and their limits — are worth knowing:
- Comment-anchored 7-day window. The reply must be sent within 7 days of the comment. After that the window closes and the send fails with
code: 484. - One reply per comment, ever. Instagram allows only a single private reply per comment. A second attempt fails with
code: 484 — Instagram reports “already replied” through the same shared error it uses for a closed window, so check errorDetails for which it was. - Arrives as a message request. Even a successfully delivered private reply lands in the recipient’s message-requests folder and must be accepted — unless a conversation already exists.
- Delivery still depends on the recipient’s settings. Private replies remove the “must have messaged first” requirement, but they do not override the recipient’s Message requests setting, which is the limitation described above.