If you're doing Instagram outreach as part of a developer workflow, the hardest part isn't sending the first message. It's knowing what happened next. Without a clear record, you either follow up too soon and look pushy, or too late and the context is gone. A simple state model fixes most of that.
I work on Ins Autopilot, a Chrome-side Instagram workflow tool. It is an independent product and is not affiliated with Instagram or Meta. This post is a suggested process, not a product spec. I'll separate the recommended record design from what the tool actually does.
Why four states: drafted, attempted, replied, unknown
- Drafted: you created a message but have not sent it. This is a staging state.
- Attempted: you sent it. This is the only thing you know for sure. Sending is not delivery confirmation.
- Replied: the recipient answered. That is a real signal. It should stop any automated follow-up sequence.
- Unknown: you attempted contact but have no reply and no reliable signal. Most early outreach ends here.
The mistake is collapsing "attempted" and "unknown" into "contacted." A like or profile visit does not prove the recipient read your DM. Do not treat engagement as a reply. If you track link clicks, keep them separate: a click is not a reply, booking, or sale.
Suggested record design (not a product spec)
Treat each contact as a row with these fields:
-
contact_id: Instagram username plus your account context. -
status: one ofdrafted,attempted,replied,unknown. -
drafted_at,attempted_at,last_checked_at: timestamps. -
message_ref: template ID or short text snapshot. -
notes: qualification details, custom fields. -
clicked_links: array or count, clearly separate from replies. -
next_action_at: when you plan to re-evaluate.
You can implement this in a spreadsheet, a SQLite table, or a CRM. The point is to make state explicit.
Checklist before scheduling follow-up
-
Draft first, then record. Move a contact to
draftedonly after the message exists. This prevents accidentally following up on something you never sent. - Verify the contact is unique. Duplicate records cause duplicate messages.
-
Send and mark
attempted. Add the timestamp. Do not assume the message was delivered. - Do not schedule a follow-up based on likes, follows, or profile views. Those signals do not prove the recipient saw your DM.
-
Before each follow-up step, check for a reply. If a reply exists, set status to
repliedand stop the remaining sequence. -
If no reply after your cooldown, decide manually. Mark
unknownif you have no signal. Then choose whether to send one more message, wait longer, or drop the contact. - Review by account. If you manage more than one Instagram account, filter contacts and follow-ups per account so status isn't mixed.
Where a tool fits, and where it doesn't
Ins Autopilot's Relationships feature keeps contact notes, custom fields, qualification details, and recorded outcomes together. It can save filter combinations as segments and let you review each Instagram account's contacts and follow-ups separately. Its follow-up sequences can schedule a series for a contact, and reply checks run before later steps; a detected reply stops the remaining sequence. That maps well to the checklist above if you map drafted, attempted, replied, unknown to custom fields or recorded outcomes.
But the tool does not decide who is worth engaging. That remains human. Automation can pace follows, unfollows, and likes within daily caps, but choosing the right accounts is a judgment call.
Also, be precise about limits. Daily caps in the product are caps on what the extension will do—not a safety guarantee, and not an Instagram limit. Follows, unfollows, likes, comments, and DMs each have independent daily ceilings, and the cap is shared across every Instagram account bound to the same license. Scheduled work needs the browser and a signed-in Instagram session available.
The ledger is yours. Keep it boring, consistent, and explicit. Your follow-up timing will improve, and you'll stop guessing whether silence means "no" or just "not yet."

Top comments (0)