Triage Instagram DMs into Slack every 15 minutes

By General Input

Every 15 minutes, sort new Instagram DMs into the right Slack channel with a summary, a classification, and a drafted reply you can copy-paste.

Integrations

  • Instagram
  • Slack Bot

Type

Agentic Task

Categories

  • Customer Support
  • Sales
  • Marketing

Build me an agent workflow that triages my Instagram Direct inbox and routes the important threads into Slack so nothing gets lost. I do NOT want it to auto-reply on Instagram. Its only job is to summarize, classify, and draft a reply that a human on my team will send from Instagram themselves.

Trigger: run on a cron every 15 minutes.

On each run, use the Instagram integration's List Direct Conversations operation to pull recent DM threads for my Business or Creator account. Compare each thread's updated_time against the last-seen timestamp the workflow saved on the previous run, and only process threads that have new activity since then. Track the latest updated_time you have surfaced in workflow memory (or a similar per-workflow state) so the next run does not repost the same threads. On the first-ever run, only consider threads updated in the last hour so we do not flood Slack with backlog.

For every thread with new activity, read the sender handle and the recent messages available on the conversation object, then classify the thread into exactly one of these buckets:

- sales_lead: asking price, availability, wholesale, custom orders, sizing, restock, or clearly evaluating a purchase.
- support: broken product, missing/late shipment, refund/return, complaint about an existing order.
- partnership: brand collab pitch, affiliate/creator outreach, sponsorship, agency reaching out.
- vip_or_press: verified/large accounts, journalists, notable creators mentioning the brand, or clearly high-signal mentions.
- noise: fan mail, emojis, one-word replies, spam, obvious bots. These get skipped and are not posted to Slack.

For every non-noise thread, use the Slack Bot integration's Send a Message operation to post to the matching channel. Default routing (make these configurable at setup):

- sales_lead → #sales-inbound
- support → #cx-instagram
- partnership → #brand-collabs
- vip_or_press → same as partnership channel by default, plus @-mention a designated Slack user I configure at setup.

Each Slack message should be formatted with Slack mrkdwn and include:

1. A header line with the sender's Instagram handle and the classification (e.g. *@sarah.knits* • sales lead).
2. The last 2 to 3 message excerpts from the thread, most recent last, quoted so the human can read the context in one glance.
3. A one-line reason for the classification (e.g. "Asking about wholesale pricing for 50+ units").
4. A drafted reply, clearly labeled "Draft reply (copy/paste into Instagram):" so nobody thinks it was sent. Match the tone of a small, friendly brand — no corporate boilerplate.
5. A link back to the Instagram thread using its permalink (or a direct.instagram.com URL built from the thread id) so the human can jump straight to the inbox.

Rules the agent must respect:

- Never call the Instagram Send Direct Message operation. This workflow is triage and drafting only.
- Skip noise silently. Do not post "nothing new" messages to Slack.
- If the same thread has multiple new messages since the last run, post it once with the combined context, not once per message.
- If Instagram returns a rate-limit or auth error, stop gracefully and try again on the next 15-minute tick — do not retry in a tight loop.

At setup, ask me for: the destination Slack channel for each of the four non-noise categories, the Slack user handle to @-mention for VIP/press, and the brand voice to use when drafting replies (a couple of sentences describing tone is enough).

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seatsPause marketing emails to escalated customers, then restore them