What you need
- The scenario with the Google Sheets → Watch New Rows trigger
- Edit access to the sheet
- A test row you can add and delete
How the trigger works (read this first)
Watch New Rows is a polling trigger: Google doesn't notify Make. Make checks the sheet on the scenario's schedule (e.g. every 15 minutes) and returns new rows, up to the Limit you set.
Make doesn't document how it remembers its place. In practice it behaves like a bookmark on row position, returning rows below the last one it processed, which fits Make's blank-row warning (step 2). It watches positions, not content, and most problems follow from that.
Step 1: Check the spreadsheet, tab and header row
- Is the module pointing at the right spreadsheet (not an old copy) and the right Sheet Name (tab)? Re-linking a Google Form, for example, often creates a new tab such as "Form Responses 2".
- Table contains headers: if Yes, the header row isn't returned as data, and the fields are named after the headers.
- Row with headers: if your headers aren't in row 1, enter their range here, e.g.
A3:F3. - The connected Google account must be able to open the file. A 403 or 404 here is an access problem, not a trigger problem: see Make.com Google connection errors.
Step 2: Remove blank rows
Make's documentation for Watch New Rows says: if a sheet contains a blank row, Make doesn't process the rows after it. One empty row in the middle of the data is enough to make every new row below it invisible.
Delete blank rows between the header and the data, and between data rows. Ask people who type into the sheet not to leave gaps.
Step 3: Reset "Choose where to start"
Right-click the trigger and click Choose where to start. The options vary by app. Make's help lists the typical ones: the current moment (From now on), a specific date, a specific record, or the first record (All). Your choice only applies to the first run after you save. Later runs continue from wherever the previous run stopped.
If the bookmark is past your new rows (e.g. after deleted rows were reused), the trigger skips them. Pick a start point just before the first unprocessed row, save, and click Run once.
Step 4: Inserting, sorting and deleting rows
Because the trigger follows row positions:
- Inserting a row above the bookmark: that row is never picked up, and the rows below move down, so one of them can be processed twice.
- Sorting the sheet causes the same problem on a larger scale.
- Deleting rows: new rows can land on row numbers the trigger already counts as done.
Fix: treat the watched tab as an append-only log and sort on another tab, e.g. =SORT(Data!A2:F). If duplicates would hurt, store each processed row's unique ID in a data store and check it first.
Step 5: Rows added by formulas, forms and people
- Formulas copied far down the sheet, or an
ARRAYFORMULAthat fills the whole column, can make rows look used before real data arrives. If the trigger returns bundles that contain only formula output, keep calculated columns on a separate tab, or only calculate where data exists, e.g.=IF(A2="","",…)(some locales use;instead of,). Then add a filter after the trigger: [key column] → Exists. - Rows added by other tools are fine if they're appended at the bottom, as Google Forms does.
- Rows typed by hand can be picked up half-finished. Watch New Rows sees each row only once, so a "Ready" filter would skip that row for good. For hand-typed sheets, use Search Rows on a schedule with a Status column, as in the Gmail-on-new-row guide. If Search Rows then returns nothing, see Search Rows returns nothing.
Step 6: The schedule and the limit
- With a 15-minute schedule, a new row can take up to 15 minutes to show up. That's expected.
- Limit caps rows per run: 50 new rows with a limit of 2 take many runs.
- Each check is one operation (one credit), even when nothing is new.
- Check that the scenario is on. A scenario switched off after errors (see Errors before deactivation) picks up nothing. See why a Make scenario stopped running.
Step 7: When you need something instant
The Google Sheets Watch Changes module is instant, but it doesn't solve this. Make's docs say it only reacts to changes a person makes in Google Sheets, not to script or API edits, and it doesn't watch for newly added rows.
For rows that people add or edit, an installable Apps Script trigger can send the row to a Make custom webhook:
// Installable trigger: Extensions → Apps Script → Triggers → Add trigger
// → function sendRowToMake, event source "From spreadsheet", event type "On edit".
// Store the Make webhook URL in Script Properties as MAKE_WEBHOOK_URL.
function sendRowToMake(e) {
const sheet = e.range.getSheet();
if (sheet.getName() !== 'Data' || e.range.getRow() === 1) return;
const row = sheet.getRange(e.range.getRow(), 1, 1, sheet.getLastColumn()).getValues()[0];
const url = PropertiesService.getScriptProperties().getProperty('MAKE_WEBHOOK_URL');
UrlFetchApp.fetch(url, {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify({ row: e.range.getRow(), values: row })
});
}
Two limits: it fires on every edit, so filter in Make (e.g. only when "Ready" is TRUE). And Google's docs say script executions and API requests don't fire triggers, so rows written by other apps won't fire it. See receiving webhook data in Make.
If the rows come from Google Forms, start from the form instead: Make's Google Forms app has a Watch Responses trigger, and Apps Script has a separate "On form submit" trigger.
Common errors and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| New rows never picked up | Blank row above them, wrong tab, or bookmark past them | Delete blank rows; check the tab; reset "Choose where to start" |
| Some rows skipped | Rows inserted above the bookmark, or the sheet was sorted | Append only; sort on another tab |
| Same row processed twice | Inserted or deleted rows shifted positions | Append-only tab + ID check |
| Empty bundles | Formulas filling the column | Limit formulas to filled rows; filter "Exists" |
| Half-filled rows processed | Picked up while someone was typing | Search Rows + Status column for hand-typed sheets |
| Nothing happens at all | Scenario switched off | Fix the error, switch it back on |