# Error handling in workflows / Conditional actions

**URL:** <https://community.glideapps.com/t/error-handling-in-workflows-conditional-actions/86831>\
**Category:** Ask for Help\
**Created:** [April 7, 2026, 6:29pm UTC](https://community.glideapps.com/t/error-handling-in-workflows-conditional-actions/86831 "2026-04-07T18:29:43Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![HeartwoodTreeCo](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/heartwoodtreeco/32/8150_2.png) [@HeartwoodTreeCo](https://community.glideapps.com/u/HeartwoodTreeCo)\
**Post date:** [April 7, 2026, 6:29pm UTC](https://community.glideapps.com/t/error-handling-in-workflows-conditional-actions/86831/1 "2026-04-07T18:29:43Z")

</div>

This workflow includes a Webhook (Zapier, in this case) that creates an invoice in Quickbooks.  
The API step marks the items that were included in the invoice as “Invoiced”

 ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/0/a/0a3e952121a4c24dd1e2c984da9799b4f5dd18ef.png)

The issue is the Webhook step fails often enough due to a Quickbooks error (roughly once a week) that I need to handle the process better, and NOT run the API step to update the items unless the invoice creation step actually ran successfully.

I’d be able to write to a Glide row from the Zapier action that creates the invoice, for example, right before this Gmail step

 ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/6/6/66baac8a8c32f8693d73917d30e58b8982f2370f.png)

Since I don’t know exactly how long it will take for Zapier to either create the invoice or fail, I don’t want to use a time-based waiting step, and I don’t really understand how to set up wait for condition.

What would be a good way to set this up?

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [April 8, 2026, 1:44am UTC](https://community.glideapps.com/t/error-handling-in-workflows-conditional-actions/86831/2 "2026-04-08T01:44:21Z")

</div>

What I would do (have done in a similar situation):

- Create a Callback table
- Every time your App interaction workflow runs, add a row to the Callback table immediately before the Trigger Webhook step, and capture the RowID
- Include captured the RowID in the webhook to Zapier
- Remove the Call API step
- Create a separate Webhook Triggered workflow that accepts a CallbackID and a Status.
- This workflow should match the CallbackID to a RowID in the Callback table, then execute the Call API step (depending on the received status)
- On the Zapier side, once you know the outcome, send a webhook back to Glide with the CallbackID and status.

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [April 8, 2026, 11:55pm UTC](https://community.glideapps.com/t/error-handling-in-workflows-conditional-actions/86831/3 "2026-04-08T23:55:16Z")

</div>

![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/4/b/4b544e1cacf464fba9337cc1eda5225a576f3708.jpeg)

Here’s a visualized flow of Darren’s idea.
