zapier-platform-core
dependency in package.json
. Each major version ties to a specific version of Node.js. You can find the mapping here. We only support the version(s) supported by AWS Lambda.
IMPORTANT CAVEAT: AWS periodically deprecates Node versions as they reach EOL. They announce this on their blog. Similar info and dates are available on github. Well before this date, we’ll have a version of core
that targets the newer Node version.
If you don’t upgrade before the cutoff date, there’s a chance that AWS will throw an error when attempting to run your integration’s code. If that’s the case, we’ll instead run it under the oldest Node version still supported. All that is to say, we may run your code on a newer version of Node.js than you intend if you don’t update your integration’s dependencies periodically.
${var}
and (double) “curlies” {{var}}
used in examples.
${var}
inside functions, and {{var}}
in shorthand requests.${process.env.VAR}
in a shorthand request for a trigger configuration, zapier push
will substitute it with your local environment’s value for VAR
when it builds your integration, so the value set via zapier env:set
will not be used.
If you’re not familiar with template literals, know that const val = "a" + b + "c"
is essentially the same as:
z.request()
throws an error if there’s {{var}}
in the request object.npm
modules are compatible with the CLI Platform:
Since core v10, it’s possible for shorthand requests to parse XML. Use an afterResponse
middleware that sets response.data
to the parsed XML:
id
field. Since v15.6.0, you can customize the primary key by setting primary
to true in outputFields
.
There’s a more in-depth explanation here.
id
field?id
wasn’t present. In order to ensure we don’t guess wrong, we now require that the developers send us an id
field. If your objects have a differently-named unique field, feel free to adapt this snippet and ensure this test passes:
id
field, you can also define one or more outputFields
as primary
. For example:
(userId, slug)
as the unique primary key to deduplicate items when running a polling trigger.
Limitation: The primary
option currently doesn’t support mixing top-level fields with nested fields that use double underscores in their keys. For example, if you set primary: true
on both id
and user__id
, the primary
setting on the user__id
field will be ignored; only id
will be used for deduplication. However, if all the primary
fields are all nested, such as user__id
+ user__name
, it will work as expected.
zapier-platform-core
dependency to a non-deprecated version that uses a newer version of Node.js. Complete the following instructions as soon as possible:
package.json
to depend on a later major version of zapier-platform-core
. There’s a list of all breaking changes (marked with a :exclamation:) in the changelog.version
property in package.json
v18
(or greater) of node locally (node -v
). Use nvm to use a different one if need be.rm -rf node_modules && npm i
to get a fresh copy of everythingzapier test
to ensure your tests still passzapier push
zapier promote YOUR_NEW_VERSION
(from step 2)zapier migrate OLD_VERSION YOUR_NEW_VERSION
)anonymous
mode, the following data is sent to Zapier:
enabled
, the above is sent, plus:
process.platform
)disabled
entirely, either by running zapier analytics --mode disabled
or setting the DISABLE_ZAPIER_ANALYTICS
environment variable to 1
.
We take great care not to collect any information about your filesystem or anything otherwise secret. You can see exactly what’s being collecting at runtime by prefixing any command with DEBUG=zapier:analytics
.
performGet
method is an optional feature in Zapier that allows you to retrieve detailed information about an object. For instance, if your create
action’s perform
method only returns the new object’s ID
, you can use performGet
to fetch the object’s full properties using that ID
.
performGet
is only available for Create
or Search
actions and is most useful when the initial perform
result is limited, and additional information is needed.
The results from perform
are automatically passed to performGet
via bundle.inputData
each time the create
or search
runs, allowing you to retrieve more comprehensive details.
It’s important to note that performGet
is only invoked when the result returned by perform
is not empty.