Visual Canvas

Campaign Flow Builder

Every palette block for every platform: Instagram, TikTok, LinkedIn, Facebook, WhatsApp, Telegram, Discord. Plus shared logic blocks and canvas tips.

Untitled campaign · Instagram Draft Publish → TRIGGERS 💬 Comment on Post 📩 Direct Message 📖 Story Reply ACTIONS 💬 Send DM ✨ AI Response 🔗 Product Card LOGIC ⏱ Delay 🔀 Condition TRIGGER Comment on Post Keyword: “LINK” SEND DM “Hi! Here’s the link” + affiliate link AI RESPONSE Continue conversation Context: FAQ.pdf Node Settings TRIGGER KEYWORD LINK POST SCOPE All Reels ▾ MATCH TYPE Contains Exact RESPONSE DELAY 30 seconds ▾

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)

BlockGroupPurpose
Frequency capLogicLimit how many times one fan can enter this flow (per-user limiter)
DelayLogicWait seconds/minutes/hours/days before the next step
Branch (Paths)LogicFan picks a path from 2–5 button or keyword options, each connected to its own downstream action (wait_for_choice)
Wait for replyLogicPause for one inbound reply (text, phone, or email), then continue a single path, no branching (wait_for_reply)
Timing ranges: Delay and Frequency cap both accept 1–60 seconds, minutes, or hours, or 1–15 days. On any Send step you can also turn on an optional no-response follow-up message if the fan doesn’t reply within 60 seconds to 24 hours.
Message variants: Any Send DM step can hold more than one message variant. DMpro picks one automatically each time it sends, handy for A/B testing copy or rotating a welcome message.
### Instagram palette (`/campaigns/instagram/new`)

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

  1. Click a node to open its inspector panel on the right (below live preview on mobile).
  2. Red outline = validation error, hover for message.
  3. Use Undo/Redo in the builder toolbar.
  4. Live preview shows fan-side mock UI with dmpro-watermark-white.svg overlay 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:

  1. The platform tells DMpro something happened: a comment, a DM, a button tap, someone joining your Discord server, and so on.
  2. DMpro checks the event is really from the platform, not a spoofed request, before doing anything with it.
  3. DMpro reads the event: who sent it, what they said or clicked, which post or channel it happened in.
  4. 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.
  5. For each match, DMpro queues the response so nothing gets lost, even during a traffic spike.
  6. 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.
  7. DMpro walks your flow from the trigger through any conditions to the next action step.
  8. The message goes out: DM, comment reply, private reply, or webhook call, whichever your action step defines.
  9. 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.

Back to Help Center