You might have come across this before, or you're checking out this post because of the following error message:
"This XYZ step didn’t run because it relied on an earlier step or filter that didn’t work."
Here’s what it looks like:
![](https://uploads-us-west-2.insided.com/zapier-ca/attachment/0d411ca5-988f-41ab-b85b-7e52f1e5f636.png)
Why is this happening?
Well, an action step often depends on a field from a previous step (see also field mapping). If that previous step fails, the dependent action step gets skipped because it needed information from the failed step. This is usually helpful, as it prevents errors.
If this happened due to a Filter by Zapier step, it means the conditions weren’t met. You can find more information about Filter by Zapier here.
But what if I want to continue anyway?
There’s a trick for that, and I’m going to show you how.
First, note that this is generally helpful if a specific action step is also mapped with fields from other steps. In the example below, I use a GET request to get a formatted address from the Google Maps API, and then a Formatter > Number > Math Operation step to calculate a number. This data goes into a Zapier Table.
How to resolve it?
The obvious answer is to use the Formatter > Text > Default Value step. However, if the key is never sent, that step will be skipped too. Instead, we’ll use some AI and a Run Python in Code by Zapier step.
Here’s a summary of the step to take:
- Add a Run Python in Code by Zapier step
- Use the Generate with AI button, add the prompt
- Map the output of this step in the action step
Add a Code step
![](https://uploads-us-west-2.insided.com/zapier-ca/attachment/1b7293c5-8e49-4435-82ce-e8ba4f23773a.png)
As an example, I have added 2 keys: “address” and “key”. You can do this for as many fields as you’d like to return a blank value for.
Add a prompt
![](https://uploads-us-west-2.insided.com/zapier-ca/attachment/ffbb4cf7-7f3a-4771-bc58-d556e8164ec5.png)
The code it generated for me:
# Check if the 'address' key exists in the input_data dictionary
if "address" in input_data:
# If it exists, assign the value to the 'address' variable
address = input_data "address"]
else:
# If it doesn't exist, assign None to the 'address' variable
address = None
# Check if the 'key' key exists in the input_data dictionary
if "key" in input_data:
# If it exists, assign the value to the 'key' variable
key = input_datae"key"]
else:
# If it doesn't exist, assign None to the 'key' variable
key = None
# Create a dictionary with 'address' and 'key' as keys and their respective values
output = {"address": address, "key": key}
Make sure to test the step!
And then...
Mapping the output
![](https://uploads-us-west-2.insided.com/zapier-ca/attachment/72cf647b-1fbc-4b29-9a74-bd5411c4e885.png)
Finally, we can map the output from the Code by Zapier step. Even if the key-value pair doesn’t exist, a blank or null value will be returned, allowing the dependent action step to continue. Here’s a screenshot of how it looks in a Zap run:
![](https://uploads-us-west-2.insided.com/zapier-ca/attachment/d0052a07-f9bb-4c5b-9a4d-1c0313d2d9eb.png)
There we go! Using a nifty workaround, we can work around the dependancy limitation and still get an action step to run as intended.
Final tip: adjust the AI prompt to return a fallback value like “n/a”, instead of a blank/null value, in case you still want to send some kind of data. This can be helpful in case a field in a dependant action step is set to required. An example of this is when a Last Name is required, but you only have a first name.
I hope this helps!
All the best,
~ Leo