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:
- Event A happens in our app and is `POST`ed to the customer’s Zap
- Event B happens in our app <5s later and is `POST`ed to the customer’s Zap
- Event B is processed by Zapier
- 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!
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
Anybody else here implemented a solution for guaranteed ordered messaging with hook triggers?
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?
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!