Campaign Flow Builder
Every palette block for every platform: Instagram, TikTok, LinkedIn, Facebook, WhatsApp, Telegram, Discord. Plus shared logic blocks and canvas tips.
Campaign flow builder, palette on left, canvas in center, node settings on right.
Route: /campaigns/{platform}/new or /campaigns/{id}/manage.
The builder has three regions: Palette (left), Canvas (center), Live preview (right). Drag blocks from the palette onto the canvas and connect them in sequence.
Shared Logic blocks (all platforms)
| Block | Group | Purpose |
|---|---|---|
| Frequency cap | Logic | Limit how many times one fan can enter this flow (per-user limiter) |
| Delay | Logic | Wait seconds/minutes/hours/days before the next step |
| Branch (Paths) | Logic | Fan picks a path from 2–5 button or keyword options, each connected to its own downstream action (wait_for_choice) |
| Wait for reply | Logic | Pause for one inbound reply (text, phone, or email), then continue a single path, no branching (wait_for_reply) |
Ground Rules – Must follow account: DM & story triggers, and mid-flow after a Paths or Wait for reply step on comment-style flows; skips fans who do not follow you (one per campaign)
Triggers – Comment on Post: fan comments a keyword on your Post or Reel – Direct Message: fan sends a DM matching your keyword – Story Reply: fan replies to your Instagram Story – Mention in Post: fan @mentions you in a feed post – Mention in Reel: fan @mentions you in a Reel – Mention in Story: fan @mentions you in their Story
Actions – Send DM: outbound direct message – Send attachment: image, video, audio, or PDF in DM – Send cards: product card carousel (up to 10 cards) – Send buttons: text message with up to 3 quick-reply buttons – Reply on comment: public reply on the Post/Reel (a private reply triggered from a comment stays open for 7 days for DM delivery, per Meta rules) – Send Instagram post: share a post inside DM (MEDIA_SHARE) – Send products: Meta Commerce catalog products (up to 10 per message) – Call webhook: POST trigger payload to your URL – AI Response: generate reply with AI model
TikTok palette (/campaigns/tiktok/new)
Triggers – Comment on Post: fan comments a keyword on your video (Comment-to-DM supported) – Direct Message: fan sends a DM matching your keyword
Actions – Send DM: text-only outbound message (no attachments, cards, or buttons) – Reply on comment: public reply on the video (up to 3 reply-on-comment steps per flow) – Send TikTok post: share one of your TikTok videos in DM – Send TikTok Q&A: share a Q&A / link card in DM – AI Response: generate a reply with AI – Call webhook: POST trigger data to URL
Messaging window: TikTok DMs stay open 48 hours after the fan’s last message, with a maximum of 10 consecutive outbound DMs before they need to reply again.
Not available on TikTok: attachments, cards, buttons, Must follow account.
LinkedIn palette (/campaigns/linkedin/new)
Triggers – Comment on Post: someone comments on your company Page post
Actions – Send DM: labeled Coming soon · LinkedIn partner API pending (disabled in UI) – Reply on comment: public reply on the LinkedIn post – Call webhook: POST trigger data to URL
Logic: Delay, Frequency cap (no Must follow account).
Facebook palette (/campaigns/facebook/new)
Triggers – Comment on Page Post: comment on your Facebook Page post – Direct Message: Messenger DM matching keyword – Postback button: user taps a Messenger postback button – Messenger referral: user opens Messenger from m.me link or Click-to-Messenger ad – Lead ad form: user submits a Facebook lead generation form
Actions – Send DM, Send attachment, Send cards, Send buttons, Reply on comment, Send products (Meta Commerce), Call webhook, AI Response
Messenger windows: Standard 24-hour messaging window applies after user interaction; sponsored message rules apply for ads. Private replies sent from a comment stay open for 7 days.
WhatsApp palette (/campaigns/whatsapp/new)
Triggers – Direct Message: inbound WhatsApp message matching keyword
Actions – Send message: text only, up to 4,096 characters – Send attachment: one file per step with optional caption – Send products: Meta Commerce catalog, up to 10 products – Send location: map pin with optional name and address – Send contact: contact card with phone number – Send sticker: WebP sticker, up to 500 KB – AI Response, Call webhook
24-hour service window: Free-form replies allowed within 24 hours of the user’s last message.
Telegram palette (/campaigns/telegram/new)
Triggers – Start menu button: user taps a trigger button on your bot /start menu – Received message: user sends text matching your keyword – Referral deep link: user opens bot via /start referral URL
Actions – Send message, AI Response, Call webhook, Send buttons, Send sticker, Send GIF, Send location, Send contact card, Send invoice
Logic: Delay, Frequency cap, Branch (button-based paths).
Discord palette (/campaigns/discord/new)
Triggers – Slash start command: fan runs your bot’s /start slash command (optional referral link on the same trigger) – Received message (DM): fan sends your bot a keyword-matching direct message – Received message (channel): fan posts a keyword-matching message in a server channel (mentioning the bot is configurable) – Button or select press: fan taps a button or picks a string-select option – Member join: fan joins your Discord server – Voice join / Voice leave: fan enters or leaves a voice channel
Actions – Send message – Send buttons – Send select menu – Send embed – Send modal – Send sticker – AI Response – Call webhook
Not available on Discord: Must follow account.
Avoiding trigger conflicts
DMpro won’t let two active campaigns on the same connected account compete on the same trigger (same trigger type, same keyword, same post). The builder shows a conflict warning before you publish, and again if you invite collaborators whose accounts would create a conflict.
Collaboration: running a campaign on multiple accounts
Most campaigns run on a single connected account. For agencies and brand partnerships, you can invite other DMpro users’ connected accounts as participants so the same flow runs on all of their accounts too.
- Add participants from the builder; each invited account gets an invitation to accept or reject.
- DMpro checks for trigger conflicts on their account before they can accept.
- Choosing Wait for invites as the start mode keeps the campaign pending until every invited account accepts (participants must be added at creation for this mode).
- A campaign can have up to 50 participants.
- Send Instagram post and Send products steps only work on the account that owns the posts or product catalog, so invited accounts can’t be used for those specific steps.
Call webhook: sending a response back
Call webhook posts fan and campaign data to a URL you provide, on every platform. Optionally, DMpro can take whatever your webhook responds with and deliver it back to the fan as a DM, a public comment reply, or a private reply, so you can plug in custom logic (like a CRM lookup) and still have DMpro send the result.
Affiliate & product links
Attach a commercial link to a Send DM, Send cards, or comment reply step in three ways: paste a manual URL, pick a row from an uploaded custom catalog spreadsheet, or choose a live product from a connected store (Shopify, WooCommerce, and more). Use the {{affiliate_link}} placeholder anywhere in your message text and DMpro swaps it for a tracked link at send time. Clicks are logged and show up in your campaign analytics. See Affiliate Tracking & AI Response for catalog upload details.
Canvas tips
- Click a node to open its inspector panel on the right (below live preview on mobile).
- Red outline = validation error, hover for message.
- Use Undo/Redo in the builder toolbar.
- Live preview shows fan-side mock UI with
dmpro-watermark-white.svgoverlay on screenshots.
—
You don’t need to think about servers or queues, DMpro handles all of that, but here’s the plain-English version of what happens the moment a fan does the thing your trigger is listening for:
- The platform tells DMpro something happened: a comment, a DM, a button tap, someone joining your Discord server, and so on.
- DMpro checks the event is really from the platform, not a spoofed request, before doing anything with it.
- DMpro reads the event: who sent it, what they said or clicked, which post or channel it happened in.
- DMpro finds every active campaign it could match on that account, checking the trigger type, keyword or post scope, whether the sender is a mapped participant account, and your current plan limits.
- For each match, DMpro queues the response so nothing gets lost, even during a traffic spike.
- DMpro applies your settings: waiting out any action delay you set, checking your per-recipient cooldown hasn’t been hit, generating an AI reply if that step calls for one, and swapping in your tracked affiliate link if one is configured.
- DMpro walks your flow from the trigger through any conditions to the next action step.
- The message goes out: DM, comment reply, private reply, or webhook call, whichever your action step defines.
- The result is logged as sent, failed, or suppressed, and shows up in your campaign’s Live Activity feed.
All of this usually takes just a few seconds, longer if you’ve added an intentional action delay.
Still stuck? We’re happy to help.
Create your DMpro account, see pricing, or reach out to support directly.




