Docs

Comment triggers

Keyword lands on any post → auto-DM the commenter → optionally capture their email first → send the deliverable.

Comment triggers run universally across every post in a workspace. A trigger isn't tied to a specific post — once it's active, every comment on every published post is scanned against the keyword list.

Anatomy

  • Name — internal label for the trigger. Never shown to a commenter.
  • Keywords — comma-separated. Case-insensitive. Partial-word matches don't fire; a comment is scanned against whole-word hits only.
  • Public reply — a short varied response from a built-in pool ("Just sent you a DM 💌", "Dropped it in your DMs!" …). Varied so Meta doesn't flag identical replies as spam.
  • DM path — the DM sent to the commenter. Optionally gated behind an email ask.
  • Deliverable — a link, a PDF, or both. Included in the final DM.

Email-gated DM funnel

With email-gate on, the first DM asks for the commenter's email. Once they reply with one (we validate shape), BFM sends the final DM with the deliverable. Captured emails show up on the trigger's detail view and can be exported to CSV.

Without email-gate, the final DM fires immediately — faster conversion but no email captured for your list.

What's needed to make this work

  • An Instagram Business or Creator account connected to the workspace with instagram_manage_comments and instagram_manage_messages permissions granted at consent time.
  • Your Meta app approved for live users — Dev-Mode apps only receive comment webhooks on test-user accounts, not from real audience comments. BFM Media is approved; if you're self-hosting with your own Meta app, submit for review.
How fast does it fire?
Meta posts the comment webhook within seconds of the comment landing. BFM fires the public reply + DM on receipt, so the end-to- end median is around 10 seconds. If the commenter's DM inbox blocks message requests from new accounts, Meta queues the DM silently and the user never sees it — nothing BFM can do.