Bulk Campaigns
How to queue up a list of usernames, set daily limits and delays, and let DMpro send personalized cold DMs for you over hours or days.
A campaign is a bulk DM run. Instead of browsing to one profile at a time, you paste a list of usernames, hit Start, and DMpro sends to them one at a time over hours or days, respecting delays and a daily cap.
Campaign vs. one-off DM
- One-off DM: you browse to a profile and manually send from the extension. Good for 1 to 10 DMs at a time.
- Campaign: you paste a list of usernames and DMpro sends over time with delays and daily caps. Good for 30 to 500+ usernames.
Campaigns respect DMpro’s Safety Mode caps and use the same AI prompt system as one-off DMs.
What a campaign is made of
- A name you give it (for example, “Fashion creators outreach Feb 2026”).
- A platform: Instagram OR TikTok, not both in one campaign.
- A list of usernames.
- Settings: daily limit, min/max delay, prompt, and an auto-DM toggle.
- A status: draft, running, paused, completed, stopped, or out of credits.
- Progress stats: total, sent, failed, skipped, remaining.
Where to manage campaigns
Go to Dashboard → Campaigns. Every campaign shows as a card with its current status, a progress bar, the sent/total count, and an estimated completion date based on your daily cap.
Campaigns and credits
Every message a campaign sends spends one credit, from either your subscription credits or your one-time credits. If credits run out mid-campaign, it auto-transitions to out of credits and pauses.
Limits by plan
- Free tier: you can create campaigns, but they’re limited to 10 usernames each (matching your credit ceiling).
- Starter, Growth, Professional, Enterprise: no cap on usernames per campaign.
Deleting a campaign
Deleting removes the campaign and its history from your dashboard. Messages already sent are delivered and cannot be recalled. Pause or stop a campaign first if you want to keep its history for reference.
Creating a campaign takes about 5 minutes: name it, paste usernames, pick a prompt, hit Start.
- Open Campaigns. Go to Dashboard → Campaigns and click New Campaign.
- Name the campaign. The name is only visible to you (for example, “SaaS founders sales Q1”).
- Pick the platform. Instagram or TikTok, one per campaign. Want both? Create two campaigns.
- Add usernames. Paste your list into the text area (one per line, comma-separated, or a mix; DMpro parses it), or click Import CSV.
- Pick a prompt. Choose which of your saved prompts the campaign should run on every username. Consider testing on 5 usernames first if you’re unsure it works well across your whole list.
- Set the daily limit. Default is 30 DMs per day; the range is 1 to 200. Keeping it at 20 to 30 is recommended for safety, especially on Instagram, since higher volume increases block risk.
- Set send delays. Default minimum is 120 seconds (2 minutes) and default maximum is 300 seconds (5 minutes). DMpro randomizes each delay between the two to look natural.
- Enable Auto-DM. Auto-DM must be on for the campaign to send automatically.
- Save as Draft or Start. Save as Draft to hold it for later without sending anything, or click Start Now to begin sending right away (subject to your delays and cap).
After you start, the campaign appears in your Campaigns list with status “running.” Every 2 to 5 minutes, one DM goes out, and you can watch progress in real time. At your daily cap (default 30), the campaign auto-pauses and resumes the next day.
There are three ways to add usernames: paste them manually, upload a CSV, or, on Professional and above, sync them from Ainfluencer.
Manual paste
Type or paste usernames into the text area. DMpro accepts one per line, comma-separated, or a mix with @ symbols, and strips and normalizes them automatically. For example:
@garyveemrbeastkimk, @justinbieber
CSV upload
Click Import CSV and select a file. A single-column CSV of just usernames works, and a multi-column CSV works too as DMpro will ask which column contains the usernames. A header row is optional; DMpro auto-detects it. Only the username column is used for sending; other columns (like niche or follower count) are ignored for sending but can be logged for context in your export.
Duplicates and invalid entries
Duplicate usernames in a CSV are deduplicated automatically, so only one entry per username is added. If a username is already in another running or completed campaign, DMpro warns you but doesn’t block the add, so you can still send to the same person twice if you want. Invalid entries (empty strings, non-alphanumeric text, or entries that are far too long) are skipped and shown in an error list so you can fix and re-import them. Instagram and TikTok usernames only use letters, numbers, dots, and underscores.
Maximum batch size
- Free tier: 10 usernames per campaign.
- Paid tiers: no hard cap. The practical limit is 1,000+ usernames; beyond that it gets hard to manage. For campaigns over 500 usernames, consider splitting into smaller campaigns.
Ainfluencer sync (Professional and above)
If you have Ainfluencer connected, you can pull in creators who matched your active Ainfluencer campaign: in the campaign creation flow, click Sync From Ainfluencer, pick your active Ainfluencer campaign, and DMpro pulls the matched creators’ usernames into your DMpro campaign.
Editing the list after creation
Once a campaign is running, you can add more usernames to the end of the queue and remove pending usernames that haven’t sent yet, but you cannot remove usernames that have already been sent since they’re history. To edit, click the campaign, then Manage Usernames.
Within that list you can also skip selected usernames, retry failed usernames, and export the list to CSV for offline analysis.
Every campaign has three key numerical settings.
Daily limit
The most DMs the campaign will send per day, configurable from 1 to 200. Default is 30/day. Recommended ranges:
- New Instagram accounts: 10 to 20/day.
- Established Instagram accounts: 30 to 50/day.
- TikTok: 30 to 50/day.
- Very high volume with account safety guardrails (Enterprise): 100+/day.
Going higher than default is risky if your account is new or you’re sending to non-followers.
Min and max delay
Min delay is the shortest gap between two sends (default 120 seconds/2 minutes, minimum settable value 30 seconds, recommended 120+ seconds). Max delay is the longest gap (default 300 seconds/5 minutes, minimum settable value 60 seconds, recommended 300+ seconds). DMpro picks a random value between your min and max for every send, since a fixed interval like exactly 3 minutes every time looks mechanical to Instagram and TikTok’s anti-spam systems, while a randomized 2 to 5 minute range looks human.
How the daily cap resets
It resets at midnight in your local timezone. If your cap is 30, DMpro sends up to 30 today, pauses at the cap, and resumes tomorrow with a fresh 30. The cap tracks per campaign, so two campaigns each capped at 30/day send up to 60 combined per day.
Running multiple campaigns
Your total daily sends equal the sum of all your campaigns’ caps. If that total goes above Instagram’s practical limit (roughly 50 to 100/day), block risk increases. Best practice is to keep total daily sends across all campaigns under 50/day, unless you have Enterprise safety guardrails.
Adjusting settings mid-campaign
Click the campaign, click Settings, adjust the daily limit or delays, and save. Changes apply immediately. If you lower the daily cap below what you’ve already sent today, the campaign pauses until tomorrow.
Starting
A new campaign either saves as a draft (status draft, not sending) or starts immediately when you click Start Now (status running). To start a saved draft later, click the campaign, then Start. Once started, DMpro sends the first message within a few minutes and subsequent messages follow your delay pattern, with progress updating in real time.
Pausing
Click the campaign, then Pause. Status changes to paused. No more messages send, already-sent messages stay sent, pending messages stay queued, and you can resume any time. Pausing is fully reversible and preserves everything.
Resuming
Click Resume on a paused campaign. Status flips back to running and sending continues where it left off. For example, if you paused mid-day after sending 20 of a 30/day cap, resuming today allows 10 more before the day ends.
Stopping
Click Stop. Status changes to stopped. No more messages will ever send from this campaign, pending usernames are marked skipped, and already-sent messages stay sent. You cannot resume a stopped campaign. Stop is final; use Pause instead if you might come back to it.
Completed campaigns
Once every username has been processed (sent, failed, skipped, or no_credits), the campaign auto-transitions to completed. You’ll see a completion banner, final stats, and an export button to download results as CSV.
Deleting
Deleting removes the campaign from your dashboard and its history is gone, so only do this once you no longer need the results.
Running several campaigns at once
You can run multiple campaigns in parallel. They all share your credit pool, and while two campaigns can each target Instagram without conflicting directly, their combined daily sends still count toward Instagram’s rate limits, so your total daily sends equal the sum of every active campaign’s cap.
Every campaign carries one of six statuses, shown as a colored pill on its card in the Campaigns list.
| Status | What it means | Card color |
|---|---|---|
| Draft | Created but not yet started. You can edit settings, add or remove usernames, delete it, or start it. | Gray |
| Running | Actively sending, one DM every 2 to 5 minutes based on your delay settings. You can view progress, pause, edit limited settings (daily cap and adding usernames, not platform or existing usernames), or stop. | Green, with a pulsing indicator |
| Paused | You clicked Pause. Not sending, but state is preserved. You can resume, edit settings, add or remove pending usernames, or stop. Paused campaigns never auto-resume; you must click Resume. | Yellow |
| Completed | Every username has been processed (sent, failed, skipped, or no_credits). You can view final stats, export as CSV, or delete. Completed campaigns don’t restart; create a new one to send again. | Blue |
| Stopped | You clicked Stop. Pending usernames were marked skipped. Done and cannot be resumed; same view/export/delete actions as completed. | Red |
| Out of credits | Hit your credit limit mid-run and auto-paused. Buy more credits or wait for the monthly reset, then click Resume. | Orange |
Status transitions
Legal transitions: draft to running (start), running to paused (pause), running to stopped (stop), running to completed (automatic, when done), running to out_of_credits (automatic, when quota is hit), paused to running (resume), paused to stopped (stop), and out_of_credits to running (after buying credits).
Blocked transitions: a completed campaign cannot be revived, and a stopped campaign cannot be restarted.
Within a campaign, each individual username carries its own status showing exactly what happened to it.
| Status | What it means |
|---|---|
| Pending | In the queue, waiting for its turn to be processed. |
| Processing | DMpro is generating the message or sending it right now. Transient, usually lasting only a few seconds before flipping to sent, generated, or failed. |
| Sent | The message was generated and successfully delivered. This is the goal state every campaign aims to maximize. |
| Generated | The message was written but not sent, either because Auto-DM was off or because the send step hit a transient network issue. Not yet delivered; you can retry it. |
| Failed | Could not send. Common causes: the recipient’s DM inbox was closed, Instagram or TikTok blocked the send, the profile was deleted or renamed, or DMpro couldn’t find the message button after a page redesign. Can be retried manually. |
| Skipped | Skipped because you manually skipped it, the campaign was stopped mid-run (marking everything remaining as skipped), or the handle was invalid. |
| No credits | The campaign hit your credit limit before reaching this username. Once you add credits and resume, it re-queues as pending. |
Where to see them
Click any running or completed campaign and scroll to the Usernames section. Each entry shows its current status plus the message that was generated, the sent-at timestamp, and an error message if it failed. You can filter the list by All, Sent, Failed, Pending, Skipped, or No credits to quickly find usernames that need action.
Retrying failed usernames
Click a failed username and choose Retry, or select several and click Retry Selected. Each retry spends a fresh credit; if you don’t have credits available, retries won’t run.
Every campaign has a daily send cap (default 30). Once that many messages have gone out today, the campaign pauses until tomorrow.
When “tomorrow” is
The reset is based on the calendar day in your local timezone, so it happens at 00:00 midnight local time. If you’re in Toronto (Eastern time), for example, the counter resets at midnight Eastern.
Multiple campaigns
Each campaign tracks its own daily count, so two campaigns each capped at 30/day can send up to 60 combined per day. Keep in mind combined sends still count against Instagram’s practical limit of roughly 50 to 100/day total; running multiple campaigns doesn’t let you bypass overall rate limits.
Where to see today’s progress
The campaign card shows a progress bar for the whole campaign, today’s sent count underneath it (for example, “12/30 today”), and an estimated completion date based on remaining usernames and your daily cap.
What happens at the reset
At midnight local time, today’s sent count reverts to 0, and if the campaign was paused for hitting the cap, it resumes automatically and keeps sending within the new day’s cap. You don’t need to do anything; the reset is automatic.
Adjusting mid-day
Raising the daily cap mid-day (say from 30 to 50) lets the campaign send more today, up to the new cap. Lowering it (say from 30 to 20) after you’ve already sent 25 today pauses the campaign until tomorrow.
If a campaign hits your credit limit mid-run, it auto-pauses with the status out of credits.
Auto-detection
DMpro checks your credit balance before every send. Once your balance hits 0, the current send may still complete if it was already in progress, but the next send is prevented, the campaign transitions to out_of_credits, and every remaining pending username stays as pending.
Notification
You get an in-dashboard banner, plus an email if email notifications are enabled. Both read:
“Your campaign [name] paused. You’re out of generations. Buy more or upgrade to resume.”
Resuming after adding credits
Once you have credits again, whether from upgrading your plan, buying a one-time package, or a monthly reset, go to Dashboard → Campaigns, click the paused campaign, and click Resume. Sending continues from where it left off, and pending usernames get processed one by one.
Shared credit pool
Your generation credits are one shared pool across every campaign. If one campaign drains it to 0, every other running campaign also stops and flips to out of credits. Resume them all after adding credits and they’ll compete for the same pool until one drains it again.
Preventing it
Watch your credit balance during large campaigns. If you have 500 credits and a campaign of 1,000 usernames, you know it will pause about halfway through. To avoid that, upgrade to a bigger plan for more monthly credits, buy one-time credits ahead of time, or split the campaign into smaller batches paced with your monthly resets.
Credit priority
DMpro spends subscription credits first, then one-time credits, since subscription credits expire monthly while one-time credits never expire. If your subscription ends but you still have one-time credits, campaigns can keep sending using those; Free tier restrictions only apply once one-time credits also hit 0.
Stopping cleanly instead
If you’d rather not buy more credits, click the campaign, click Stop, and every remaining pending username becomes skipped while the campaign transitions to stopped.
Still stuck? We’re happy to help.
Create your DMpro account, see pricing, or reach out to support directly.




