How to Fix Dripify Failed Actions: Duplicate Message and Action Not Allowed
Both errors are guardrails, not bugs. Duplicate message is a 90 percent similarity check against what that lead already received. Action not allowed means a first-degree-only step ran before the invitation was accepted.
The campaign is running. Most steps went out. A handful sit there marked Failed, with either Duplicate message or Action not allowed next to them, and no explanation of what you are supposed to do about it.
Both are Dripify refusing to do something on purpose. They are guardrails, not bugs, and each protects your LinkedIn account from a pattern that gets accounts flagged. Once you know exactly what each one checks, they stop being mysterious and become two small changes to your sequence logic.

What each error actually checks
These two failures look alike in the dashboard and have nothing in common underneath. One is about your copy, the other about the relationship. Telling them apart is most of the work.
| Error | What Dripify is checking | What to change |
|---|---|---|
| Duplicate message | Whether this text is over 90 percent similar to one already sent to this lead | Vary the copy, or use dynamic variables |
| Action not allowed | Whether the action requires a first-degree connection you do not have | Add a connection step and gate on acceptance |
| Both on the same lead | An old campaign already touched them and they never connected | Exclude previously contacted leads from the import |
The 90 percent threshold is the detail that surprises people. Dripify is not looking for an identical message, it is looking for one that is substantially the same. Swapping a single word or a punctuation mark will not clear it. Two or three meaningful changes will, and a dynamic variable that resolves differently per lead clears it reliably.
Action not allowed has a shorter list of triggers than it appears. Messages and skill endorsements both require a first-degree connection. If your sequence puts either one before an invitation, or before the invitation is accepted, every lead who has not connected yet fails that step. The lead is fine, the sequence order is wrong.
Unblock the sequence now
Handle them separately. Fix the copy for one, the order for the other, then re-run only the failed steps.
For Duplicate message: change two or three real words
Open the step and rewrite enough of it to drop below the similarity threshold. Rephrasing the opening line and the ask is usually sufficient. Do not just swap a greeting, because the rest of the body still carries the match. If you are not sure, write the follow-up as though the first message did not exist.
For Duplicate message: use dynamic variables
Variables such as first name resolve differently for every lead, which pushes each rendered message apart naturally. This is the durable fix rather than the one-off rewrite, because it keeps working as you add leads instead of needing another edit next month.
For Action not allowed: insert a connection step
Add an invitation before the message or endorsement, and let acceptance be what unlocks the next step. Every first-degree-only action needs to sit after that gate. This is a change to the sequence shape rather than to the content, and it fixes every future lead as well as the ones that just failed.
For Action not allowed: filter to existing connections
If a campaign is meant to message people directly, filter the import so it only contains leads already in your connections. A campaign that assumes first degree should be given a first-degree list. Mixing both into one sequence is what produces a dashboard half full of failures.
Re-run only the failed steps
Once the copy or the order is fixed, re-run the failed steps rather than the whole campaign. Restarting everything risks the duplicate check firing on leads who already received a message successfully, which turns one problem into two.
Design the failures out
Both errors are avoidable at design time, and the same four habits cover them.
- Rotate message variants. Keep three or four versions of each step and alternate between them so no two leads with overlapping history receive matching text.
- Branch on connection status. Build the sequence so first-degree-only actions live behind an acceptance condition. Then the sequence structurally cannot ask for something it is not allowed to do.
- Exclude previously contacted leads. Before importing, remove anyone who appeared in an earlier campaign. Most duplicate failures are old contacts arriving in a new list.
- Audit history before launch. A quick check for identical messages already sent to the same contacts costs a few minutes and saves a dashboard full of failed steps.
Those four turn both errors from something you troubleshoot into something your sequence cannot produce.
The wider question of how much a single account should be sending across concurrent campaigns is covered in how to balance LinkedIn campaign volume.
Sequences that cannot hit either wall
Look at what the two guardrails have in common and a pattern appears. Duplicate message fires because you are contacting someone you already contacted with nothing new to say. Action not allowed fires because you are trying to talk to a stranger. Both describe a list problem wearing a sequence problem's clothes.
ReactIn's lists come from actions rather than imports. Someone commented on your post, attended your webinar, submitted a form or booked a call. Each of those gives the message a specific reason to exist, which is why the copy differs naturally rather than needing variants rotated to beat a similarity check.
The relationship problem resolves the same way. A lead who just engaged with your content accepts at a far higher rate than a cold third-degree contact, so the connection gate that Action not allowed enforces is one your sequence passes rather than trips over.
The honest limit: if your campaigns work off purchased lists of people who have never heard of you, ReactIn's sourcing model does not describe your motion and the guardrail fixes above are what you need. Dripify's sequencer is good, and none of this is an argument that it is not.
For a feature-by-feature view of the two approaches, see our ReactIn vs Dripify comparison.
Neither error is a malfunction. They are the tool telling you the sequence asked for something it should not have, and the fix is always in the sequence.
Frequently Asked Questions
Sources & Further Reading
- Dripify's help centre covers addressing failed actions on Dripify for both errors.
- The similarity threshold is documented in how to avoid sending duplicate messages.
- For the first-degree requirement specifically, see why you cannot send messages to a user via the Dripify inbox.
- Broader inbox problems are covered in Dripify's inbox troubleshooting guide.
Related Articles
How to Fix Expandi Messages Not Sending (Pending Invites)
A connector campaign opens with a connection request, and a lead who already has one pending cannot receive a second. So the campaign has nothing it is allowed to do, and it says so in a tab most people never open.
How to Fix Phantombuster "Error During Loading of Chat Widget"
Phantombuster documents this one, and the documented fix is mostly to wait. The expensive part is a Phantom left looping against it, burning execution time on attempts that cannot succeed.
Working Around the Limitations on Salesflow (2026 Guide)
CSV import exists, so does a campaign type for contacts you already hold, and so do shared blacklists. The constraints that actually bite are narrower: rejected Sales Navigator URLs, per-route caps, and a deliberate block on duplicates.
How to Fix Dripify Lead Collection Stalls (2026 Guide)
Most stalled collections have finished or are waiting. The Lead Collection Report names the cause, the search cap ends runs silently, and working hours suspend lead loading as well as sending.