Question

Trigger order of execution

  • 10 May 2021
  • 4 replies
  • 380 views

Our integration uses rest hooks on our end to support triggers in Zapier for our customers, e.g, when X event happens, we `POST` some data to Zapier. Something we see happen rarely is that two events will happen within quick succession, we’ll `POST` both events in the order that they happened, but they then might be executed in a different order. Here’s an example scenario:

  1. Event A happens in our app and is `POST`ed to the customer’s Zap
  2. Event B happens in our app <5s later and is `POST`ed to the customer’s Zap
  3. Event B is processed by Zapier
  4. Event A is processed by Zapier

These events being processed in a non-chronological order can lead to old data overriding new data if both events pertain to the same record.

My questions are:

  • Are triggers guaranteed to be processed in the order they are received?
  • If not, is it possible to specify an order of execution for triggers?
  • Failing that, is there a suggested workaround? 

Thanks in advance!


This post has been closed for comments. Please create a new post if you need help or have a question about this topic.

4 replies

Userlevel 7
Badge +12

I believe your best bet would be to try adding a delay after queue step https://zapier.com/help/create/customize/add-delays-to-zaps 

Userlevel 7
Badge +9

@cinnes  There’s no guarantee of in-order processing. Zapier has a ton of hook endpoint processors and queues and at any moment one may handle a message faster than another. Thinking through work-arounds… the only thing springing to mind is implementing an ACK.  Your Zapier trigger handler can positively send a message receipt to your server, and your messaging system could queue messages until the prior one had been acknowledged.  Not a quick and easy fix, I recognize.

Anybody else here implemented a solution for guaranteed ordered messaging with hook triggers?

 

@GetUWired First thing that popped into my head too. But with Delay, every user of the the integration would have to know to do that, and set up that delay for each Zap. And I’m not sure that would address the issue - I think it would still process the messages out of order, just slower:grinning:

Userlevel 1

I have this issue too. Use case: Parent pickup at our day camp. We have QR codes on cars. When the car enters the property we scan them (using Codereadr) which sends the data into a Zapier web hook which then does some stuff in our CRM and Airtable. If the person scanning cars scans them “too quickly” Zapier processes them out of order which messes things up because the cars enter in order and the campers are told what spot to meet the car at, again in order.  Adding a delay in the zap simply delayed the next step, it doesn’t help the out of order execution. Any ideas?

Userlevel 7
Badge +2

Hey all! If this happens with a single trigger (instead of relying on separate triggers from separate zaps), you could have a Webhook at the end of the zap push to a catch hook trigger zap to start the second process.

It might help for certain instances? But if you have multiple triggers then that gets super difficult to accomplish short of using a database check, like say Airtable to check for the first zap having completed and then the second zap checks with the Airtable document, and if it's not shown as completed, you have it push to a catch hook that essentially does a delay and then try again. A circular loop of sorts that starts with a delay and it'll keep trying and push through once the system is showing that the first zap has been completed.

It might get a bit complicated, but I've totally used a catch hook trigger + Webhook action at the end to call upon itself and then have it go a different path depending on the data that exists/doesn't using paths.

Either this is helpful or more confusing, but maybe it'll help trigger an idea!