Code steps allow Zaps to run small snippets of Python or JavaScript. This tutorial is for Python code steps, but you can also learn how to use JavaScript code in your Zaps.
Code steps can be used as both triggers and actions.

Python is an advanced programming language.
- If you're not familiar with Python, you should ask a developer for help.
- Plans with Premier Support have access to basic support for Code by Zapier steps. Premier Support won't write or debug your code, but can assist with how Code by Zapier processes code.
- For plans without Premier Support or for additional help beyond Premier Support, visit the Zapier Community's Code resources.
1. Add a code trigger
- In the Zap editor, click the Trigger step.
- Search for and select Code by Zapier.
- Click the Event dropdown menu and select Run Python.
- Click Continue.
2. Set up your code step
- In the Code field, enter your Python code.
- Click Continue.
3. Test your code trigger
- Click Test trigger.
If your code is valid, the step will show it was successful and display the data. Once the trigger is set up, you can continue to add your action step.
1. Add a code action
The Code action step allows you to write code that interacts with data coming from the trigger or a previous action step.
- In the Zap editor, click the + icon to add a new step.
- Search for and select Code by Zapier.
- Click the Event dropdown menu and select Run Python.
- Click Continue.
2. Set up your code action
- In the Code field, enter your Python code.
- You can also define data fields to be provided to the code as strings with the Input Data fields. Provide a key and a value for each field.
- Click Continue.
3. Test your code action
- Click Test step.
- If your code is valid, the step will show it was successful and display the data sent.
The Python environment
The environment is vanilla Python 3.7.2 (2.7.10 for Zaps created before January 24, 2019). Your script is sandboxed and can only run for a limited amount of time and within a limited amount of memory—the exact limits depend on your Zapier plan.

Dates and times in Code actions use the UTC timezone, even if a different one is set for the account or the Zap.
Input data for Code steps
Access data from previous steps within your code steps using the inputData
dictionary. The amount of data that may feed into your script may be large or dynamic. To address this, you must define a inputData
mapping by providing a key and value in Zapier's GUI.
Mapping fields from previous Zap steps in the Code field is not supported. You must use the inputData
dictionary.
Create a key/value pair in the Input Data field for each mapped field you want to use in your code.
In Python, access the values within the inputData
dictionary using the input_data['keyName']
notation. Key names are case-sensitive and must be an exact match for successful data retrieval.

In the example below, the key name is "name" and the value is supplied by the Name field that's mapped from a previous step. In this example, the value supplied by the mapped Name field is "Erin".

It's not possible to map inputData
in Code by Zapier triggers.
Output data from code steps
Code steps return a single output
variable, which is a dictionary or list of dictionaries that will be the result of this step.
- You can explicitly return early.
- The output must be JSON serializable.
- Setting the output to a list of dictionaries will run the subsequent steps multiple times, once for each item in the list.
If you use Code by Zapier as the Zap's trigger and an empty array is returned, nothing will happen. The behavior will be similar to a polling trigger that did not get any results in the HTTP response. This functionality is exclusive to triggers.
Utilities in Code steps
There are a few utilities available in Code steps:
-
requests
: an easy-to-use HTTP client. -
StoreClient
: a built-in utility for storing and retrieving data between Zap runs. -
print
: this utility allows you to debug your function. You'll need to test your Zap to see the values. The logs are returned in aruntime_meta
added automatically to theoutput
. -
BeautifulSoup
: for parsing HTML and XML content.
Testing and debugging Code steps
Running your Zap via the dashboard is the canonical way to confirm the behavior you expect. Your Zap History will have all relevant details around the Code step's input_data
, output
and logs. The test step in the editor can be used for a tighter feedback loop.
Limitations with Code steps
- Code steps include the standard library, the
requests
packages, and theBeautifulSoup
library. You cannot install additional libraries or pip modules directly. - There are different Code rate limits and throttling, depending on what plan you’re on. Your Zap will error if it exceeds these limits.
- If you need to make more than 2 HTTP requests or make authenticated HTTP requests, Zapier recommends creating a custom app on the Zapier platform.
How floats and integers are handled
The Zapier web UI does not distinguish between integers and float values—they are all presented as numbers. For example, if your Python code step returns a value like this:
return {'result': 1.0}
This may appear as 1
, rather than 1.0
, in your Zap history and test results. This is an artifact of the Zapier UI. You can use int(aNumber)
or float(aNumber)
in your Python code step to convert the value to the data type you require.