Skip to main content

I have a scenario that updates a Google Sheet via users working through a form.

The Google sheet gets updated as a user progress through a form, such as “step 1, step 2, step 3, step 4, etc”.

This allows me to track when users drop off the form.


I have a new scenario that takes the google sheet data (when it gets updated) and pushes the information to a Slack notification.

 

Since the row is updated multiple times within a short time frame (step 1 → 5), it triggers the scenario 5 times. 

My goal is to only act on the information when the user stops submitting information / the last known state.

 

Originally, I thought if I used “delay after queue”, it would solve my answer, such as

  1. New row created/updated (step 1)
  2. Delay queue = 5 minutes 
  3. Pull row information (step 5)
  4. Push data into Slack

What’s happening right now is this is triggering 5 times (when the row gets updated with step 1, step 2, step 3, step 4, step 5), and it’ll push the step 5 (or whatever stage they’re at at the end of the queue time).

How do I solve/modify this where I only get 1 submission?

Hi ​@Prequel 

First, you need to define how long to “wait” before a “stage” is treated as incomplete, meaning the user stopped filling out the form. (e.g. N minutes)

 

In GSheet columns:

  • You have to track at least an overall timestamp for the last completed stage or separate timestamps for each completed stage.
  • You also need to track whether you already sent a Slack message.

 

Add a Filter as Zap step 2 to check if the Slack message has already been sent.

Help: https://zapier.com/apps/filter/integrations#help

 

You may want to configure separate Zaps to help you control the logic being triggered by specific column values.

 

You can configure additional logic in the Zap to Delay (For) N minutes], then get the current Row data to use to compare and filter.

The idea being after the Delay you check:

  • if a Slack message has been sent > Filter out
    • meaning it was processed by another Zap Run
  • if a Zap Run was triggered after Stage N, then it needs to check if Stage N+1 was completed after the Delay step
    • If yes, then Filter out
    • If no, then send Slack
    • e.g. if Zap Run was triggered from Stage 1, then after the Delay, check if Stage 2 was completed

 


Hi Troy,

 

This makes sense to do a check (new column in the spreadsheet to track the ‘last step sent’, and only does it if the current step is 1 above that.

 

I thought the point of ‘delay for queue’ was so if there was any information updated in between the initial trigger and the next trigger, it will only take the most recent trigger’s information.


@Prequel 

Delay (After Queue) creates a FIFO processing of Zap Runs.

e.g. If 5 Zap Runs are triggered, then Zap Run 1 will process before Zap Run 2, before Zap Run 3, and so on spaced out by the Delay between each Zap Run. (e.g. 1 minute buffer)

 

Info about Delay (After Queue)

https://zapier.com/apps/delay/integrations#help

 

Action: Delay - After Queue

Description: Waits for a set amount of time after the last delay in a given queue.
Used to deal with race conditions and rate-limiting.

 

 


Hi ​@Prequel 👋

Just came across this and wanted to check in. Did Troy's suggestion of adding a Filter and his explanation of how Delay After Queue actions work help you move forward on this?

Let us know if it’s still not running as expected—we’re happy to help further! 🙂