Hi all,
I am new to Make.com and trying to automate some end-of-month accounting reconciliation procedures for my company. I am stuck at this last step of posting one line of a journal entry that is generated by KatanaMRP and to sync that data to one row in Google Sheets. I have been using Gemini to help me build this and created this summary below with Gemini to help me solve this problem. Thanks in advance for any help I receive!
Objective
We are syncing order data from ShipStation to Google Sheets (Audit Log) while pulling related financial values from QuickBooks Online (QBO).
Specifically, we want to populate Column F with a QBO Journal Entry amount (TotalAmt) and calculate a COGS variance in Column G ([ShipStation/Katana Cost] - [QBO TotalAmt]).
The Architecture & The Core Problem
The workflow begins with a ShipStation trigger/search, passes data through QuickBooks, and attempts to log a single row per order in Google Sheets.
However, because of how QuickBooks stores journal entries/lines, the QBO module outputs a massive volume of duplicate data packets (58 identical bundles for a single transaction). This bundle explosion causes downstream Google Sheets modules to execute 58 distinct times, flooding the spreadsheet with identical rows.
What We Tried & Why It Failed
Attempt 1: The Basic Array Aggregator Strategy
-
Setup: We placed an Array Aggregator after the QBO module to condense the 58 bundles back into 1 single array, using the formula
{{get(map(19.array; "TotalAmt"); 1)}}to extract the amount into Google Sheets. -
Why it failed: The aggregator duplicated anyway. Because the upstream QBO structure acted as independent trigger bundles rather than a single cycle loop, the aggregator executed 58 separate times (creating 58 single-item arrays) instead of aggregating 58 items into 1 array.
Attempt 2: Search Rows $\rightarrow$ Router $\rightarrow$ Update vs. Add (The Infinite Loop)
-
Setup: We completely removed the aggregator. Instead, we used a Search Rows module to look for the
Order ID. We added a router with two conditional paths:-
If
Row number EXISTS, use Update a Row to overwrite the same line 58 times. -
If
Row number DOES NOT EXIST, use Add a Row to create it.
-
-
Why it failed: This triggered a severe race condition and infinite loop that ran up over 162 operations instantly. Because Make processes these multi-bundles sequentially at lightning speed, Bundle 1 didn’t find the row and triggered “Add a Row”. But before Google Sheets could physically commit that row to the database and update its index, Bundles 2, 3, and 4 had already executed their “Search Rows” module. They also found nothing, triggered “Add a Row” again, creating an exponential loop.
Current Status / Help Needed
We need a clean, operation-efficient method to enforce a strict “one bundle only” pass after the QuickBooks module fires, or a bulletproof way to pause execution so the search-before-write mechanic doesn’t experience a race condition.
Integration Google Sheets.blueprint.json (102.3 KB)




