Search HoldMyTwist

Make Skip vs Resume: what happens to a failed record?

Compare Make Skip and Resume with the same three-record example. Check which records continue, why success can hide a lost record, and how to mark a replacement for review.

Two sorting conveyors discard a cracked gold tile or replace it with a pale tile


Skip (formerly Ignore) removes a failed record from the rest of a Make scenario. Resume supplies replacement output so that record can continue, according to Make's Skip (opens in a new tab) and Resume (opens in a new tab) guidance.

This Make Free practice uses three fictional product records to show the difference. The middle record contains invalid JSON. You will check which values reach the later Tools module, then fix the input and run it again.

Before you start

To get started, you need a Make account. You can create a Make Free account (opens in a new tab) or sign in. Keep the scenario Inactive and use Run once. No email, spreadsheet or other app connection is needed. Each run uses some of your plan's credits.

1. Create three practice records

  1. In Scenarios, click Create scenario. Name it Skip and Resume practice.
  2. Add JSON > Parse JSON. Leave Data structure unset and paste the object below into JSON string.
  3. Save the module and scenario, then click Run once. If Make warns that the output is unused, choose Save anyway or Run anyway for this practice.
  4. Open the JSON result bubble and expand records. Check that it contains three items, with IDs A, B and C.
  5. Add Flow Control > Iterator using the plus after JSON. Map records[] from the first module into Array, then save.
Text to copy

{"records":[{"id":"A","payload":"{\"name\":\"Notebook\"}"},{"id":"B","payload":"not-json"},{"id":"C","payload":"{\"name\":\"Pencil\"}"}]}

Make Parse JSON source with fictional records A, B and C and invalid text in B

Make Parse JSON source with fictional records A, B and C and invalid text in B
Open full-size image

The outer object is valid JSON. B's payload is deliberately invalid text, which the later parser will try to read. The Iterator turns the array into separate bundles, one for each record.

2. Check where the failed record stops

  1. Add a second JSON > Parse JSON after the Iterator. Map the Iterator's payload into JSON string.
  2. Beside Data structure, click Add. Name it Practice product name, click Generate, and use JSON as the content type.
  3. Enter {"name":"Notebook"} in Sample data. Click Generate, then save the structure and module. The generated text field is labelled Name.

Make Parse JSON maps the Iterator payload using the Practice product name data structure

Make Parse JSON maps the Iterator payload using the Practice product name data structure
Open full-size image
  1. Add Tools > Set variable after this parser. Set Variable name to result.
  2. For Variable value, map the Iterator's id, type a colon and a space, then map the second parser's Name. With module numbers 2 and 3, the expression below does that. Replace the numbers if yours differ, and check that the fields appear as coloured tokens.
  3. Save and click Run once. The second parser reports Source is not valid JSON. Open the Tools result bubble: only A: Notebook should have reached it.
Text to copy

{{2.id}}: {{3.name}}

Make Set variable maps the record ID and parsed product name into result

Make Set variable maps the record ID and parsed product name into result
Open full-size image
Before adding a handler, only A reaches the downstream module.

Make Tools output contains only A: Notebook before the invalid record stops the run

Make Tools output contains only A: Notebook before the invalid record stops the run

Before adding a handler, only A reaches the downstream module.

Open full-size image

3. Use Skip to drop the bad record

  1. Close the result panel. Right-click the second JSON module and select Add error handler.
  2. Choose Skip. Save its configuration, then save the scenario.
  3. Click Run once. Open the Tools result bubble and expand each Operation.
  4. Check for two results in Tools: A: Notebook and C: Pencil. B should be absent.
Skip continues with C after omitting B. Two records reach Tools.

Make Skip workflow shows three parser operations and two Tools operations

Make Skip workflow shows three parser operations and two Tools operations

Skip continues with C after omitting B. Two records reach Tools.

Open full-size image

Watch out

A successful run can still have lost a record. Count the downstream results and check their IDs. Use Skip only when dropping that record is acceptable. A replacement value also needs to be safe for every step that follows.

4. Use Resume to supply a marked replacement

  1. In this practice scenario, right-click the Skip handler and select Delete. Keep both JSON modules and the Iterator.
  2. Right-click the second JSON module again, choose Add error handler, then Resume.
  3. In Resume's Name field, enter REVIEW INPUT. Save the handler and scenario.
Resume supplies REVIEW INPUT as the substitute Name.

Make Resume configuration supplies REVIEW INPUT in the Name field

Make Resume configuration supplies REVIEW INPUT in the Name field

Resume supplies REVIEW INPUT as the substitute Name.

Open full-size image
  1. Click Run once and inspect all three Tools operations.
  2. Check for A: Notebook, B: REVIEW INPUT and C: Pencil. The middle result comes from your substitute, not from successfully parsing B.
B reaches Tools with the marked substitute, so it still needs review.

Make Tools result for record B is REVIEW INPUT after Resume

Make Tools result for record B is REVIEW INPUT after Resume

B reaches Tools with the marked substitute, so it still needs review.

Open full-size image

Resume replaces the failed module's output. It does not retry that action or repair the original text. Here, REVIEW INPUT makes the unresolved record visible. Do not feed a placeholder into a real payment, message or record-writing step unless that step can safely handle it.

5. Fix the input and run again

  1. Run the unchanged example once more. B should still return REVIEW INPUT.
  2. Open the first JSON module. Replace B's not-json payload with {"name":"Eraser"}, keeping it escaped as a string inside the outer object. The complete corrected input is below.
  3. Save both the module and scenario, then click Run once. Check that B now returns B: Eraser.
  4. Keep the practice Inactive. A new run processes the source records again; the handler does not remember which ones you previously reviewed.
Text to copy

{"records":[{"id":"A","payload":"{\"name\":\"Notebook\"}"},{"id":"B","payload":"{\"name\":\"Eraser\"}"},{"id":"C","payload":"{\"name\":\"Pencil\"}"}]}

After correcting the source, B reaches Tools as B: Eraser.

Make Tools result for corrected record B is Eraser

Make Tools result for corrected record B is Eraser

After correcting the source, B reaches Tools as B: Eraser.

Open full-size image

If every record must be processed

Choose an error-handling approach that retains the failed work for investigation. Skip is suitable only when omitting that record is acceptable. Resume needs a replacement value that later steps can safely handle, plus a way to review the unresolved record. If the problem is a predictable blank field, consider preventing it with a filter or ifempty before the action. Make's missing-data guidance (opens in a new tab) explains those options.

This practice only sets a variable. Before adding a module that creates or updates records, decide how repeat runs will avoid duplicates. See the separate Data Store duplicate-record guide and check Make Free's limits before scheduling a larger workflow.

To compare Skip and Resume with the same fictional records, start with Make Free (opens in a new tab). Run the practice manually and inspect the failed record before connecting an action that sends or writes anything.

Sources: Make's Skip, Resume and missing-data guidance linked above. Screenshots show fictional practice data in Make Free.

Share this guide