Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Contact Us
  • Home
  • Built-in tools
  • Webhooks & Code
  • Code

Use JavaScript code in Zaps

Written by Owner

Updated at August 20th, 2025

Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Tables
    Work with tables Manage tables Create tables Troubleshoot Zapier Tables
  • Product updates
    Product updates: January 2023 Product updates: March 2023 Product updates: February 2023 Product updates: April 2023 Product updates: May 2023 Product updates: June 2023 Product updates: July 2023 Product updates: August 2023 Product updates: September 2023 Product updates: October 2023 Product updates: November 2023 Product updates: December 2023 Product updates: January 2024 Product updates: February 2024 Product updates: March 2024 Product updates: April 2024 Product updates: May 2024 Product updates: June 2024 Product updates: July 2024 Product updates: August 2024 Product updates: September 2024 Product updates: October 2024 Product updates: November 2024 Product updates: December 2024 Product updates: January 2025 Product updates: February 2025 Product updates: March 2025 Product updates: April 2025 Product updates: May 2025 Product updates: June 2025 Product updates: July 2025 Product updates: August 2025
  • Zaps
    Zap basics Zap history Troubleshoot Zaps Manage your Zaps Do more with Zaps
  • Your Zapier account
    Plans Billing Account profile Notifications Data privacy & security Get help User roles and permissions
  • Interfaces
    Troubleshoot Zapier Interfaces Create an interface Use interface components Manage interfaces
  • Canvas
    Create a canvas Collaborate on a canvas
  • Chatbots
    Add logic and knowledge to chatbots Troubleshoot chatbots Create chatbots Manage chatbots
  • Getting started
    Intro to Zapier Set up your Zapier account Use case templates
  • Agents
    Create agents Manage agents Troubleshoot agents
  • MCP
    Set up MCP
  • Built-in tools
    Filter & Paths Formatter Schedule & Delay Email, IMAP, SMTP, & Email Parser Webhooks & Code Storage, Digest, & RSS Sub-Zap & Looping Other built-in tools Custom Actions & API Requests Functions AI by Zapier & AI actions Copilot Human in the Loop
  • Lead Router
    Create routers
  • Apps
    Connect and manage your app connections AI apps on Zapier Apps on Zapier
+ More

Table of Contents

1. Add a code trigger 2. Set up your code step 3. Test your code trigger 1. Add a code action 2. Set up your code action 3. Test your code action The JavaScript environment Input data for Code steps Output data from Code steps Utilities in Code steps Testing and debugging Code steps Limitations with Code steps Troubleshooting errors

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

Code steps can be used as both triggers and actions.

miscEye icon Note

JavaScript is an advanced programming language.

  • If you're not familiar with JavaScript, you should ask a developer for help.
  • If you require assistance with how Code by Zapier processes code (not writing or debugging), contact Support based on your plan.
  • For additional resources, visit the Zapier Community's Code resources.
Add a code trigger step Add a code action step

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 Javascript.
  • Click Continue.

2. Set up your code step

  • In the Code field, enter your JavaScript 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 will interact 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 Javascript.
  • Click Continue.

2. Set up your code action

  • In the Code field, enter your JavaScript 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.
ratingStar icon Tip

You can generate code steps using AI.

The JavaScript environment

The environment running is Node.js 18. 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 the plan you are using.

miscEye icon Note
  • AWS does not prevent deprecated Node run times from running.
  • 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

You can access data from previous steps via the inputData dictionary variable in your code step. The amount of data that may feed into your script may be large or dynamic. To address this, you must define an inputData mapping by providing a key and value in Zapier's GUI.

You can't map fields from previous Zap steps to the Code field. You must use the Input Data dictionary.

You can create a key/value pair in the Input Data field for each mapped field you want to use in your code.

In Javascript, you can access the inputData dictionary variable values by using the inputData.keyName or inputData["keyName"] notation. Key names are case-sensitive and must be an exact match when referenced.

In the example below, the key name is "defineName" 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 "Jane".

The field `defineName` defined on the `inputData` dictionary, based on trigger data.

miscEye icon Note

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 an object or array of objects that will be the result of this step. You can explicitly return early.

If the output is an array of objects, subsequent steps will run multiple times, once for each object in the array.

[
    {
        "product_id": 123,
        "name": "world",
        "price": 5.50
    },
    {
        "product_id": 234,
        "name": "planet",
        "price": 11.00
    }
]
actionEdit icon Example

In this example, each object in the array is returned separately. Subsequent actions will run once for each object.
Example of first object returned

Example of second object returned

To return the whole array as line items instead, you can add line_items as the parent key for the output.

{
    "first_name": "Zap",
    "last_name": "Zaplar",
    "invoice_id": 123456,
    "total_price": 55.50,
    "line_items" : [
        {
            "product_id": 123,
            "name": "world",
            "price": 5.50
        },
        {
                "product_id": 234,
                "name": "planet",
                "price": 11.00
        }
    ]
};
actionEdit icon Example

In this example, the array is returned as a set of line items. Any subsequent actions will only run once.
Example of line items returned

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 you have access to in Code steps:

  • (Optional) callback(err, output): a callback if you need to do asynchronous work—whatever you set to the output data variable is ignored since it's provided directly here. The Zap will inspect the code and make a best guess as to whether it's using a callback or not.
miscEye icon Note

Invoking callback(err, output) tells Zapier that your task is done executing. If you have multiple asynchronous calls, each invoking callback(err, output) with their desired responses, only the first one to execute will count. Subsequent invocations to callback(err, output) will be picked up by the next execution of your Zap, but will not affect that task's execution, other than side effects like console.log() calls.

  • fetch: an easy to use HTTP client.
  • console.log: this utility allows you to debug your function. You'll need to test your Zap to see the values. The logs are returned in a runtime_meta added automatically to the output.
  • StoreClient : a built-in utility for storing and retrieving data between Zap runs.

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 inputData, output and logs. The test step in the editor can be used for a tighter feedback loop.

Limitations with Code steps

  • The environment in which your Code steps run (AWS Lambda) has an I/O limit of 6 MB. The total size of the code and the data processed by the Code step cannot exceed that. If you're hitting this error, try to limit the amount of data returned from your function. For instance, don't return an entire JSON structure, just the keys you need.
  • You cannot require external libraries, or install or import libraries commonly referred to as "npm modules". Only the standard node.js library and the fetch package are available in the Code by Zapier app. fetch is already included in the namespace.
  • There are different Code rate limits and throttling, depending on what Zapier 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.

Troubleshooting errors

Some common error messages you might encounter include:

  • Scripting payload too large: this means the total amount of data returned from your function is too large. See Limitations with code steps.
  • NoneType object does not support item assignment: this error can happen when you redefine some of the important variables in the function, such as callback. Lambda expects callback to be there to complete an async function, so it'll produce errors if it's redefined.
  • Process exited before completing request: this typically happens if your script completes without calling callback. The most common case is if your fetch().then() doesn't have a .catch() for errors. Adding a .catch(callback) will solve this, as the error will be passed as the first argument.
  • SyntaxErrors or other bugs: JavaScript is a fairly complex language and syntax errors can happen for a variety of reasons. We recommend using a linter like JSHint to automatically check your code and highlight specific issues.
miscEye icon Note

If you're using a linter, you can safely ignore warnings about unused variables for inputData, output, fetch or callback. Those are provided for your convenience, but you don't need to use them. If you see something else listed, you may need to debug your code.

Was this article helpful?

Yes
No
Give feedback about this article

Related Articles

  • Generate a Code step using AI (Beta)
  • Code by Zapier rate limits
  • JavaScript code examples in Zaps
  • Python code examples in Zaps
  • Store data from code steps with StoreClient

Copyright 2025 – OBZ-Zapier.

Knowledge Base Software powered by Helpjuice

Expand