Dartzo
How it worksTrackingAnalyticsPricingFAQ
Log inStart free
Troubleshooting

Troubleshooting

Find out why your DMs aren’t arriving — organised by what you’re seeing, with the real cause and the fix for each.

Start with the symptom. Each section names the causes we actually see on live accounts, ranked by how often they turn out to be the answer, and what to do about each one.

Your evidence is the Queue. Every comment that matched an automation gets a row there with a state — sent, queued, failed or expired — and, when something went wrong, the reason beside it, like failed · permission. A DM is never dropped silently: if it didn’t go out, there is a row saying so. The Error reference explains every one of those reasons in full.

My DMs aren’t sending at all

Two fixes resolve most of these, and both are three taps in an app you already have. Reconnecting replaces the stored token and lifts a permission stop; accepting the tester invite is the step people most often believe they have already done.

Dartzo
Connect Instagram to Dartzo
Connect
Channels
Connect InstagramBusiness or Creator account

The same path reconnects an account later — it replaces the stored token and lifts a permission stop.

1/4
Instagram
Accept the Dartzo tester invite
yourhandle
128posts8,412followers310following
Your nameCreator · link in bio 👇
Edit profileShare profile

Instagram renames these menus between app versions. If a label doesn't match exactly, look for the nearest equivalent — the path is the same. Fastest route on a computer: open instagram.com/accounts/manage_access/ while logged in as the right account, and use the Tester Invites tab. On Android the in-app path may read Settings → Website permissions → Apps and Websites.

1/5

Nothing is arriving, for anyone. That’s almost always one account-level condition rather than a problem with individual automations — one thing is stopping every send. Work down this list; the first three cover nearly all of it.

  1. Your Instagram connection expired or was revoked
    In the Queue you’ll see failed · token_invalid, and the app will prompt you to reconnect. Instagram rejected the access token we stored, so nothing can send for this account until you reconnect. It happens after you change your Instagram password, after you remove Dartzo from Instagram’s connected apps, when the long-lived token reaches the end of its life, or when the same account gets connected somewhere else and the old token is invalidated. Reconnect from Connect — that is the entire fix.
  2. Instagram refused the sends on permissions
    In the Queue you’ll see failed · permission. Meta rejected the send as not permitted for this account and did not say which permission was missing. Because every following send would fail identically, Dartzo stops sending for the account rather than hammering Instagram with attempts we know will be refused. Fix the underlying cause — the next three steps — and reconnect. Reconnecting lifts the stop.
  3. You haven’t accepted the Instagram tester invite
    This is the single most common cause of permission. While Dartzo is in Meta’s development mode, only accepted testers can be messaged — being invited is not enough, and nothing tells you the invite is still pending. Open Instagram → Settings and privacy → Apps and websites → Tester invites, accept the invite from Dartzo, then reconnect.
  4. Your Instagram account is Personal, not Business or Creator
    Messaging permissions don’t exist on Personal accounts, so no automation of any kind can send from one. In Instagram, open Settings → Account type and switch to Business or Creator, then reconnect from Connect.
  5. Your saved connection predates a permission we now need
    If you connected a long time ago, the token we hold may have been issued before we started asking for the messaging and comment permissions we need today. Reconnecting forces a fresh authorisation, which replaces the old token with one that has the right permissions.
Reconnecting doesn’t reset anything
Your automations, keywords, message text, leads and history all stay exactly as they are. Reconnecting only replaces the credential Instagram gave us — it’s the fix for most account-level stoppages, and it’s safe to do any time you’re unsure.
If a lot of sends were refused, the account may be paused
Refusals that Instagram treats as spam indicators — blocks, deleted comments and permission refusals — are counted. If more than 1% of an account’s sends in an hour come back that way, Dartzo pauses the account rather than let it keep accumulating signals against your Instagram standing. Fix the cause first, then re-enable the account. If it isn’t obvious which cause it was, contact us and we’ll tell you exactly what Meta returned.

Some DMs send, and some don’t

Check this first: a second DM tool on the same Instagram account
Instagram allows exactly one automatic reply per comment. If another comment-to-DM tool is connected to the same Instagram account, both tools see the comment and race for that one slot — and whichever one loses is refused permanently for that comment. On a live account we measured, 100% of the failures were comments the other tool had already answered. Nothing was wrong with the automations. Nothing was wrong on Instagram’s side. There was simply a second tool taking the slot first.

This is the hardest failure to diagnose from the outside, because Meta doesn’t explain it. The refusal comes back as a bare server error with no reason attached, so all you see is that the DM didn’t arrive. Half the comments on a post get answered in seconds and half get nothing, and it looks random.

It looks like this:

  • Some comments get a DM within seconds; other comments on the same post, matching the same keyword, get nothing.
  • The misses show in the Queue as failed · unknown_error.
  • Retrying, rewording the keyword, or rebuilding the automation changes nothing — the next batch fails the same way.
  • If you check the DMs of someone who didn’t get yours, you often find they *did* get a message — from the other tool.

Dartzo detects this on its own. When we see another integration sending from your account, a warning banner appears at the top of the app and stays there while it’s still happening. We don’t name the other product: the detection is a strong inference drawn from what your account is sending, not something Meta confirms, and we’d rather warn you accurately than accuse a named competitor in front of you.

The fix is to run one tool, not two. Turn off the other tool’s automations, or disconnect it from your Instagram account. Removing Dartzo from the other tool’s dashboard isn’t always enough — the other tool may still hold its own connection. Open Instagram → Settings and privacy → Apps and websites and remove whichever one you’re not keeping. Once the other tool stops sending, every comment comes through again, and the banner clears itself about a week later without you doing anything.

You aren’t losing everything, and it isn’t your fault
While two tools are connected, Dartzo keeps running and keeps winning the races it wins — you only lose the comments the other tool answered first. Nothing is misconfigured on your side, and nothing needs rebuilding.

If there’s definitely no second tool and you’re still seeing a mix, these are the other reasons some comments get a DM and others don’t. All three are working as intended:

  • The same person commented more than once. One person gets one DM per automation, deliberately, so the repeat shows as failed · recipient_capped. That guard is part of what keeps your account from reading as a bot.
  • The comment was deleted before we could reply — shown as failed · comment_deleted. A private reply attaches to a specific comment, so if the comment is gone there’s nothing to attach to. Common when a moderation tool is removing giveaway spam.
  • Two of your automations matched the same comment. Instagram allows one reply, so the more specific automation fires and the broader one doesn’t. A keyword rule always beats an "any comment" catch-all on the same post.

It worked before, and then it stopped

Something changed outside Dartzo. Automations don’t degrade on their own, so when a setup that was delivering stops delivering, one of these is nearly always the cause:

  1. The connection stopped being valid
    Look for failed · token_invalid around the time it stopped. Changing your Instagram password, revoking Dartzo in Instagram’s app settings, or connecting the same account somewhere else all invalidate the token we hold. Reconnect from Connect and it resumes.
  2. Another DM tool was connected in the meantime
    If sends went from reliable to patchy rather than stopping outright, and the misses read failed · unknown_error, a second tool is now taking the one reply slot per comment. See the section above — this is by far the most common cause of a good setup going patchy.
  3. The post the automation was bound to was deleted
    An automation attached to a specific post can never fire again once that post is gone. Dartzo pauses it and shows the reason on the automation rather than letting it sit there looking live. Rebind it to a post that still exists, or delete it.
  4. The automation was paused
    Check the automation’s status. Dartzo pauses automations for stated reasons — a deleted post, or a runaway loop where one person was being messaged repeatedly. The reason is shown on the automation itself, and resuming it clears the flag.

The Queue says it was sent, but the person never got it

First check whether the Queue really says sent. If the row reads failed with a reason, use the Error reference — the reason names exactly what happened. If it genuinely says sent, Instagram accepted the message and gave us a message ID, and these are the reasons someone can still not see it:

  • It’s in their message requests. If the person doesn’t follow you, Instagram files your DM under Requests rather than the main inbox. Most people never look there. This is the usual answer, and it’s why a strong call to action in the post matters more than the DM itself.
  • They blocked the account, or don’t accept messages from people they don’t follow. That send is refused rather than delivered, and shows as failed · blocked. There’s nothing to fix for that individual — the refusal is their choice, correctly honoured.
  • They deleted their comment. A private reply is attached to a comment. If the comment is deleted before we send, the reply has nothing to attach to and shows as failed · comment_deleted.
  • The window closed before we could send. Instagram gives us 7 days from the comment to send a private reply, and 24 hours from someone’s last message to send a follow-up. Past that, sends are refused and land as expired.
A rising number of blocks is worth reading, not worrying about
One block is one person’s preference. A climbing block rate usually means the DM is landing as unsolicited — worth looking at the message copy and how you’re promoting the keyword, rather than at the delivery engine.

It says expired

expired means Instagram’s messaging window for that person had already closed by the time the send went out. It’s not a failure of your automation, and the message was never sent to the wrong person or sent twice — we stop rather than send outside the window.

WindowHow longStarts from
Private reply to a comment7 daysThe moment the comment was posted
Follow-up message24 hoursThe person’s most recent interaction with you

Both windows are Meta’s, not ours — see Limits and windows for the full picture. The usual reason a job runs out of time is that it sat waiting: a large backlog on the account, or an account that was paused while the clock kept running. If you paused an account and resumed it a week later, the comments from before the pause may well have expired — expected, not a bug.

If you’re seeing expired on recent comments — hours old, not days — that’s worth telling us about. It shouldn’t happen, and it points at something on our side rather than yours.

Common questions

Will reconnecting delete my automations?
No. Reconnecting replaces the access token and nothing else. Automations, keywords, message text, captured leads and delivery history all stay. Disconnecting is the destructive action — that removes the account, its automations and the stored token.
Can I keep using another DM tool alongside Dartzo?
Not on the same Instagram account, no. Instagram allows one automatic reply per comment, so two tools on one account will keep taking slots from each other regardless of how either is configured. Different Instagram accounts are fine — the conflict is per-account.
Why can’t you just retry the comments the other tool won?
Because Instagram’s refusal is permanent for that comment, not temporary. The one reply slot is already used. Retrying would produce the same refusal every time, so we record the failure honestly instead of burning attempts and making your account look worse.
I fixed the cause — do I need to re-create anything?
No. Once the account can send again, the next matching comment is picked up normally. Jobs that already ended as failed or expired stay ended — a failed job is a record of what happened, not a queue item — but nothing needs rebuilding.
Nothing in the Queue explains it. What now?
Tell us the account and roughly when it happened. When Meta returns an error we can’t classify, we record exactly what Meta said — status, code, subcode, message and Meta’s own trace ID — against that job. That trace ID is the only identifier Meta’s developer support will act on, so we keep it.
Does a failed DM count against my plan?
No. Plans limit how many automations and contacts you can have, and how many AI credits you get each month — DMs aren’t metered per send. A failure costs you the lead, not your allowance. AI credits are spent only when the AI actually writes a reply, so a send that never went out spends nothing.
WhatsApp