Skip to content
Zapier case study

A coaching platform and a monday.com CRM kept in step by daily reports and status mirrors

An Australian coaching and training business runs its operation on a monday.com CRM and delivers coaching on a separate coaching platform. Fifteen Zaps keep the two in step: daily reports parsed into client records, engagement and session status mirrored back, paid Xero invoices marked on the right attendees, and contacts synced to Mailchimp without re-adding anyone who unsubscribed.

An Australian leadership and emotional-intelligence coaching businessCoaching and leadership trainingBuilt 2024–202627 Zaps in the account
Zaps in the account, 16 switched on
27
run entries, 22 Sep – 21 Oct 2026
855
tasks in the last full period, 3 Sep – 3 Oct
1,037

The business

The business runs public and corporate leadership programs and one-to-one coaching engagements. monday.com is its CRM and coaching tracker: contacts, engagements, attendees and cohorts. Coaching itself, with its sessions, questionnaires and evaluations, happens on Simply.Coach. Invoices are in Xero, marketing email in Mailchimp, the alumni community on Mighty Networks.

The coaching platform has no per-record trigger for most of what the coaches need to see, but it can send scheduled reports. So the core of the build turns a daily report into a bulk update: download the CSV, loop over the rows, find each client's engagement in monday and write the status or answers onto it.

The account also shows its history. The daily syncs were first built as long Zaps of about 17 steps, with delays to stay under monday's rate limits and a raw GraphQL request as a fallback lookup. They were later rebuilt into 8- to 10-step versions, which are the ones running now.

Audited 21 Oct 2026. 27 Zaps: 16 on and 11 off, 5 of them never published. Pro plan (annual) with a 1,500-task monthly allowance; pay-per-task overage enabled but unused; autoreplay off. Tasks are shown for the current period so far (3 Oct – 21 Oct) and the previous one (3 Sep – 3 Oct). Runs and errors are from Zap history for 22 Sep – 21 Oct: 855 run entries in all.

What we built

01

Daily reports into the CRM

Three polling Zaps that turn the coaching platform's scheduled CSV reports into updates on each engagement in monday.com.

  • Polling8 steps

    Daily session status sync

    • Simply.Coach
    • Filter
    • Formatter
    • Looping
    • monday.com
    Trigger
    Simply.Coach – New Custom Report, filtered to the daily coaching-sessions report
    What it does
    The report's CSV is imported, each row (engagement name, status) is looped over, the engagement is found in monday by name, and its debrief status is set from the report.
    The tricky part
    With no suitable per-record trigger, a report becomes a bulk update: CSV import, loop, search, update. Rows that do not match are skipped by filters instead of erroring.
    Error handling
    Filters guard against blank rows and lookups that find nothing. Autoreplay is off.
    Usage
    286 tasks (3 Oct – 21 Oct), 280 (3 Sep – 3 Oct). 264 runs (214 successful, 42 filtered, 8 safely halted), 0 errors (22 Sep – 21 Oct).
    Status
    On, version 3, last edited 28 Apr 2026
  • Polling8 steps

    Past-sessions status sync

    • Simply.Coach
    • Filter
    • Formatter
    • Looping
    • monday.com
    Trigger
    Simply.Coach – New Custom Report, filtered to the past-sessions version of the report
    What it does
    The same sync against a second report, so earlier sessions also get their final status.
    The tricky part
    Two report variants feed one tracker through a shared pattern.
    Error handling
    Filters guard against blank rows and lookups that find nothing. Autoreplay is off.
    Usage
    86 tasks (3 Oct – 21 Oct), 164 (3 Sep – 3 Oct). 117 runs (73 successful, 42 filtered, 2 halted), 0 errors (22 Sep – 21 Oct).
    Status
    On, version 1, last edited 28 Apr 2026
  • Polling10 steps

    Daily pre-coaching questionnaire sync

    • Simply.Coach
    • Filter
    • Code by Zapier
    • Formatter
    • Looping
    • monday.com
    Trigger
    Simply.Coach – New Custom Report, filtered to the pre-coaching report
    What it does
    Each day, questionnaire answers (role, time in role, nine wellbeing self-ratings, focus areas, biggest challenge, desired outcomes) are written onto each client's engagement in monday, 14 columns in all, so coaches see the baseline before the first session.
    The tricky part
    A JavaScript step downloads the CSV and finds the real header row, skipping a preamble that Zapier's CSV import cannot handle, then returns the clean CSV with a has-data flag. Long question-text headers are mapped to short CRM fields, and empty reports stop cleanly.
    Error handling
    The has-data flag and the found filters prevent errors. Autoreplay is off.
    Usage
    38 tasks (3 Oct – 21 Oct), 35 (3 Sep – 3 Oct). 56 runs (10 successful, 46 filtered: empty reports or unmatched rows), 0 errors (22 Sep – 21 Oct).
    Status
    On, version 3, last edited 23 Apr 2026
02

Engagements and sessions, mirrored

A CRM button creates the engagement on the coaching platform and writes its ID back; from then on, status changes flow back to the CRM by that ID.

  • Instant4 steps

    Create the engagement from a CRM button and write its ID back

    • monday.com
    • Simply.Coach
    Trigger
    monday.com – Specific Column Value Changed, the add-to-platform status on the coaching tracker
    What it does
    A status button in the CRM creates the coaching engagement on the platform (coachee, coach, sessions planned, service, start date, scheduling and reminder settings) and stores the platform's engagement ID back on the monday record.
    The tricky part
    That ID round trip is the key the live mirror Zaps match on.
    Error handling
    None.
    Usage
    0. No runs in 60 days.
    Status
    Off, version 3, last edited 21 Aug 2026
  • Polling4 steps

    Active engagements mirrored to the CRM

    • Simply.Coach
    • Formatter
    • monday.com
    Trigger
    Simply.Coach – Updated Engagement, status active, polling every 2 minutes
    What it does
    A lookup table translates the platform's status into the CRM's labels (active to In Progress, completed to Completed, cancelled to Cancelled, otherwise New), finds the record by engagement ID and updates it.
    The tricky part
    It relies on the ID that the creation Zap wrote to monday.
    Error handling
    None. 1 errored run in 30 days. Autoreplay is off.
    Usage
    78 tasks (3 Oct – 21 Oct), 138 (3 Sep – 3 Oct). 161 runs (90 successful, 70 safely halted with no matching CRM record), 1 error (22 Sep – 21 Oct).
    Status
    On, version 2, last edited 1 Jul 2026
  • Polling4 steps

    Completed engagements mirrored to the CRM

    • Simply.Coach
    • Formatter
    • monday.com
    Trigger
    Simply.Coach – Updated Engagement, status completed
    What it does
    The companion Zap for completed engagements, setting the status to Completed.
    The tricky part
    The trigger can filter on one status only, so there is one Zap per status.
    Error handling
    None. Autoreplay is off.
    Usage
    4 tasks (3 Oct – 21 Oct), 38 (3 Sep – 3 Oct). 2 runs, 0 errors (22 Sep – 21 Oct).
    Status
    On, version 1, last edited 1 Jul 2026
  • Polling9 steps

    Session changes routed to the debrief status

    • Simply.Coach
    • monday.com
    • Paths
    Trigger
    Simply.Coach – Updated Session
    What it does
    The engagement is found by ID, then Paths route three ways: a scheduled session sets the debrief status to Scheduled, a completed one to Completed, a cancelled one to Cancelled.
    The tricky part
    Three-way routing with Paths, keyed on the same engagement ID.
    Error handling
    None. Autoreplay is off.
    Usage
    72 tasks (3 Oct – 21 Oct), 88 (3 Sep – 3 Oct). 126 runs (78 successful, 48 safely halted with no matching engagement), 0 errors (22 Sep – 21 Oct).
    Status
    On, version 1, last edited 8 May 2026
03

Invoices and payments

Draft Xero invoices raised from the CRM, and paid invoices marked back on the engagement or on every attendee they cover.

  • Instant14 steps

    Draft Xero invoice from a CRM billing button

    • monday.com
    • Filter
    • Formatter
    • Paths
    • Xero
    Trigger
    monday.com – Specific Column Value Changed, billing status set to generate an invoice
    What it does
    The Zap walks the connected boards to assemble the contact's organisation, location, phone, email and address, creates a draft Xero invoice set up one way for Australian clients and another for overseas ones, and writes the invoice number back with the billing status.
    The tricky part
    Reading monday's connected-board columns through the Line Itemizer, routing by country, and writing back the invoice number the paid-invoice Zaps later match on.
    Error handling
    None.
    Usage
    0.
    Status
    Off, version 8 (Nov 2024) plus a draft, last edited 13 Feb 2025
  • Polling5 steps

    Paid program invoice marks every attendee on it

    • Xero
    • Filter
    • monday.com
    • Looping
    Trigger
    Xero – Updated Sales Invoice, status Paid
    What it does
    If the invoice's line account code, description or reference shows it is for the public leadership program, every attendee linked to that invoice number is found and marked Invoice Paid.
    The tricky part
    One invoice can cover several attendees when a company books several seats, so the search returns every match and the Zap loops through them.
    Error handling
    None. 2 errored runs in 30 days. Autoreplay is off.
    Usage
    0 tasks in both periods. 14 runs (12 filtered as non-program invoices, 2 errored) (22 Sep – 21 Oct).
    Status
    On, version 1 plus an unpublished draft, last edited 19 Jun 2026
  • Polling4 steps

    Paid invoice for a key corporate account

    • Xero
    • Filter
    • monday.com
    Trigger
    Xero – Updated Sales Invoice, status Paid
    What it does
    Paid invoices for one corporate client update the billing status on the coaching tracker, matched by Xero invoice number.
    The tricky part
    The filter matches three variants of the client's contact name.
    Error handling
    None. Autoreplay is off.
    Usage
    0 tasks (3 Oct – 21 Oct), 4 (3 Sep – 3 Oct). 14 runs (all filtered as other clients' invoices), 0 errors (22 Sep – 21 Oct).
    Status
    On, version 1, last edited 8 May 2026
04

Mailing list, community and enquiries

CRM contacts and program cohorts into Mailchimp with opt-outs respected, new community members upserted into the CRM, and website enquiries captured.

  • Scheduled7 steps

    Weekly CRM customers to Mailchimp, opt-outs respected

    • Schedule
    • monday.com
    • Looping
    • AI by Zapier
    • Mailchimp
    • Filter
    Trigger
    Schedule – weekly, Sunday 00:00
    What it does
    Every customer on the CRM's contacts board is looped over. An AI step (OpenAI gpt-4o-mini) extracts a clean email address from monday's email-column data and splits first and last name; the subscriber is looked up in Mailchimp, and only added or updated if they have not unsubscribed or been cleaned.
    The tricky part
    An AI step normalising messy CRM data, and a check-before-write filter so the list never re-adds an opt-out.
    Error handling
    The opt-out filter; no error path. 8 errored runs in 30 days, 2 in each weekly run (likely a couple of contacts with unusable emails). Autoreplay is off.
    Usage
    216 tasks (3 Oct – 21 Oct), 288 (3 Sep – 3 Oct). 100 runs (84 successful, 8 filtered as unsubscribed or cleaned, 8 errored) (22 Sep – 21 Oct).
    Status
    On, version 2, last edited 9 Apr 2026
  • Instant3 each steps2 Zaps

    Confirmed cohort rosters to Mailchimp

    • monday.com
    • Filter
    • Mailchimp
    Trigger
    monday.com – Specific Column Value Changed on a cohort board (an invite-status or welcome-email column)
    What it does
    When participants are confirmed on a program's roster, they are added to the mailing list with cohort, country, year, alumni and program tags for follow-up campaigns.
    The tricky part
    Tied to monday's group-based roster workflow; one of the two uses OR logic across a group and a status.
    Error handling
    None.
    Usage
    0 in both periods. No runs in 60 days (they are cohort-specific).
    Status
    Both on, version 1, last edited 3 Jul 2026
  • 7 steps

    New community member upserted into the CRM

    • Mighty Networks
    • monday.com
    • Paths
    Trigger
    Mighty Networks – Member Activity, member joined
    What it does
    The new member is looked up by email; if found, the contact is tagged as a community member with the joined date and source, and if not, a contact is created with the same details.
    The tricky part
    A find, then update-or-create, done with Paths.
    Error handling
    None. Autoreplay is off.
    Usage
    0 tasks (3 Oct – 21 Oct), 2 (3 Sep – 3 Oct). 1 run, 0 errors (22 Sep – 21 Oct).
    Status
    On, version 2 plus an unpublished draft, last edited 18 Oct 2025
  • 2 steps

    Website enquiries into the CRM

    • WPForms
    • monday.com
    Trigger
    WPForms – New Form Entry on the website's enquiry form
    What it does
    Each website enquiry becomes an item on the enquiries board.
    The tricky part
    Simple lead capture.
    Error handling
    None.
    Usage
    0 tasks in both periods. No runs in the last 30 days (last run 20 Sep 2026).
    Status
    On, version 1 plus an unpublished draft, last edited 9 Sep 2024

What the counters show

  • 855 run entries in Zap history from 22 Sep to 21 Oct 2026, all of them from the Zaps on this page. The daily report syncs account for 437 of them.

  • Eleven errored runs in that window: eight in the weekly Mailchimp sync (two each week), two on paid program invoices and one in the engagement mirror. Everything else succeeded, was filtered, or halted safely because there was no matching record.

  • 1,037 tasks in the previous period (3 Sep – 3 Oct), against a 1,500-task monthly allowance. The session status sync is the busiest Zap: 286 tasks so far this period.

  • The Zaps that create engagements and draft invoices from CRM buttons are built and switched off. The IDs and invoice numbers they wrote are what the live mirror and payment Zaps match on.

What we would change

  • Autoreplay is off and most Zaps have no error path, so an errored run stays errored. The weekly Mailchimp sync fails on two contacts every week; we would add an error path that flags the unusable address on the CRM record, and switch autoreplay on.

  • The daily report syncs find engagements by name. Renaming an engagement breaks the match, and because unmatched rows are filtered rather than errored, the miss is silent. We would match on the engagement ID the platform already returns.

  • The status mirror needs one Zap per status because the platform's trigger filters on a single status, so a new status means a new Zap.

  • With the creation and invoicing buttons switched off, new engagements and invoices have to reach the CRM some other way before the live Zaps can match them.

  • Two earlier per-response questionnaire Zaps are still switched on with no runs in 60 days, and one path in the session Zap is labelled as a stop while its condition is 'completed'. We would turn the old Zaps off and rename the path.

Twelve Zaps are not described: two per-response questionnaire syncs superseded by the daily report (still on, no runs in 60 days); an email-open tracker whose lookup is set to a fixed address rather than mapped from the trigger, so it is not a working build; an earlier version of the engagement-creation Zap; the original daily session and questionnaire syncs that the rebuilt ones replaced, and an evaluation-scores import of the same design (all off); two prototypes (sending a Xero invoice by email, and reading a PDF attachment with AI), neither ever published; and three untitled scratch Zaps.

Built with

  • Zapier
  • monday.com
  • Simply.Coach
  • Xero
  • Mailchimp
  • Mighty Networks
  • WPForms
  • Code by Zapier
  • AI by Zapier

Page copy drafted with AI assistance. Skofi is accountable for it. Editorial policy

Start here

Have a Zapier account like this one?

We start by reading what is already there: every Zap, its counters and its failures. A short call is the fastest way to find out what yours needs.

Book a 15-minute callsaveez@skofi.tech

What happens on the call

  • 15 minutes, no deck
  • We map the process on the call
  • A written scope, or an honest no
Book a call