How to Turn Bug Reports in Front into Tracked Monday Items with AI Extraction

Catch bug reports as they arrive in Front, let Miraxa pull out the component, repro steps, severity, and affected version, then open a clean engineering ticket in Monday.com and tag the conversation as logged.

What This Integration Does

Support inboxes fill up with messages that mix real defects, how-to questions, and feature wishes, all written in the customer's own words. Manually re-typing the genuine bugs into your engineering tracker is slow and lossy: the severity gets guessed, the steps to reproduce get summarised away, and the original conversation is never linked back. This Spojit workflow does that triage for you. When a conversation lands in Front, the intelligent layer reads it, extracts a structured bug report, and only the messages that are actually defects become Monday.com items. Engineering gets a consistent ticket; support gets a tagged, traceable conversation.

The run model is event-driven. An inbound Front webhook fires the workflow with the conversation details. A Connector node in Agent mode extracts a structured object using a Response Schema, a Condition node keeps only genuine bugs, then two Connector nodes in Direct mode call Monday.com create-item to open the ticket and create-update to thread the customer context onto it. A final Front add-tag call marks the conversation so it is never processed twice. Each inbound event is a fresh, independent run: a re-delivered webhook simply produces a new run, which is why the closing tag and the dedup option matter.

Prerequisites

  • A Front connection (API key) added under Connections. See the Front connector reference.
  • A Monday.com connection (API token) added under Connections. See the Monday.com connector reference.
  • The Monday board ID where engineering tickets live. Run Monday list-boards once to find it, and note the group ID if you want new items placed in a specific group.
  • A Front tag (for example "Logged in Monday") created in Front. Run Front list-tags to capture its tag ID.
  • A signing connection for the Webhook trigger so Spojit can verify the inbound request. Use the Custom scheme if you are forwarding Front events through your own relay, or see the webhook trigger guide.

Step 1: Receive the conversation with a Webhook trigger

Add a Trigger node and set its type to Webhook. Spojit gives the workflow a URL that accepts an HTTP POST; point your Front rule (or relay) at it so each new or replied-to conversation is sent in. The trigger verifies the request against your chosen signing connection and exposes the parsed JSON body as {{ input }}. For the rest of this tutorial, assume the payload carries at least the conversation ID and the customer's text, for example:

{
  "conversationId": "cnv_55c8c149",
  "subject": "App crashes when I export a report",
  "body": "Every time I click Export on the Reports page the whole app goes white. I'm on version 4.2.1, Chrome on Windows.",
  "customerEmail": "dana@acme.com"
}

If your Front rule does not send the full message text, add a Connector node on Front in Direct mode using get-conversation with id set to {{ input.conversationId }} to pull the conversation before extraction. Turn on the trigger's event-id dedup option so a re-delivered webhook does not open a duplicate ticket.

Step 2: Extract a structured bug report with a Connector node in Agent mode

Add a Connector node and switch it to Agent mode. This is where Miraxa reads the raw message and returns clean fields. In the prompt, paste the customer text and ask for a structured bug report:

Read this customer message and decide whether it describes a software
bug. If it does, extract the bug details. If it is a question, a
feature request, or praise, set isBug to false.

Subject: {{ input.subject }}
Message: {{ input.body }}

Open the Response Schema and define the exact shape you want back, so the output is reliable JSON rather than prose:

{
  "type": "object",
  "properties": {
    "isBug": { "type": "boolean" },
    "component": { "type": "string" },
    "stepsToReproduce": { "type": "string" },
    "severity": { "type": "string", "enum": ["low", "medium", "high", "critical"] },
    "affectedVersion": { "type": "string" },
    "summary": { "type": "string" }
  },
  "required": ["isBug", "severity", "summary"]
}

Set the node's Output Variable to bug. Downstream steps then read {{ bug.isBug }}, {{ bug.component }}, {{ bug.severity }}, and the rest. A Response Schema is the difference between guessing at AI text and getting dependable fields; the structured output extraction guide covers schema design in depth.

Step 3: Keep only genuine bugs with a Condition node

Add a Condition node so questions and feature requests do not create engineering tickets. Configure the test on the extracted flag:

{{ bug.isBug }}  equals  true

Wire the true output into the Monday.com steps that follow. Leave the false output unconnected (or route it to a Send Email node that nudges the agent to handle the message manually). Because the extraction returns a boolean, this branch is deterministic and costs no AI credits. See the Condition node guide for compound tests if you also want to gate on severity, for example only auto-ticketing high and critical reports.

Step 4: Open an engineering ticket with Monday create-item (Direct mode)

On the true branch, add a Connector node on Monday.com in Direct mode and choose the create-item tool. Direct mode is right here: it is a single, predictable call with mapped inputs and no AI cost. Map the fields:

  • boardId: your engineering board ID from the prerequisites.
  • name: a readable title, for example [{{ bug.severity }}] {{ bug.summary }}.
  • groupId (optional): the group where new bugs should land.
  • columnValues: a structured object keyed by your board's column IDs. Map the extracted fields into the columns you use for component, version, and severity:
{
  "text_component": "{{ bug.component }}",
  "text_version": "{{ bug.affectedVersion }}",
  "status_severity": { "label": "{{ bug.severity }}" },
  "long_text_repro": "{{ bug.stepsToReproduce }}"
}

Set the node's Output Variable to ticket. The created item's ID comes back as {{ ticket.create_item.id }}, which the next step needs. Column IDs are board-specific: open the board's column settings in Monday to confirm the exact keys before mapping. The Direct mode guide explains input mapping.

Step 5: Thread the customer context with Monday create-update

Add another Connector node on Monday.com in Direct mode, this time choosing create-update. This posts the original customer words and a link back to the conversation as an update (comment) on the ticket, so engineering sees the raw report alongside the structured fields. Map:

  • itemId: {{ ticket.create_item.id }} from the previous step.
  • body: the customer context, for example:
Reported by {{ input.customerEmail }} in Front.

Original message:
{{ input.body }}

Front conversation: {{ input.conversationId }}

Keeping the create-item and create-update calls as two separate Direct-mode nodes (rather than one Agent-mode step) keeps the run cheap and predictable: the AI cost is spent only once, in Step 2, where judgment is actually needed.

Step 6: Mark the Front conversation as logged with add-tag

Finish with a Connector node on Front in Direct mode using the add-tag tool. This closes the loop so support can see the bug is tracked and so a replayed webhook is easy to skip. Map:

  • conversationId: {{ input.conversationId }}.
  • tag_ids: an array containing your "Logged in Monday" tag ID, for example ["tag_abc123"].

If you want support to also reply to the customer confirming the report was filed, add a Front send-message Direct-mode node, or use a Send Email node, before this tag step. To send the customer the ticket reference, include {{ ticket.create_item.id }} in the message body.

Tips

  • Constrain severity with an enum in the Response Schema (as shown) so the Condition node and the Monday status column always receive one of a known set of values.
  • Ask Miraxa to scaffold the canvas for you: "Build a workflow with a Webhook trigger, an Agent-mode Connector node that extracts a bug report with a Response Schema, a Condition on {{ bug.isBug }}, then Monday create-item and create-update, then Front add-tag." Then fine-tune each node in the properties panel.
  • Run Monday list-boards and Front list-tags once in a throwaway workflow to capture the board ID, group ID, and tag ID before you wire the live flow.
  • If you only want to auto-ticket the worst reports, extend the Condition to also require {{ bug.severity }} in (high, critical) and let support handle the rest manually.

Common Pitfalls

  • Wrong column IDs. Monday columnValues are keyed by the board's internal column IDs, not the column titles you see in the UI. Mapping to a title silently drops the value. Confirm the IDs in the board's column settings.
  • Webhook replays creating duplicates. Front (or a relay) can deliver the same event more than once. Enable the trigger's event-id dedup option and rely on the Step 6 tag so already-logged conversations are easy to filter out.
  • Skipping the Response Schema. Without it, the Agent-mode node returns free text and {{ bug.isBug }} will not exist, so the Condition node cannot branch reliably. Always define the schema and set an Output Variable.
  • Treating create-update like create-item. create-update posts a comment and needs an existing itemId; it does not create the ticket. Order the nodes so the item exists first and pass {{ ticket.create_item.id }} through.

Testing

Validate on a small scope before turning the workflow on. Point the Webhook trigger at a test Front rule or post a sample payload (like the one in Step 1) to the workflow URL, and watch the run in the execution history. Send one obvious bug and one plain question through, and confirm the question stops at the Condition node while the bug produces a Monday item with the right component, severity, and version columns, a threaded update carrying the original message, and a tagged Front conversation. Inspect the bug variable in the run output to check the extraction quality, and only widen the Front rule to your full inbox once a handful of test conversations look correct.

Learn More

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