Named Variables#

There are times when we have a single field in a Trigger that contains info that you want split out into multiple fields, or maybe you only want part of that field to come through to the Action. We use a special function called named variables to help make this possible.

Note: For named variables to work you MUST have control over the data in your Trigger. If your Trigger data is automatically generated and you can't change the formatting, named variables won't work for you in this instance.

Take this example, instead of formatting your data like this in Evernote:

Evernote Note

You’ll want to format it like this:

Evernote Note

With the named variables that have been formatted, you can then select the fields individually in your Zap Editor from the drop-down. Zap fields dropdown

You can use this for any field you like, just make sure that you can add in the names and parentheses in your Trigger data and don't mind that the Trigger service having the names and parentheses formatted in this way. Also, make sure the named variable only has letters, numbers, or underscores. For example, id() will work as a named variable, id#() will not.

↑ Was this documentation useful? Yes No (Suggest Edits)

Modifying Dates & Times#

There are times when you'll want to manipulate dates and times in your Zap, and we provide a couple different means for you to do so.

Time Stamps#

If you want to include the time your Zap runs in your Zap (or use that as an approximation of when the trigger occurs), you can use the following field in your Zap:

{{zap_meta_human_now}}

When used in a date-formatted field and certain text fields, that placeholder will return a date/time stamp from the time zone set in your Zapier profile settings. If you have no time zone picked, it defaults to UTC. This will print a human-readable string in MM/DD/YY hh:mmA format (for example, 07/15/16 06:05PM).

If you need a machine readable string, such as for sending to a Google Calendar create event action, you should use:

{{zap_meta_utc_iso}}

This command is similar to the first, but it will print the date/time in a format that other machines (and APIs) can read. This command won't consider the time zone set in your profile settings, and will output an ISO-8601 time stamp in UTC time (for example, 2016-07-15T18:07:48+00:00).

{{zap_meta_timestamp}}

This time stamp is in UNIX time, as some APIs might require a timestamp in this format instead.

Other available time stamps are as follows:

  • {{zap_meta_est_iso}} is in ISO-8601 format for Eastern Standard Time (EST)
  • {{zap_meta_edt_iso}} is for Eastern Daylight Time (EDT)
  • {{zap_meta_cst_iso}} is CST
  • {{zap_meta_cdt_iso}} is CDT
  • {{zap_meta_mst_iso}} is MST
  • {{zap_meta_mdt_iso}} is MDT
  • {{zap_meta_pst_iso}} is PST
  • {{zap_meta_pdt_iso}} is PDT

NOTE: When you use one of these time stamps, it will not show up in the sample data nor when you check the testing step in your Zap. It's only after your Zap actually takes an action in the background that the time stamp will be replaced, as shown in the video below.

Time Stamp Example Gif

Adjusting Dates and Times#

Other times you may have a date or time that you want to adjust for your purposes. For example, your trigger service gives you a meeting start time, but you want to be able to include an end time 3 hours afterwards. To do this, you'll use the following syntax right after the date/time field you want to adjust.

IMPORTANT: You need a space between the placeholder and the adjustment, or it will not work.
Datetime modifier with space Datetime modifier without space

Reformatting Dates and Times#

If you need to reformat a date, perhaps to change an American date format to International format, want to remove the time or date from a value, or want to add or subtract dates with more options, add a Formatter action to your Zap. It can reformat the date or time to the format you want before adding it to your action app.

For more info on Formatter, see:

Recurring Actions#

To schedule recurring actions, you may want to try using a Schedule trigger or a Google Calendar "Event Start" trigger. For more info on that, see:

Modifier Options#

  • +7h - 7 hours after the date/time in the field.
  • +10d - 10 days after the date/time in the field.
  • -45m - 45 minutes before the date/time in the field.
  • +30s - 30 seconds after the date/time in the field. Useful if you receive a duration in seconds.

You can mix and match those as well. Remember you need to put a space between these!

  • +5h +30m - 5 hours and 30 minutes after the date/time in the field
  • -2d -12h - 2 days and 12 hours before the date/time in the field.

Human Readable Dates/Times#

We also are able to parse a range of "human readable" transformations like "tomorrow", "today", or "three weeks from now". See this list for more ideas about what is possible.

A few things to be mindful of when using modifiers:

  • They only work if you are inserting the time into a date/time field. Date/time fields have icons next to the name.
  • They will not be reflected in the UI inside the Zap editor -- they are performed before writing any Task to the Action of a Zap.
  • You cannot use decimals like 0.5h. Write it as 30m instead.

Example#

In the interface for a Zap that copies a Google Calendar Event from one calendar to another, you might have a field that looks like:

Detailed event time fixing.

↑ Was this documentation useful? Yes No (Suggest Edits)

Avoiding Zap Loops#

Some users will want to use Zapier in order to keep two services up to date on the same object, and you might want to use two Zaps that do the same thing in opposite directions to do so. When you do this, you'll want to take steps to avoid a "loop" of duplicate objects when those Zaps are triggered.

This can also happen if you have a single Zap too, where the Action performed on the Zap is also what triggers your Zap. For example, if you had a Gmail Zap which triggers on any new email and an action to send an email. The sent email will be seen as a new email in your account and trigger the Zap making an infinite loop.

Note: this will not enable syncing or updating two records across services, it simply keeps Zapier from performing a non-stop loop between two services.

Let's take the example that I want to sync Salesforce contacts to Google Contacts, and vice versa. If I have one Zap that moves contacts from Salesforce to Google, and another that does the opposite, that means that each time I create a Salesforce contact, it will trigger my first Zap, whose action triggers my second Zap, whose action triggers my first Zap, etc. That can lead to dozens of duplicate contacts if the service doesn't have de-duplication measures through the API.

To fix this, I use filters and make use of fields that I otherwise wouldn't use. I take a look at the available Salesforce trigger fields, and decide that the "Reports To Name" field is one I don't really use.

Salesforce fields

I then create a filter for my Salesforce to Google Zap, telling it to run only when the Reports To field has "#sf" inside. The exact text used isn't important, but this makes it easier for me to remember.

Salesforce filter

Then whenever I create a Salesforce contact, I remember to put in that bit of text in the Reports To field. Now I know that contact will trigger the Zap, and any that come across from Google will not.

Salesforce contact

To completely "close the loop", I do the same thing with my other Zap. I determine the Website field isn't one that I use, so I set up a filter to only run the Zap when that field contains "#ggl". Now when I create Google Contacts, I use that bit of text in that field and can be assured that my Zaps aren't going to duplicate the contact over and over again.

This process can be used for any Zap where the trigger and action are mirrors of each other. The important things to do are:

  • Find fields in both trigger services that you don't use
  • Set up filters for text in those fields
  • Use that text when creating new objects for that trigger

If you follow those steps, you'll never have to worry about a "loop" from those Zaps again.

↑ Was this documentation useful? Yes No (Suggest Edits)

Disable SSL Certificate Checks#

Before you make any changes or contact Zapier support, use the SSL checker to verify your SSL certificates are installed properly!

What are SSL Certificates?#

SSL certificates are a very important part of the internet. These certificates allow encrypted communication between your browser and https://zapier.com. They also allow your browser to guarantee you're actually looking at the webpage we intended. Both of these details prevent would-be attackers from snooping on your private browsing or business data.

SSL certificates are also widely used when dealing with APIs. The same technology that lets your computer's browser talk securely to https://zapier.com also allows Zapier to talk securely to other web services (like Gmail, Salesforce, or Zendesk) in order to access your data on your behalf.

In order for SSL certificates to work, both parties (ie. your browser and https://zapier.com) must "trust" an independent third-party, known as a Certificate Authority (CA), who signs every SSL certificate they issue.

There are hundreds of CAs on the internet. In fact, for SSL to work properly, the list of CAs both parties "trust" must be continually updated -- an onerous detail.

You can find a list of the CAs we trust here.

How does Zapier use SSL Certificates?#

Zapier does checks against SSL certificates on every API call we make to ensure the data we send/receive is secure. Usually, the services we communicate with are responsible for setting up and managing the certificates, so users don't have to think about this part of the process.

Some services, however, allow you to specify your own domain (like Desk, JIRA, SugarCRM, Magento). In most cases, it's required that your domain also have its own SSL certificate for API communication to take place. More importantly, Zapier has to trust the CA that signed your SSL certificate!

It's possible that you'll purchase an SSL certificate that is issued by a CA that Zapier doesn't trust. This does not mean anything is wrong with that CA, we simply haven't added them to our list of trusted ones yet.

When Zapier encounters a certificate from an "untrusted" CA, you might see this type of error:

SSL Error on Zapier

In order to get around this verification step, click "Security" option in your user profile settings that allows you to disable SSL certificate checks. Essentially, this means both parties (your server and Zapier) don't have to trust the CA in order for communication to take place. You'll still need a signed SSL certificate, but we won't enforce that it is valid.

Disable SSL Certificate Checks on Zapier

WARNING: You should only do this as a last resort. Disabling these checks may enable an attacker to manipulate the data sent to Zapier or eavesdrop on data sent out of Zapier to websites with said SSL certificates. If you disable checks and adding an account still yields an SSL error, we highly recommend you revert the option back to enabled then contact support and we can debug further.

NOTE: We are respecting this "disable" option on a case by case basis for services. If you come across a service where you're still hitting SSL errors even after disabling the check, let us know. Currently, this option only affects:

  • Desk
  • Jira
  • Quickbooks
  • Redmine
  • RSS
  • SugarCRM
  • Webhooks

NOTE: An "SSL" error doesn't necessarily imply a certificate problem. For example: "SSLERROR: The read operation timed out" is actually not a certificate problem. This error simply indicates the remote server didn't respond to our requests in a timely manner.

↑ Was this documentation useful? Yes No (Suggest Edits)

Using Custom Values in Dropdowns#

When to Use Custom Values#

When creating a Zap, you may want to pull in a value from a prior step—for example, to assign a task to a different person depending on variables from the Trigger step. Some fields let you map this information, but you may run into a static dropdown that doesn't allow it. That's where custom values come in.

This video will walk you through using custom values. Here's how it breaks down:

  • 0:04 - 0:23 "Insert field" buttons vs. static dropdowns
  • 0:25 - 0:47 Example of when you might use a custom value
  • 0:48 - 1:09 How to use a custom value
  • 1:10 - 1:39 When and how to use IDs instead of human readable text
  • 1:40 - 2:36 How to use Formatter by Zapier to translate IDs between apps
  • 2:37 - 3:02 Limitations to custom values

Getting Started with Custom Values#

Why Would I Use a Custom Value?#

Some fields within your apps will only accept very specific options; whenever this is the case, you’ll see a dropdown menu of possible fields instead of a text field:

If you don’t want the same value to be passed each time your Zap runs—instead, you want to set that dynamically based on a field from a previous step—you’ll want to use a Custom Value, which is an option at the very bottom of your dropdown.

In the example above, if you wanted to not just set Top or Bottom for every new card you created, you could use a custom value to change that position depending on your Trigger.

What Data Can Be Passed on to a Custom Value?#

There are two types of fields you can pass to a Custom Value: Name fields and ID fields. When there is just a name field, you only need to pass over the name of the field. When there is an ID, the app will only accept the ID of that field.

ID Fields#

In the following example, you can only pass on the ID to set the Member. The ID is shown in light grey to the right of the Member name.

In this instance, you’d need to enter “5aa6ae90ed5d1627086296d0” if you wanted to set Katie Williams as the Member of the card.

Name Fields#

If there is no ID next to the name in the dropdown, you only need to pass on the name that is in the dropdown. However, you need to be careful as this name must exactly match the dropdown.

In the example above, you can only pass on “Top” or “Bottom” to the Card Position field. If you were to enter something similar but not exactly the same, like “Topmost,” that would fail.

How Can I Dynamically Map My Dropdown from my Trigger?#

There are three ways you’d be able to dynamically map your dropdown so that it changes each time the Zap runs.

  1. By using a value that exactly matches your dropdown from a previous step.
  2. By adding a search step (when available) to look up a matching value.
  3. By adding a lookup table to create matching values.

Option 1 - Using a Value That Exactly Matches Your Dropdown Options#

Sometimes, you will use the same app in your Trigger and Action steps, and that will match the available fields in your dropdown. In that case, it’s perfect for a custom value. For example, in this Zap, we are triggering from a new card in Trello that already has the member ID we want to use in our Create Card Action:

Option 2 - Adding A Search Step To Lookup A Value#

Sometimes, you will see an “Add a Search Step” button next to a drop down, like this:

This will enable you to search for the value you need. We have a detailed guide (including a video) for using search steps that you can follow along with here: https://zapier.com/help/how-connect-findsearch-step-update-step/#how-connect-findsearch-step-update-step

Option 3 - Adding A Lookup Table To Create Matching Values#

So what do you do if you want to set this field dynamically, but there is no search step or matching trigger field?

To work around this, you can use the Formatter lookup table to match up the results of a field you want with the options in your dropdown. We have a detailed guide that explains how to do this here: https://zapier.com/help/how-use-formatter-functions/#using-the-lookup-table

Common Problems#

A Value Created in a Previous Step Is Not Being Found When the Zap Runs#

If you're mapping in a custom value from an object you've created in a previous step, it may not exist yet. You can resolve this by adding a Delay step after your Create step to give the app some time to process. Read more about Delay steps here.

Combat Pagination Hiccups#

If there so many options in your static dropdown that they're not all loading at once—or causing an error—you can use a Custom Value to input the ID of your value directly.

For example, the "List Projects in a Workspace" Trigger for Asana will return an error if there are more than 100 projects in a workspace. In that case, you'll need to directly find the correct ID and input that.

InfusionSoft can have hundreds of tags in their dropdown, and searching through that 15 items at a time is a slow process. If you have the ID of the tag, you can drop that into the Custom Value field and save yourself some clicking.

The Field from My Trigger Does Not Match the Options in My Dropdown#

When working with apps that don't normally talk to each other, it's common that the app used in the Action step won't understand the ID from the Trigger step. If that's the case, and you aren't able to search by a common field or value (like product name vs. list), you can map in the output of a Lookup Table instead. To learn more about how to use a Lookup Table, check out this tutorial.

When Not to Use Custom Values#

To Enter a Value That Is Not Available in the Dropdown#

When you don't see the value you're looking for in the static dropdown, it can be tempting to simply type it in. But in order for the value to change each time the Zap runs, you'll need to pull in the ID of the field you're looking for as described above.

So in the following label dropdown, if we typed in "white," the Zap would fail since that's not one of the named options:

Trello Label dropdown

When the Field is Dependent on Another Field.#

If you're completing a field that is dependent on another field, you won't be able to create a Custom Value. For example, the dropdown for a Google Sheets spreadsheet cannot take Custom Values since it has to immediately generate the worksheets and columns of the selected sheet.

When Is It Not Possible to Use a Custom Value?#

When Creating a Trigger#

You won't be able to use a Custom Value on a trigger because Custom Values are based on data from previous steps, and there aren't any steps before your Trigger.

↑ Was this documentation useful? Yes No (Suggest Edits)

Field Types#

When you are setting up your Action's template you'll notice that some fields have icons next to them. That's because certain field types are looking for certain formats of data. In this guide we'll cover those field types so you can make sure you're sending on the right kind of data and avoid running into errors.

Icons#

Found an Icon and not sure what it means? Select your icon's title below to find out more.


Datetime fields

Number fields

True/False (Boolean) fields

File fields

Decimal fields

Field descriptions#

Find descriptions for each field type below.

Datetimes#


Datetime fields are only looking for a date to be sent on. They can also be fairly complicated, but we do our best to interpret any date or time you throw at us! For example, all of the below are supported:

  • tomorrow at noon
  • next friday at 7pm
  • 2/13/2014 8pm EST
  • 2014-02-26T16:56 (standard ISO format)
  • 1393462573 (a unix timestamp)

If you don't provide a timezone, we'll assume the timezone you have configured in your Zapier Profile. Nevertheless, there are some specific integrations where providing a timezone might not work as expected. If you think this is affecting your Zap, you can contact us so we can help take a closer look.

You can also modify your dates with dynamic modifications. These are useful if you want to add or subtract time from your date field.

It’s important to note that the datetime examples above will only work if the field on the action side contains the calendar and clock icon like this:

datetime icons

Numbers or Integers#


Numbers are very common in the world of Zapier and we do our best to convert information we receive into a clean number. For example, something like 2 burritos will be turned into 2.

numberfields

Often with these fields you'll see a dropdown with apparently "non-number" options in them (such as name or email), but don't be fooled! Lots of apps have ID’s that identify related objects, and you'll need to remember to select an item or send on the correct number!

If you have a drop-down that’s expecting a contact ID of sorts and you want to use a field from the trigger to make the selection more dynamic, you will need to choose a field with an ID next to it. You can read more about those here.

nameids

namenames

True/False - Boolean - Using Checkboxes#


We do our best to turn normal words into their proper true or false representations. For example, "yes" is "true", as is "1" or any string at all! "No" is "false", as is "0" or "f" among others. You will need to look in your Zap to see how those fields are being represented based on the app you're using. If you click on the "Insert Fields" button, you'll be able to locate the checkbox field and see how those values are being presented.

If you are looking to set up a condition where certain action are taken based on whether a checkbox is checked or not, you will need to setup 2 Zaps with custom filters in each one. One Zap would have filter for true value and the other Zap would have a filter for the false value. These values can change depending on how the app sends over those checkbox values.

JFF

Here are some examples showing how Jotform sends over those values.

Files#


When we reference files on Zapier, we mean the actual file object, and not a text field describing the file. For example, a file would be a photo itself, a field describing that file might be the Name, or the URL for that photo. If you put a string of text in a file field, we'll convert it to a .txt file for you. If you give us a URL, we'll inspect the URL and try to load in the data there and name it properly. And, if the item is a file from the trigger side, we'll bring it along.

Note: inserting multiple file fields into a single file field is unsupported.

Quick reference: - File: passes file to action app - URL: passes data from URL in the form of a single file to action app - Text: creates a .txt file containing the field contents and uploads to action app*

Decimals or Floats#

Decimals are pretty common and contrary to popular belief, they are not currency specific! They are very similar to numbers/integers except we'll allow a decimal here or add it if it is missing.

Arrays#

An array is a list of data. For example, invoicing apps that have "line items" will often send and receive this data as an array. Arrays pop up in a lot of situations, for example: line items, checklists, addresses, etc.

We only have really limited support for arrays right now, so only certain apps and certain triggers and actions have this functionality.

You can see which fields on an action support line items as they are indented in a box like this:

You are welcome to insert single values in here (for example, no line item in the trigger and array support only on the action), but when given a trigger that provides arrays we will automatically create as many items as needed (for example, array support in both the trigger and action).

This means to send and receive data as an array, you'll need to make sure both the trigger and action both support this.

This will be clarified on the actual trigger and action when you are setting up the Zap like this: with line item support

Arrays are mostly automatic, you just insert what you want to map to this field and we'll figure out the rest for you. If you have a different or specific use case for this, please get in touch and we'll be happy to advise further.

↑ Was this documentation useful? Yes No (Suggest Edits)

Creating Infinite Email Addresses Using Your Gmail Inbox#

Do you need to test a Zap by adding an email address to an application, such as MailChimp? Perhaps you are adding contacts to Pipedrive and you are running out of real email addresses to use. Sometimes, you have to use a live email address -- perhaps part of the test is receiving an email at the address. Most people have access to two or three email addresses they can use for testing. After you have already used up the email addresses you have, what do you do? Here's an idea!

You can use a Google-powered email address (it doesn't have to end in @gmail.com -- it can be a Google Apps for Business email address) to simulate new addresses to test with that will all go to your SAME inbox.

If you add "+" and then any combination of numbers or letters after the local portion of the address, before the "@," you will have an email address that will go to the same inbox but function as a new contact in your application.

So for example if your email address is daniel@gmail.com, you could use daniel+1@gmail.com, daniel+2@gmail.com, daniel+test@gmail.com, and they would all function as new contacts in your application and be valid email addresses to reach your daniel@gmail.com inbox.

↑ Was this documentation useful? Yes No (Suggest Edits)

How to Connect a Find/Search Step to an Update Step#

 

Depending on the Integration you use in Zapier, some of them offer a way of Updating data in a particular app. But one thing to keep in mind here is that an Update step would always require a Search step in order to function.

For example, The Trello Integration has an Update Card Action:

Trello Update Card selection Screenshot

What you'll notice when setting this up is that it needs to identify the Card that needs to be updated:

Trello Update Card template showing Card Portion

In order to do that, adding a Search step would be integral. In this case, clicking on the "Add a Search Step" button adds said function to your Zap:

Screenshot showing Find Card Step was added to Zap

You would then need to configure the setting for such search step. This usually involves mapping out a field from the Trigger app that identifies which Card needs to be updated in Trello

Once you've done that, you would then need to test the Search Step. This, in turn, would give out information pertaining to a Trello Card. Included in this is the ID of a Card:

Screenshot showing the ID produces by the Find Card Step Action

The final piece of the puzzle is using that ID to connect the Search step to the Update step. If there's already a value in the "Card" field in your Update Card Action, this step has already been done for you.

If that field isn't filled in, what needs to be done now is to map out the field ID from Search Step (step 2) as a custom value under the "Card" field in the Update step (Step 3)

Gif showing how to use ID produced by the Find Card Step Action in the Card portion of the Trello Update Card Action

This tells the Zap which card needs to be updated based on the results of the search.

↑ Was this documentation useful? Yes No (Suggest Edits)
Get Help