Instagram Business Trigger
What it does: Fires your workflow in real time whenever something happens on your Instagram Business account — new DMs, comments on posts, story mentions, reactions, and more.
Built for creators and businesses. Accounts that get hundreds of DMs per day can use the keyword filter to only fire workflows for real leads (e.g. messages containing "buy", "pricing", "collab") while ignoring the rest.
When to Use This
Use the Instagram Business Trigger when you need to:
- ✅ Reply automatically when someone comments on your post
- ✅ Capture DM leads and route them to your CRM
- ✅ Get notified in Slack when someone mentions you in a story
- ✅ Screen collab or partnership requests with keyword filters
- ✅ Moderate comments by piping them through an AI sentiment checker
- ✅ Auto-acknowledge messages with a typing indicator + instant reply
Example: Someone DMs you "pricing?" → the trigger fires → your workflow sends a custom pricing reply instantly.
Supported Events
Direct Messages
| Event | What it captures |
|---|---|
messages | Incoming DMs — text, images, videos, voice messages, story replies, and edited messages |
messaging_postbacks | Button clicks inside DMs (quick replies, ice breakers) |
messaging_seen | Read receipts when you view a message |
message_reactions | Emoji reactions on messages |
Edited messages: When a user edits a DM, Meta delivers a message_edit event. The trigger automatically enriches it with the sender info and updated text via the Conversations API, then delivers it as a messages event so your workflow handles it the same way as a new message.
Engagement
| Event | What it captures |
|---|---|
comments | Comments on your feed posts and reels |
live_comments | Comments during your live broadcasts |
mentions | When someone @mentions your account in their story or caption |
Insights
| Event | What it captures |
|---|---|
story_insights | Story metrics delivered after a story expires (impressions, reach, taps) |
Development Mode Restriction: In Development mode, webhook events are only delivered for users who have authorized your Meta app. Events from other users are silently dropped by Meta. To receive events from all users, your app must go Live via Meta App Review.
Prerequisites
Before you can use this trigger, you need:
- An Instagram Business or Creator account (personal accounts are not supported)
- A Meta Developer App with the Instagram product added
- The following permissions on your app:
instagram_business_basicinstagram_business_manage_messagesinstagram_business_manage_comments
- A verified Callback URL in your Meta App Dashboard (the platform provides this)
Setup Guide
Step 1 — Create or Connect Credentials
- Add the Instagram Business Trigger to your workflow
- In the trigger settings, click Select Credentials → Create New
- Enter your Meta App's App ID and App Secret
- Click Connect with Instagram — complete the OAuth flow in the popup
- Your credentials are saved and your Instagram User ID is stored automatically
Step 2 — Get Your Callback URL and Verify Token
- In the trigger settings, click Get Setup Info
- The panel shows your Callback URL and Verify Token — copy both
- These are the same for all connected accounts on your platform (platform-level tokens)
Step 3 — Configure Webhooks in Meta App Dashboard
- Open your Meta App Dashboard → Instagram → Configure webhooks
- Paste the Callback URL from Step 2
- Paste the Verify Token from Step 2
- Click Verify and Save — Meta will make a GET request to confirm the URL works
- Subscribe to the fields you want:
messages,comments,mentions, etc.
Auto-subscribe: After verifying your webhook URL in the Meta App Dashboard, click Get Setup Info (or Refresh) in the trigger settings. The platform will attempt to auto-subscribe your Instagram account to the selected fields. If it succeeds, you'll see a green "Webhook registered" badge and no manual subscription is needed.
Step 4 — Select Events
In the trigger settings, check the events you want to subscribe to:
- Direct Messages:
messages,messaging_postbacks,messaging_seen,message_reactions - Engagement:
comments,live_comments,mentions - Insights:
story_insights
Step 5 — Save and Test
- Save your workflow
- From an authorized Instagram account (or a Test User account), send a DM or leave a comment
- Your workflow should fire and you'll see the execution in the workflow history
Configuration Reference
| Setting | Description |
|---|---|
| Credentials | Your Instagram Business OAuth credentials (App ID + App Secret + connected account) |
| Events | Which webhook fields trigger this workflow |
| Callback URL | The platform's public webhook endpoint — paste this in Meta App Dashboard |
| Verify Token | Platform-level token — paste this in Meta App Dashboard (same for all accounts) |
| Keywords to match | Comma-separated. Only fires if the message/comment contains one of these words |
| Keywords to exclude | Comma-separated. Drops events if the text contains any of these words |
| Ignore echoes | When on (default), your own sent messages do not re-trigger the workflow |
Output Variables
When the trigger fires, these variables are available to all downstream blocks:
Always Available
| Variable | Description |
|---|---|
{{trigger.type}} | Event type — e.g. messages, comments, mentions |
{{trigger.from}} | Sender's Instagram-scoped user ID |
{{trigger.fromUsername}} | Sender's Instagram username |
{{trigger.recipient}} | Your Instagram Business account ID |
{{trigger.text}} | Message text, comment body, or postback title |
{{trigger.messageId}} | Unique ID of the message or comment |
{{trigger.timestamp}} | Unix timestamp of the event |
For Comment / Mention Events (comments, live_comments, mentions)
| Variable | Description |
|---|---|
{{trigger.commentId}} | ID of the comment — use with "Reply to Comment", "Hide Comment", "Show Comment" |
{{trigger.mediaId}} | ID of the post the comment was made on — use with "Get Comments" |
{{trigger.fromUsername}} | Username of the person who commented |
For Message Events (messages)
| Variable | Description |
|---|---|
{{trigger.attachments}} | Array of attachments (images, videos, audio, story replies) |
Advanced
| Variable | Description |
|---|---|
{{trigger.count}} | Total number of events in this webhook batch |
{{trigger.events}} | Full array of all events in the batch |
{{trigger.rawPayload}} | Complete Meta webhook payload for advanced use cases |
Tip for Comment Workflows: The {{trigger.commentId}} and {{trigger.mediaId}} variables are automatically set for comments events. Pass them directly into the Instagram Business Action block's "Reply to Comment" or "Get Comments" actions.
Common Use Cases
1. Keyword-Filtered Lead Capture
Configuration:
- Events:
messages - Keywords to match:
buy, pricing, interested, rate card, collab
Workflow:
- Mark as Seen (Instagram Business action)
- Typing Indicator (Instagram Business action)
- Send Message:
"Hi {{trigger.fromUsername}}! Thanks for reaching out..." - HubSpot / CRM: Create Contact
- Slack: Notify sales team
2. Auto-Reply to Comments
Configuration:
- Events:
comments - Keywords to match:
price, how much, link
Workflow:
- Reply to Comment:
"Check your DMs {{trigger.fromUsername}}!" - Send Message (DM): Full pricing details to
{{trigger.from}}
3. Story Mention Acknowledgment
Configuration:
- Events:
mentions
Workflow:
- Send Message:
"Hey {{trigger.fromUsername}}! Thanks for the mention!" - Google Sheets: Log mention date + username
4. Comment Moderation
Configuration:
- Events:
comments
Workflow:
- AI Block: Analyze sentiment of
{{trigger.text}} - Condition: If spam/negative → Hide Comment + log to moderation sheet
- Condition: If positive → Reply to Comment with a thank-you
5. Multi-Language Auto-Response
Configuration:
- Events:
messages
Workflow:
- AI Block: Detect language of
{{trigger.text}} - AI Block: Generate reply in detected language
- Send Message:
{{ai.reply}}to{{trigger.from}}
Best Practices
- ✅ Use keyword filters to avoid firing workflows on every single DM — this saves execution credits and keeps your automation focused
- ✅ Enable "Ignore echoes" (it's on by default) to prevent your own sent messages from looping back and re-triggering the workflow
- ✅ Subscribe only to the events you need — subscribing to everything creates unnecessary noise and load
- ✅ Test with authorized accounts first — in Development mode, only test users who completed OAuth can trigger events
- ✅ Keep the webhook URL stable — if you change your domain, update the Callback URL in Meta App Dashboard immediately
- ✅ Go Live for production — submit your app for Meta App Review to remove Development mode restrictions
Troubleshooting
Webhook not triggering
Check in order:
- Is your Callback URL verified in Meta App Dashboard? (Must show a green checkmark)
- Are the correct fields subscribed in Meta App Dashboard? (
messages,comments, etc.) - Is the test account a user who has authorized your Meta app? (Development mode restriction)
- Is the workflow saved and active?
- Is the Verify Token in Meta App Dashboard exactly matching what's shown in trigger settings?
"Webhook registered" badge not showing
Fix: Click Get Setup Info (or Refresh) in trigger settings after completing webhook verification in Meta App Dashboard. Auto-subscription requires the webhook URL to be verified first.
Events received but workflow not firing
Check:
- Are the event types subscribed in Meta App Dashboard matching what's selected in the trigger settings?
- Do you have keyword filters set that are filtering out your test messages?
- Is "Ignore echoes" enabled but you're testing with your own account's messages?
"Verify Token does not match"
Fix: Copy the Verify Token directly from the trigger settings (use the Copy button). Do not type it manually — even a single space difference will fail verification.
Getting events but wrong variable values
Check: Use {{trigger.rawPayload}} to inspect the full Meta webhook payload and verify what fields are present for your specific event type.
Limitations
- Development Mode: Events only delivered for users who authorized your Meta app
- Webhook delivery: Meta delivers events asynchronously — there may be a delay of a few seconds
- story_insights: Delivered after the story expires (24 hours later), not in real time
- Batch delivery: Meta may batch multiple events in one webhook call —
{{trigger.count}}tells you how many - No polling: This trigger is purely event-driven; it cannot poll for historical events
- Edited messages (
message_edit): Meta does not include sender info in edit events. The trigger automatically enriches them via the Conversations API, but this requiresinstagram_business_manage_messagespermission and an active access token on the credential - Echo filtering: Your own outbound messages are filtered out by default (configurable via "Ignore echoes")
Related Blocks
- Instagram Business Action: Reply to comments, send DMs, publish content from within your workflow
- Condition: Route workflow logic based on event type or message content
- AI Block: Analyze sentiment, classify messages, generate contextual replies
- HubSpot / Salesforce / CRM: Log qualified leads automatically
- Slack / Discord: Alert your team about important Instagram activity
- Send Email: Follow up via email after Instagram interactions
Need Help?
- Review Instagram Webhooks documentation (opens in a new tab)
- Check Meta App Dashboard (opens in a new tab) for webhook subscription status
- Test webhook delivery using Meta Webhooks Test Tool (opens in a new tab)
- Add Test Users in Meta App Dashboard → Roles → Test Users (required in Development mode)
Pro Tip: In Development mode, to test comments events, the person leaving the comment must have also completed the OAuth flow and authorized your Meta app. Add them as a Test User in your Meta App Dashboard first.