🧠 Overview
This guide walks through one specific workflow: pulling your own Instagram followers, enriching those profiles with public data, generating a unique first message for each person with AI, and sending them through Onimator’s DM Tool → Targeted DM Campaign as a slow, always-on drip.
The value here isn’t “DM automation” — Onimator already had that. The value is the combination: audience data + enrichment + AI personalization + drip automation + a conversational funnel that converts.
💡 Strategic Purpose: You’re activating the audience you already earned. Every follower on your account raised their hand at some point and hit follow. This workflow starts a real conversation with each one at a pace the platform tolerates.
🎯 The 30-Second Version
- Get your list of followers (using HikerAPI, or ask a VA to do it for you)
- Enrich each day’s small batch with public profile info (bio, recent posts, etc.)
- Feed each enriched profile into AI to generate ONE unique opener per person
- Upload the resulting CSV (
username, message) into Onimator’s DM Tool - Turn on Targeted DM Campaign with a slow daily cap
- Let it run. Handle replies.
The rest of the guide covers each step in detail, plus what to avoid.
💡 Why Message Your Own Followers?
Two reasons this works when cold outreach doesn’t:
They already said yes. Your followers found your account, looked at it, and hit follow. That’s the closest thing to permission Instagram offers. No cold-outreach vibes.
Your DMs actually land in their inbox. Instagram routes DMs from strangers into the Requests folder (which most users never open). DMs from accounts they follow usually go straight into their normal Chats. Since these people follow you, your message shows up where they’ll actually see it.
⚠️ Some users configure their DMs so even followed accounts land in Requests. “Usually” is accurate — “always” is not.
🗺️ The Full Workflow
Your Instagram account
↓
HikerAPI — fetch your follower list
↓
Enrich the batch you're about to send today
↓
AI writes ONE personalized opener per person
↓
CSV: username,message
↓
Onimator → DM Tool → Targeted DM Campaign (drip, ~20–30/day)
↓
They reply → you or your team continues the conversation manually
🛠️ What You’ll Need
Before you start, you need:
- ✅ Onimator with a warmed Instagram account
- ✅ HikerAPI account — Onimator integrates it natively through Global Settings (or any other source of public profile data)
- ✅ An AI you can prompt — OpenAI, Claude, or your preferred model
- ✅ A spreadsheet — Google Sheets or Excel
⚠️ Warm up your account first. A fresh or cold account shouldn’t jump straight to 25–30 DMs/day. See the Warm-Up guide before you start.
Step 1 — Get Your Follower List
The gist: You need a list of your followers as usernames. HikerAPI pulls this cleanly.
The AI Assistant Path (via HikerAPI MCP)
If you use Claude Code, Cursor, or another LLM assistant that supports MCP, you can hook HikerAPI directly into your assistant and just ask it in plain English to fetch your followers.
What it looks like in practice: You type something like “fetch the follower list for @myaccount using the HikerAPI MCP and save it as a CSV” — and your LLM runs the fetch, handles the pagination, and hands you back the file. No code to write, no VA to coordinate with.
Setup is one-time. Add HikerAPI’s MCP server to your LLM’s MCP configuration once, paste your HikerAPI token, and every future fetch or enrichment run is just a natural-language ask.
Why this beats the other paths for most users:
- 👉 No VA hand-off or waiting
- 👉 No no-code subscription
- 👉 No API endpoints to figure out
- 👉 Works for both list fetching AND enrichment (Step 2)
The Technical Path (if you want to run it yourself)
⚠️ Verified 2026-08-12 — re-check hikerapi.com for the current spec.
Three endpoints work. Use whichever fits:
GET /v1/user/followers/chunk supports 25 to 100 records per request and provides a validated response, making it a good default.
GET /v2/user/followers supports 25 to 100 records per request and returns raw data with the maximum available fields.
GET /gql/user/followers/chunk returns 50 records per request and uses GraphQL, making it suitable for larger accounts.
| Endpoint | Records per request | Notes |
|---|---|---|
GET /v1/user/followers/chunk |
25–100 | Validated response, good default |
GET /v2/user/followers |
25–100 | Raw, maximum fields |
GET /gql/user/followers/chunk |
50 | GraphQL, for large accounts |
Pagination uses next_max_id / end_cursor. No cap on how many followers you can collect.
What each follower row already gives you: username, full name, profile picture, verified flag, private/public flag, follower and following counts. Business/creator accounts also expose category and public business contacts.
The Easy Path (most users start here)
Don’t want to touch APIs directly? You have three options:
- 👉 Ask your VA or technical person to run the fetch once and hand you a CSV of usernames
- 👉 Use a no-code tool like Make.com or n8n that has HikerAPI connectors — set it up visually, no coding
- 👉 Export from an existing tool if you already have one that stores your follower list
The rest of the workflow works from a simple one-column CSV of usernames. That’s all you need to hand off to Step 2.
⚠️ Important: The Follower List Doesn’t Include Bios
The list gives you names. To get useful personalization signals (bios, recent posts, etc.), you need Step 2 — Enrichment. Don’t try to skip it.
Step 2 — Enrich Just the Batch You’re Sending Today
The gist: Enrichment is what turns “username” into “person with a bio and recent posts.” That’s where the personalization signal comes from. And you should only enrich the specific batch you’re about to send — not your whole list.
The Easy Path
Again — your VA or no-code tool can handle this. Point them at your day’s batch of usernames, ask them to run the profile-enrichment endpoint on each, and hand you back the enriched data.
👉 AI assistant with HikerAPI MCP — if you set this up in Step 1, just ask your LLM to enrich the day’s batch. Same setup, same natural-language flow.
The Technical Path
One call per profile. HikerAPI gives you:
GET /v1/user/by/username(or/v2/variant) → biography, full name, follower/following/media counts,is_verified,is_private, external URL. Business/creator accounts also give category,public_email,public_phone_number, and address.GET /v1/user/medias→ recent posts and reels including captions and location tags when posts have them.
Everything above is public profile data — no privacy bypass, no scraping.
⚠️ CRITICAL: Enrich Just-in-Time, Not the Whole List
Do NOT enrich all 30,000 followers today for messages you’ll send over the next 3 years. Here’s why this matters:
Reason 1: Data freshness. At 25 DMs/day, a 30,000-name list is 1,200 days deep — over 3 years. If you enrich everyone today, the person at position 12,000 gets a message built on info from 18 months ago. Stale personalization looks like a bot immediately. “Loved your Bali trip!” about a trip from two years ago is a giveaway.
Reason 2: Request cost. Even on HikerAPI’s Ultra tier (see pricing table below), enriching a 30,000-follower list runs ~$18–36 in one shot. Cheap by API standards, but why spend anything at all on messages that’ll go stale?
The fix: enrich only today’s batch. Every morning, take that day’s 25 usernames, enrich them fresh, generate their openers, send.
HikerAPI Pricing (as of 2026-08-12)
Flat rate per request regardless of endpoint. Steps down as your prepaid balance grows:
| Tier | Per request |
|---|---|
| Start | $0.02 |
| Standard | $0.001 |
| Business | $0.00069 |
| Ultra | $0.0006 |
100 free requests to start. No monthly fee. Once you unlock a tier, it stays permanent on your account.
Cost math for a 30,000-follower account (Ultra tier):
- Fetching the list = 300 requests
- Enriching everyone at once = 30,000 requests (60,000 with recent media)
That’s a 100–200× multiplier over just the list itself.
💡 There’s no technical limit stopping you from enriching everyone at once. Just-in-time is a recommendation, not a constraint.
Step 3 — Generate One Personalized Opener Per Follower
The gist: For each enriched profile, AI reads the profile and writes ONE line — the shortest, most human-sounding opener that references something real about that person. Not a paragraph. Not a pitch. One line.
The One-Signal Rule
The AI picks the strongest available personal detail and builds the opener around it. Ranked by how often it exists:
- Bio text — the goldmine when it’s there
- Business category — reliable for creators/businesses
- Recent post captions — captures what they’ve been talking about
- Follower/following ratio — creator vs. lurker profile
- External link — shows what they promote
- Location tag — geographic context
✨ What Good Openers Look Like
| Signal found | Opener |
|---|---|
| Bio: “Lisbon → Bali ✈️ 12 countries this year” | “okay, Lisbon AND Bali in one year — which one would you go back to first?” |
| Category: Sports & Fitness · last reel: “5AM leg day” | “5am leg day is criminal 😅 do you actually train that early every day?” |
| Bio empty, no usable signal | “hey — thanks for the follow! what made you hit follow, the posts or the stories?” |
🚨 Three Rules That Make This Work
1. It’s OK if some followers have no usable signal. Empty bios, private accounts with no visible activity — those exist. Use the neutral fallback opener. The message doesn’t need to be clever, it just needs to not read like a template.
2. NEVER let the AI invent a detail. If there’s no signal, fall back to the neutral opener. Don’t guess. A wrong personal detail is far worse than a generic hello. Build this rule into your prompt.
3. Don’t pitch anything in message one. The opener starts a conversation. The offer comes later, once there’s actual exchange. This is what performs and what keeps your account safe.
📋 Copy This AI Prompt
You write ONE opening DM for the person described below.
The DM will be sent from an account they already follow.
RULES:
- ONE sentence, maximum two. Casual, conversational, lowercase-friendly.
- Find the strongest personalization signal (bio, category, recent
post/caption, follower ratio, external link, location tag). Use it.
- If NO usable signal exists, use this exact fallback:
"hey — thanks for the follow! what made you hit follow, the
posts or the stories?"
- NEVER invent a detail. If it's not in the input, don't reference it.
- NEVER pitch, sell, promote, or link to anything. Just start a chat.
- End with a question that invites a natural reply.
INPUT — profile data:
[paste the enriched profile fields here]
OUTPUT — just the opener text, no explanation, no quotes.
Feed each enriched profile into this prompt, save the returned opener alongside the username, and you’re ready for the CSV.
Step 4 — Build the CSV
The gist: Two columns, one row per person, saved as UTF-8. That’s it.
Required Format
- Two columns:
username,message - Encoding: UTF-8
- One row per person — one unique message per row
⚠️ Common Import Traps
| Problem | Fix |
|---|---|
| Comma inside the message | Wrap message in double quotes: username,"message, with comma" |
| Double quotes inside message | Escape by doubling them: ""like this"" |
Leading @ on usernames |
Remove them — Onimator wants usernames without @ |
| Emoji rendering as gibberish | Save as UTF-8 explicitly (Excel’s default may not be) |
| Extra blank rows at the bottom | Delete them — some can break the import |
Save it. Back it up. Ready for import.
Step 5 — Load Into Onimator
The gist: In your account’s DM tab, turn on Targeted DM Campaign, import the CSV, configure your daily cap. Two toggles matter more than the others.
The Setup
- Open your account’s DM tab (Settings → DM).
- Enable the Master Toggle (Enable Direct Message).
- Enable Targeted DM Campaign mode.
- Import your CSV.
⚠️ Two Toggles That Matter Most
- ✅ Skip existing threads — TURN THIS ON. Your follower list will include people you’ve already talked to. Without this, the campaign restarts old conversations with a canned opener. Awful.
- ⚙️ Warm-up before DM — Optional here. Less critical than for cold outreach since the recipient already follows you.
📊 Recommended Starting Settings
| Setting | Start here |
|---|---|
| Daily cap | 10–15 at first, work up to 25–30 after 2 clean weeks |
| Batch size | 3–5 users per burst (DM Action setting, shared across modes) |
| Delay between messages | 10–20 seconds minimum |
| Skip existing threads | ✅ ON |
| Warm-up before DM | Optional |
⚠️ 20–30/day is NOT an official Instagram limit. It’s what the Onimator team has found works safely. Your specific safe number depends on account age, warm-up state, and history. Start low and tune up.
About Spintax and [AI] Placeholders
Other DM modes use spintax ({a|b|c}) and [AI] placeholders. Targeted DM Campaign doesn’t need them — every row already has a unique message. If you’re used to configuring spintax in other modes, that’s why you don’t see it here. The CSV does the same job.
Step 6 — Let It Run
The gist: Once configured, it sends your daily batch, waits, sends the next day’s, waits. You add new followers to the queue as they arrive.
Volume Guidance By Account Type
- 🐣 Fresh account: 5–10/day for the first two weeks
- 🌱 Warmed account: 15–25/day as your operational default
- 🌳 High-trust warmed account: 25–30/day maximum, watch closely
👀 What to Monitor
- Reply rate — but note raw reply rate includes rejections and hostile replies. See DM Reply Rate for the quality-vs-quantity distinction.
- Try Again Later popups or verification challenges — pause and let them clear before resuming
- Session status — session-expired flags mean the account needs re-login before continuing
🛑 When to Pause
- Any DM action-block warning
- Sudden drop in reply rate (could mean DM Deliverability collapsed)
- Meta enforcement waves in your niche
Step 7 — Handle Replies
The gist: Have a plan for the replies before you scale volume. Otherwise you’ll have a full inbox and no time to respond.
Small Volumes (a few dozen replies/day)
One person can handle it. You or a VA reads each reply and continues the conversation, moving the person toward whatever offer or action makes sense.
Larger Volumes (hundreds of replies/day)
You’ll need dedicated chatter coverage — a team, or shift-based coverage across time zones. Unanswered replies convert worse than fast replies, and at scale, unanswered replies create bad experiences your audience remembers.
⚠️ Set up your reply plan BEFORE scaling volume. High send volume + unresponsive inbox = wasted opportunity across every conversation that could have converted.
🔧 Troubleshooting
| Problem | Fix |
|---|---|
| Many followers have empty bios | Expected. The neutral-opener fallback handles it. Don’t skip them — they’re still opted-in followers. |
| Openers reference things that no longer exist | The batch was enriched too far ahead. Switch to just-in-time enrichment (Step 2). |
| CSV import fails or rows look mangled | Check UTF-8 encoding, escape commas/quotes inside message text, strip leading @ from usernames, one message per row. |
| Campaign re-messages people already in the inbox | Turn on Skip existing threads. |
| Sending feels risky or account is new | Lower daily cap, lengthen delays, warm the account first. See Warm-Up guide. |
| Private accounts in the follower list | They still follow you and can still be messaged. Less public data available — they fall back to neutral openers. |
| Replies arrive faster than you can handle | Add chatter coverage before scaling further, not after. |
🏁 Wrapping Up
This workflow turns “here’s my follower count” into “here’s my conversation count.” That’s a real operational shift.
The setup is the hard part. Once the CSV is loaded and daily cap is set, it runs itself. Your recurring work is:
- 🔄 Refresh the follower list periodically
- 🎯 Enrich each day’s batch just-in-time
- ✍️ Generate fresh openers for that batch
- 💬 Handle the replies
Onimator handles everything else.
💡 Pro tip: Build the enrichment + opener generation as a scheduled job that runs each morning and drops the day’s CSV into a folder Onimator watches. Once automated, the workflow is hands-off except for reply handling.
🎥 Tutorials & Support
- Telegram Support: Join Onimator Support