How to Sync Resolved Front Conversations into a Monday Reporting Board Nightly

Build a Spojit workflow that runs every night, lists yesterday's Front conversations, loops over the resolved ones, tags each with a resolution category and effort estimate using a Connector node in Agent mode, and logs a row to a Monday.com reporting board so support leads track volume, themes, and handle time.

What This Integration Does

Support leads need a clear picture of what their team closed yesterday: how many conversations were resolved, what kinds of issues they were, and roughly how much effort each took. Pulling that by hand from Front every morning is slow and inconsistent. This workflow does it for you on a nightly schedule. It reads the day's conversations from Front, keeps only the resolved ones, asks the agent to classify each with a resolution category and an effort estimate, and writes one row per conversation to a Monday.com reporting board. Your leads read the board, not Front, and the data lands in the same shape every day.

The run model is fully unattended. A Schedule trigger fires once per night on a cron expression in your timezone. A Connector node in Direct mode lists yesterday's Front conversations. A Loop node iterates the resolved subset; inside the loop, a Connector node in Agent mode classifies the conversation against a fixed Response Schema, a Transform node maps the result onto your board's column IDs, and a final Connector node creates the Monday item. The workflow leaves new rows on the board and changes nothing in Front. Because each run targets a single day, re-running it duplicates that day's rows unless you de-duplicate (see Common Pitfalls), so treat each nightly run as the source of truth for one calendar day.

Prerequisites

  • A Front connection in Spojit with an API key that can read conversations and read tags. See the Front connector article for setup.
  • A Monday.com connection in Spojit with an API token that can create items on your reporting board. See the Monday.com connector article.
  • A reporting board in Monday.com with columns for the data you want to log: for example a status/category column, a number column for the effort estimate, a text column for a one-line summary, and a date column. You need the board ID and the column IDs (not the column titles).
  • A shared understanding of what "resolved" means in your Front account. Front marks closed conversations with the status archived; this tutorial treats archived conversations from yesterday as resolved.
  • Familiarity with variables and templates, since each step reads the previous step's output with {{ }} handlebars.

Step 1: Start with a Schedule trigger

Create a new workflow and add a Trigger node, then set its Trigger Type to Schedule. A Schedule trigger uses a 5-field Unix cron expression plus an IANA timezone. To run at 1:00 AM every day, enter:

0 1 * * *

Set the timezone to your team's zone, for example Australia/Sydney, so "yesterday" lines up with your support team's working day. The trigger output is {{ trigger.scheduledAt }}, the timestamp the run started. Running at 1:00 AM local time means the previous calendar day is fully closed before you query it. For more on cron and timezones, see Setting Up a Schedule Trigger.

Step 2: List yesterday's conversations from Front

Add a Connector node on the front connector in Direct mode and choose the list-conversations tool. This tool accepts a search query in the q field and a page_token for pagination. Use Front's search syntax to scope to yesterday's resolved conversations. For example, to return archived conversations updated in the last day:

{
  "q": "is:archived after:1d"
}

Adjust the query to match how your account tracks resolution; you can narrow by inbox or tag as well. The output is a list of conversation objects under a results array, each with an id, subject, status, and timestamps. Map that array to a variable such as {{ conversations }} so the next steps can read it. Front returns results in pages, so capture _pagination.next if your daily volume exceeds one page (see Common Pitfalls).

Step 3: Loop over the resolved conversations

Add a Loop node set to ForEach and point it at the conversation array from Step 2, for example {{ conversations.results }}. Each iteration exposes the current conversation as a loop item, for example {{ item }}, with fields like {{ item.id }}, {{ item.subject }}, and {{ item.status }}. If your Step 2 query already returns only resolved conversations, the loop body runs once per resolved item. If you prefer to filter inside the workflow instead of in the search query, add a Condition node as the first node in the loop body that checks {{ item.status }} equals archived and only continues on the true branch. For loop mechanics, see Using Loop Nodes.

Step 4: Classify each conversation with a Connector node in Agent mode and a Response Schema

Inside the loop body, add a Connector node on the front connector in Agent mode. Agent mode lets the agent read the conversation and return structured judgement. First have it call get-conversation with {{ item.id }} to load the full thread, then classify it. Write a prompt such as:

Read Front conversation {{ item.id }} using get-conversation.
Classify the resolution into one category and estimate the handling
effort. Return only the fields in the response schema.

Turn on Response Schema to force a clean JSON result instead of free text. Define a schema like this:

{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "enum": ["billing", "technical", "account", "shipping", "other"]
    },
    "effortMinutes": { "type": "integer" },
    "summary": { "type": "string" }
  },
  "required": ["category", "effortMinutes", "summary"]
}

Save the result to a variable such as {{ classification }}, giving you {{ classification.category }}, {{ classification.effortMinutes }}, and {{ classification.summary }} for the next steps. For when to reach for Agent mode and how schemas keep output reliable, see Using Connector Nodes in Agent Mode and Using Structured Output for Reliable AI Data Extraction.

Step 5: Shape the row with a Transform node

Add a Transform node in structured mode to build the Monday column values object. Monday.com keys column values by column ID, not by column title, so map your classification fields onto the exact IDs from your reporting board. For example, if your status column is status, your number column is numbers, your summary text column is text, and your date column is date4:

{
  "status": { "label": "{{ classification.category }}" },
  "numbers": {{ classification.effortMinutes }},
  "text": "{{ classification.summary }}",
  "date4": { "date": "{{ trigger.scheduledAt }}" }
}

Save this to a variable such as {{ columnValues }}. Building the object in one place keeps the create step clean and makes column-ID changes easy to maintain. For structured mapping patterns, see Using Transform Nodes (Structured Mode).

Step 6: Create the item on your Monday board

Still inside the loop, add a Connector node on the monday connector in Direct mode and choose the create-item tool. Fill the fields:

  • boardId: your reporting board's ID.
  • name: the conversation subject, for example {{ item.subject }}.
  • groupId: optional, the group to file rows under (for example a "Yesterday" group).
  • columnValues: the object from Step 5, {{ columnValues }}, keyed by column ID.

Each iteration creates one row, so the board fills with one row per resolved conversation. The tool returns the new item's id and name if you want to capture it. To extend this into a richer tracking layout, see building a tracking board in Monday.com.

Step 7: Confirm the board and review the run

After the loop completes, the workflow ends; there is nothing to return because a Schedule trigger has no caller. Open your Monday.com board to confirm the rows landed with the right category, effort, and summary. Optionally add a Send Email node after the loop to email your support lead a one-line "logged N conversations for {{ trigger.scheduledAt }}" note from Spojit's built-in mail service, so they know the nightly sync ran. Check the execution history in Spojit to see each loop iteration and the created item IDs.

Tips

  • Keep the Response Schema category as an enum so your Monday status column only ever receives labels it already has. Add new categories to both the schema enum and the board column together.
  • Use a number column for effortMinutes rather than text, so leads can sum and average handle time directly in Monday.com.
  • Run the Front search query as narrowly as possible (by inbox or tag) to keep the loop short, since Agent mode costs credits per iteration.
  • If your team also tags conversations in Front, you can call add-tag with the conversation ID and a tag ID inside the loop to mirror the AI category back into Front for cross-reference.

Common Pitfalls

  • Duplicate rows on re-run. Each run logs the same day again. If you re-run manually, either delete that day's rows first or add a Condition node that calls Monday's list-items and skips conversations whose ID is already on the board.
  • Pagination. Front's list-conversations returns one page at a time. On high-volume days, loop on _pagination.next by feeding it back into the page_token field until it is empty, or your board will be missing the later conversations.
  • Column IDs versus titles. The columnValues object must use Monday.com column IDs (for example status, date4), not the human-readable titles. Open the board's column settings to find the IDs.
  • Timezone drift. The Schedule timezone and your Front "after" window must agree, or "yesterday" can slip by a day. Anchor both to the same IANA zone and run after midnight local time.

Testing

Before enabling the nightly schedule, validate on a small scope. Temporarily tighten the Step 2 query to a single known conversation (for example a specific subject or a narrow time window), then use the Run button to execute the workflow once. Watch the execution history: confirm the Loop runs the expected number of times, the Connector node in Agent mode returns a result matching your Response Schema, the Transform node produces a valid column-values object, and exactly one row appears on your Monday.com board with correct values. Once a single-item run is clean, widen the query back to a full day and enable the Schedule trigger.

Learn More

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