Dartzo
How it worksTrackingAnalyticsPricingFAQ
Log inStart free
Troubleshooting

Error reference

Every state and failure reason Dartzo can show you, what each one actually means, and whether it needs you to do anything.

Every comment that matches an automation becomes a job, and every job ends in a state you can see in the Queue. When a job doesn’t end in sent, it carries a reason — shown beside the state, like failed · permission. Nothing is ever dropped without a record.

This page covers all of them. If you’d rather start from the symptom than the code, use the Troubleshooting guide.

States

StateWhat it meansFinal?
receivedWe got the comment from Instagram and recorded it. It hasn’t been matched against your automations yet.No
matchedA keyword matched and an automation claimed the comment. It’s eligible to send.No
queuedWaiting for capacity. Instagram rate-limits how fast an account may send, so bursts are held in order rather than dropped, and drained as fast as Instagram allows.No
sendingIn flight to Instagram right now.No
sentDelivered. Instagram accepted the message and returned an ID for it. Shown as Delivered.Yes
expiredInstagram’s messaging window closed before the send went out. See outside_window below.Yes
failedThe send was permanently refused. The reason beside it says why — every reason is documented below.Yes
unknownA send timed out, so we can’t tell whether it arrived. Dartzo checks before deciding, rather than guessing and risking a duplicate DM. It resolves to sent or gets safely retried.No
Queued is not stuck
A job sits in queued on purpose while the account’s send budget refills, or while a temporary Instagram error clears. It only becomes a problem if it stays there long enough to hit the messaging window — at which point it honestly becomes expired rather than quietly disappearing.

Failure reasons at a glance

ReasonPlain EnglishDo you need to act?Fix
permissionInstagram refused on permissionsYes — sending stops for the accountAccept the tester invite, use a Business or Creator account, then reconnect
token_invalidYour connection is no longer validYes — nothing sends until fixedReconnect Instagram
blockedThat person can’t receive your messagesNo — this is their choiceNothing. Watch the rate, not the individual
comment_deletedThe comment was gone before we repliedNo — normal eventNothing, unless the rate is high
outside_windowInstagram’s messaging window had closedUsually noNothing, unless it’s happening on fresh comments
post_deletedThe post the automation was attached to is goneYes — that automation is pausedRebind the automation to a live post, or delete it
recipient_cappedThat person already got this DMNo — this is our guard workingNothing
no_keyAI replies aren’t available on this accountYes — if you want AI repliesTurn AI reply off and use a fixed message, or contact us
no_creditsAI credits for the month are used upYes — if you want AI repliesWait for the 1st, add bonus credits, upgrade, or switch to a fixed message
unknown_errorInstagram returned an error it didn’t explainSometimesCheck for a second DM tool on the account first

permission — Instagram refused on permissions

Meta rejected the send as not permitted for your account, and did not say which permission was missing. The causes below are ranked by how often they turn out to be the answer, not reported to us by Meta.

  1. The Instagram tester invite hasn’t been accepted. While Dartzo is in Meta’s development mode, only accepted testers can be messaged — being invited isn’t enough. Accept it in Instagram → Settings and privacy → Apps and websites → Tester invites.
  2. The account is Personal, not Business or Creator. Messaging permissions don’t exist on Personal accounts. Check Instagram → Settings → Account type.
  3. Your saved connection predates a permission we now need. Reconnecting forces a fresh authorisation and replaces the old credential.
Sending stops for the account until this is fixed
Every following send would be refused identically, so Dartzo stops rather than keep asking. This also counts as a spam signal with Instagram, which is exactly why we don’t retry it. Fix the cause, reconnect from Connect — reconnecting lifts the stop — and check whether the account also needs re-enabling.

token_invalid — your connection is no longer valid

Instagram rejected the credential we hold outright. Nothing will send for this account until you reconnect. This is a credential problem, not an abuse problem, and we deliberately don’t count it against your account’s standing.

  • You changed your Instagram password, or removed Dartzo from Instagram’s connected apps.
  • The long-lived token reached the end of its life without being refreshed.
  • The same account was disconnected and reconnected somewhere else, which invalidates the older token.

The fix: reconnect from Connect. That’s the whole fix. Your automations, message text, leads and history are untouched — reconnecting only replaces the credential.

blocked — that person can’t receive your messages

The recipient can’t be messaged by your account. Usually they blocked it; sometimes their privacy settings simply don’t allow message requests from accounts they don’t follow.

Nothing to fix for that person
This is their choice, and the send correctly stopped. Don’t chase individual blocked rows.

The rate is worth watching, though. Blocks count as a spam signal with Instagram, and a climbing block rate usually means your DM is reading as unsolicited. That’s a copy-and-promotion question — look at what the message says and how you’re advertising the keyword — not a delivery question.

comment_deleted — the comment was gone before we replied

A private reply attaches to a specific comment. If the comment no longer exists at the moment we send, there’s nothing to attach to. The commenter may have deleted it, you or a moderation tool may have removed it, or the whole post may have been deleted, taking its comments with it.

Usually nothing to do
A deleted comment is a normal event on a busy post, especially one running a giveaway.

A high rate is worth a look: it often means comments are being auto-moderated away before we reach them. If you’re running a moderation tool or an aggressive filter on the account, that’s the first place to check. Deleted comments also count as a spam signal, so a persistent high rate can eventually pause the account.

outside_window — Instagram’s messaging window had closed

Meta only lets you message someone for a limited time after they interact with you. Private replies to a comment must go out within 7 days of the comment; follow-up messages within 24 hours of that person’s most recent interaction. These land as expired rather than failed, because nothing failed — time ran out.

  • The job waited longer than the window allowed — a large backlog, a paused account, or an outage on our side.
  • A follow-up was scheduled more than 24 hours after the person last interacted with you.

If you paused an account and resumed it days later, comments from before the pause may well have expired while they waited. That’s expected. If you’re seeing this on comments that are only hours old, tell us — that points at something on our side, not yours.

post_deleted — the post the automation was attached to is gone

An automation bound to a specific post can never fire again once that post is deleted. Rather than let it sit there looking live and quietly doing nothing, Dartzo pauses it and says why on the automation itself.

It stays paused until you act
That’s deliberate, not a stuck job. Rebind the automation to a post that still exists, or delete it if the campaign is over.

recipient_capped — that person already got this DM

This one is ours, not Instagram’s. One person gets one DM per automation, so someone who comments the keyword five times gets one message, not five. If you see this, the person already has your DM.

Nothing to fix — this is the guard working
It’s what stops a repeat commenter turning into a flood, and it’s a meaningful part of keeping your account from reading as a bot to Instagram.

no_key — AI replies aren’t available on this account

The automation asked for an AI reply, but AI generation isn’t configured, so no reply could be generated. We won’t fake it: rather than send something you didn’t write, Dartzo sends your fallback message so the person is still acknowledged, and records honestly that the AI part didn’t run.

The fix: turn AI reply off on that automation and use a fixed message, which will always work. Every plan includes AI replies, so if you are seeing this, contact us — that’s a configuration problem on our side, not yours.

no_credits — AI credits for the month are used up

AI credits for the month are used up; they reset on the 1st; bonus credits or an upgrade add more. Every plan carries a monthly allowance — the free one included — and the bigger the plan, the bigger the allowance.

As with no_key, the person still gets your fallback message rather than silence. The fix: wait for the 1st, upgrade for a larger allowance, or switch the automation to a fixed message so it keeps working regardless. From Pro up you can also plug in your own AI provider key, and replies then spend no Dartzo credits at all.

unknown_error — Instagram returned an error it didn’t explain

Meta returned something we couldn’t attribute to a specific cause. We deliberately don’t count these against your account’s standing — punishing an account for an error nobody can explain would be unfair.

The most common cause is a second DM automation tool
Instagram allows exactly one automatic reply per comment. If another comment-to-DM tool is connected to the same Instagram account, both tools race for that single slot and the loser is refused permanently — reported by Meta as a bare server error with no reason attached, which is exactly what lands here. On a live account we measured, 100% of the failures were comments the other tool had already answered. If some DMs send and some don’t, read this first.

The other things that land here:

  • The person already got a reply for that comment. Instagram allows one private reply per comment, and something already used it — often a retry after a timeout, or your own second tool. Benign: the DM was delivered, and the duplicate attempt was correctly refused.
  • The 7-day window closed. Some of these are really outside_window arriving by a different route. Same meaning: the job waited longer than Instagram allows.
  • A genuine temporary error on Meta’s side. We retry server errors up to 5 times with increasing gaps before giving up, so anything you see here has already been retried and has stayed broken.
  • A response we haven’t classified yet. Rare, and something we want to know about.

What to do: check for a second DM tool first — it explains most of these. If there isn’t one, contact us with the account and roughly when it happened. We record exactly what Meta returned for every unclassified error, including Meta’s own trace ID, which is the only identifier their developer support will act on.

Common questions

Which of these are actually my problem?
Only permission, token_invalid, post_deleted, no_key and no_credits need you to change something. blocked, comment_deleted, outside_window and recipient_capped are normal outcomes of Instagram’s rules or our own safety guards — they’re recorded so you can see the whole picture, not because you did something wrong.
Why show me failures at all instead of hiding them?
Because the alternative is you believing an automation is working when it isn’t. A hidden failure is a lead you never knew you lost. Every job ends in a state you can see, with a reason, even when the reason is unflattering to us.
Can a failed DM be retried?
Temporary errors are already retried automatically — server errors up to 5 times with increasing gaps, and rate limits are requeued rather than counted as failures. What you see in the Queue as failed is what’s left after that: a permanent refusal where retrying would produce the same answer.
Which failures can pause my account?
Three reasons count as spam signals with Instagram: blocked, comment_deleted and permission. If more than 1% of an account’s sends in an hour come back as one of those, Dartzo pauses the account to protect your standing with Instagram. token_invalid, outside_window and unknown_error are explicitly excluded — they aren’t abuse.
I see a reason that isn’t listed here.
Tell us. Every reason we know about is on this page, so an unlisted one means a code path got ahead of the documentation — which we’d like to close.
WhatsApp