How to Connect a Front Conversation to a Monday Task with AI Triage

Catch every new Front conversation with a webhook, let an AI agent classify its priority and owning team into clean structured output, then create a routed Monday item and ping the right Slack channel, all in one Spojit workflow.

What This Integration Does

Support and sales teams that live in Front often need each incoming conversation to land as a tracked task somewhere their delivery team actually works, usually a Monday.com board. Doing this by hand means re-reading the message, guessing the priority, picking a team, and copying details across tools. This workflow removes that manual triage: when a conversation arrives, Spojit reads it, asks an Agent-mode Connector node to judge how urgent it is and who should own it, and creates a Monday item already routed to the correct group with a Slack heads-up so nothing sits unseen.

The run model is event-driven. A Webhook trigger receives a POST from Front the moment a conversation is created, so there is no polling delay. The conversation ID flows into a Connector node that fetches the full conversation, then into an Connector node in Agent mode whose Response Schema forces a predictable JSON verdict (priority, team, summary). A Direct mode Monday call writes the item, and a final Slack send-message announces it. Each new conversation produces exactly one Monday item; because the webhook returns immediately and replays of the same event can be deduplicated, re-deliveries do not create duplicate tasks.

Prerequisites

  • A Front connection (API key) with permission to read conversations, plus an active Front rule or app webhook you can point at Spojit. See the Front connector article.
  • A Monday.com connection (API key) and the target board's boardId, the destination group IDs, and the column IDs you want to populate (status, text). See the Monday.com connector article.
  • A Slack connection with access to the channel you want to notify. See the Slack connector article.
  • A signing connection for the webhook (use the Custom scheme with Front's shared secret, or Spojit if you control the caller) so inbound requests are verified by HMAC.
  • Enough AI credits for the Agent mode step (one short classification call per conversation).

Step 1: Receive the conversation with a Webhook trigger

Add a Trigger node and set its type to Webhook. Spojit gives the workflow a unique URL and returns 202 with an executionId to any caller. Attach your signing connection so requests are verified, and turn on event-id deduplication using Front's event identifier header so a replayed delivery cannot create a second task.

Point a Front rule or app webhook (fired on "inbound conversation created") at the workflow URL. The trigger output is the parsed JSON body, available as {{ input }}. A typical Front payload exposes the conversation ID at a path like this:

{
  "type": "inbound",
  "conversation": {
    "id": "cnv_55c8c149",
    "subject": "Refund not received",
    "status": "unassigned"
  }
}

Note the exact path to the ID in your own payload; you will reference it as {{ input.conversation.id }} in the next step.

Step 2: Fetch the full conversation from Front (Direct mode)

Add a Connector node, choose the Front connector, and keep it in Direct mode since this is a single deterministic lookup. Select the get-conversation tool and map its only input, id, to {{ input.conversation.id }}. Set the Output Variable to conversation.

This returns the conversation resource with its subject, status, recipients, and tags, which gives the AI step richer signal than the bare webhook body. If you also want the latest message text, you can add the get-contact tool later, but the subject and metadata from get-conversation are usually enough for triage.

Step 3: Classify priority and team with an Agent mode step and structured output

Add a second Connector node and switch it to Agent mode. Agent mode lets the agent reason over the conversation and decide, which is exactly the judgment task triage needs. In the prompt, paste the conversation details and ask for a verdict:

Classify this support conversation.
Subject: {{ conversation.subject }}
Status: {{ conversation.status }}
Recipient: {{ conversation.recipient.handle }}

Decide a priority and the team that should own it.
Write a one-sentence summary a busy manager can scan.

To make the result safe to wire into Monday, define a Response Schema so the agent must return JSON in a fixed shape:

{
  "type": "object",
  "properties": {
    "priority": { "type": "string", "enum": ["Low", "Medium", "High", "Urgent"] },
    "team":     { "type": "string", "enum": ["Support", "Billing", "Sales", "Engineering"] },
    "summary":  { "type": "string" }
  },
  "required": ["priority", "team", "summary"]
}

Set the Output Variable to triage. Downstream you can rely on {{ triage.priority }}, {{ triage.team }}, and {{ triage.summary }} always being present and within your allowed values.

Step 4: Route to the right group with a Condition node

Different teams usually live in different groups on the Monday board. Add a Condition node that branches on {{ triage.team }}. For example, send Billing and Support down one branch and Sales and Engineering down another, or build a branch per team. Each branch will feed its own Monday create step with the matching groupId.

If you prefer a single create step, you can skip the branch and instead use a Transform node to map the team name to a group ID, then reference that mapped value. Either approach keeps the routing logic visible on the canvas.

Step 5: Create the Monday item (Direct mode)

On each branch, add a Connector node for the Monday.com connector in Direct mode and select the create-item tool. Map the inputs:

  • boardId: your target board ID.
  • name: the item title, for example {{ conversation.subject }}.
  • groupId: the group for this branch's team.
  • columnValues: a JSON object keyed by your column IDs, carrying the AI verdict and a link back to Front.

A typical columnValues object looks like this (replace the keys with your real column IDs):

{
  "status":  { "label": "{{ triage.priority }}" },
  "text":    "{{ triage.summary }}",
  "link":    { "url": "https://app.frontapp.com/open/{{ conversation.id }}", "text": "Open in Front" }
}

Set the Output Variable to mondayItem so you can reference the new item's ID. If you want a richer comment thread on the task, follow with a create-update call using itemId set to {{ mondayItem.id }} and a body containing the full summary.

Step 6: Ping the team in Slack (Direct mode)

Add a final Connector node for the Slack connector in Direct mode and select the send-message tool. Set the channel and a message that links the new Monday item to the original conversation:

:envelope: New {{ triage.priority }} conversation routed to {{ triage.team }}
{{ conversation.subject }}
{{ triage.summary }}
Monday item: {{ mondayItem.id }}

Map the channel to your destination channel ID and the message text to the body above. Because this is the last step and the webhook already answered the caller in Step 1, the Slack ping happens asynchronously after the task exists, so the notification always points to a real item.

Tips

  • Keep the Agent mode prompt short and lean on the Response Schema; the schema, not the prose, is what guarantees clean values for Monday's status column.
  • Map {{ triage.priority }} straight onto a Monday status column whose labels exactly match your schema enum so the colored chip fills in automatically.
  • If you want a human gate for the Urgent branch, drop a Human node before create-item so an approver confirms before the task and Slack ping go out.
  • Use Miraxa to scaffold this canvas: ask it to "add a Webhook trigger, a Front get-conversation step, an Agent mode classification step with a priority/team schema, then a Monday create-item and a Slack send-message," then fine-tune each node in the properties panel.

Common Pitfalls

  • Front payload paths vary by event type and app. Inspect a real delivery in the execution log and confirm the exact path to the conversation ID before hardcoding {{ input.conversation.id }}.
  • Monday's columnValues keys are column IDs, not the labels shown in the UI. A label-based key silently writes nothing. Read the board to confirm IDs first.
  • A status label that does not exactly match an existing column option will be rejected. Keep your schema enum and the Monday column options in sync.
  • Without a signing connection and event-id dedup, a Front webhook retry can create a duplicate task. Configure both on the trigger.
  • Agent mode costs AI credits on every run. If volume is high, narrow the prompt and schema to keep each call small.

Testing

Before pointing live Front traffic at the workflow, send one test conversation. Trigger the Front rule on a low-stakes inbox, or replay a captured payload against the webhook URL, and watch the run in the execution log. Confirm that get-conversation returns the expected subject, that triage holds valid priority and team values, that a single Monday item appears in the correct group with the status and summary filled in, and that the Slack message links back correctly. Once one clean conversation flows end to end, enable the Front webhook on your real inbox.

Learn More

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.