---
title: "If you use Zapier: best practices"
description: Pro tips for using Zapier's Webhooks to make cool integrations happen
---

[Skip to content](https://help.indiegraf.com/if-you-use-zapier-best-practices#main-content)

English

Show submenu for translations

[Publisher Portal](https://portal.indiegraf.com/tickets?hsLang=en)

[![Indiegraf-PrimaryLogo-FullColor-1](https://help.indiegraf.com/hs-fs/hubfs/Indiegraf-PrimaryLogo-FullColor-1.png?width=262&height=60&name=Indiegraf-PrimaryLogo-FullColor-1.png)](https://help.indiegraf.com/?hsLang=en)

Open main navigation

Close main navigation

- English
  
  Show submenu for translations
- [Publisher Portal](https://portal.indiegraf.com/tickets)

 How can we help you?

- There are no suggestions because the search field is empty.

1. [Indiegraf](https://help.indiegraf.com/?hsLang=en)
2. [Hearken](https://help.indiegraf.com/hearken?hsLang=en)
3. [Setting up APIs and webhooks](https://help.indiegraf.com/hearken?hsLang=en#setting-up-apis-and-webhooks)

March 5, 2026

# If you use Zapier: best practices

## Pro tips for using Zapier's Webhooks to make cool integrations happen

If you are looking for a low development effort way to integrate EMS into your systems, we recommend [Zapier](https://zapier.com/) as the intermediary layer.

*Please note: This does not imply any official partnership with Zapier.*

Here are some of the Zapier best practices when using EMS webhooks and APIs

 

#### **1. Raw Hooks can better than a parsed one, if you know how to use them**

When you set up a zap to receive a webhook and feel comfortable using Zapier's code blocks, consider using the `Catch a raw hook` option. This will prevent Zapier from flattening any arrays that are nested. eg: Opt-in lists in audience member webhook. The `rawBody` can then be parsed into JSON using a code block.

let output = JSON.parse(inputData.rawBody)

 

#### **2. Iterating over a list**

If an audience member is opted-in to 3 opt-in lists, you might want a zap to add them to 3 mailing lists. Most CRMs and email platforms we have encountered do not accept multiple list ids. So there is a need to be able to run steps of a zap for each object in the list.

But Zapier does not provide a direct way to iterate over a list of objects. Zapier, however, allows zaps to easily make HTTP calls including to the receiving hook of a different zap. You can use this feature to simulate a loop as described above. This set up involves setting up two zaps: an `iterator` and a `data processor`.

The iterator zap loops through the list in a code block and call the data processor zap to process each member of the list.

#### Example: Iterating over an array of opt-in lists

`// The data processor Zap catch hook url`  
`const otherZapUrl = '{REPLACE THIS WITH YOUR PROCESSOR WEBHOOK URL}'`  
`​`  
`// Parse raw hook as describe in step 1`  
`let body = JSON.parse(inputData.rawBody);`  
`​`  
`let optInLists = body.payload.opt_in_lists;`  
`​`  
`// construct the body of the new request in any format you want`  
`// Here it is being rebuilt with the email added to every list`  
`optInLists.map(list => {`  
`  list.email = body.payload.email`  
`  fetch(otherZapUrl, {method: 'POST', body: JSON.stringify(list)})`  
`    .then(() => {`  
`    callback(null, [{status: 'ok'}]);`  
`  });`  
`});`

- [Welcome to Indiegraf](https://help.indiegraf.com/welcome-to-indiegraf?hsLang=en)
- [Onboarding](https://help.indiegraf.com/onboarding?hsLang=en#main-content)

    - [Quick Start Guide](https://help.indiegraf.com/onboarding?hsLang=en#quick-start-guide)
- [Indie Website](https://help.indiegraf.com/indie-website?hsLang=en#main-content)

    - [Analytics & Growth](https://help.indiegraf.com/indie-website?hsLang=en#analytics-growth)
    - [Audience Engagement & Forms](https://help.indiegraf.com/indie-website?hsLang=en#audience-engagement-forms)
    - [Configuring your Homepage](https://help.indiegraf.com/indie-website?hsLang=en#configuring-your-homepage)
    - [Content Creation & Management](https://help.indiegraf.com/indie-website?hsLang=en#content-creation-management)
    - [Design & Page Layout](https://help.indiegraf.com/indie-website?hsLang=en#design-page-layout)
    - [Indiegraf Pay](https://help.indiegraf.com/indie-website?hsLang=en#indiegraf-pay)
    - [Media & Visual Assets](https://help.indiegraf.com/indie-website?hsLang=en#media-visual-assets)
    - [Paywall Solution: Pelcro](https://help.indiegraf.com/indie-website?hsLang=en#paywall-solution-pelcro)
    - [SEO and Google Tools](https://help.indiegraf.com/indie-website?hsLang=en#seo-and-google-tools)
    - [Site Administration](https://help.indiegraf.com/indie-website?hsLang=en#site-administration)
    - [Technical Questions](https://help.indiegraf.com/indie-website?hsLang=en#technical-questions)
- [Indie Email](https://help.indiegraf.com/indie-email?hsLang=en#main-content)

    - [Quickstart Video Guide: Indie Email](https://help.indiegraf.com/indie-email?hsLang=en#quickstart-video-guide-indie-email)
    - [Account Setup & Foundations](https://help.indiegraf.com/indie-email?hsLang=en#account-setup-foundations)
    - [Contact Management](https://help.indiegraf.com/indie-email?hsLang=en#contact-management)
    - [Creating Campaigns](https://help.indiegraf.com/indie-email?hsLang=en#creating-campaigns)
    - [Sending Campaigns & Automation](https://help.indiegraf.com/indie-email?hsLang=en#sending-campaigns-automation)
    - [Troubleshooting & Deliverability](https://help.indiegraf.com/indie-email?hsLang=en#troubleshooting-deliverability)
    - [Analytics](https://help.indiegraf.com/indie-email?hsLang=en#analytics)
- [Indie Ads Manager (IAM)](https://help.indiegraf.com/indie-ads-manager-iam?hsLang=en#main-content)

    - [Reporting & Statistics](https://help.indiegraf.com/indie-ads-manager-iam?hsLang=en#reporting-statistics)
    - [Essential Articles](https://help.indiegraf.com/indie-ads-manager-iam?hsLang=en#essential-articles)
    - [Native Ad Templates](https://help.indiegraf.com/indie-ads-manager-iam?hsLang=en#native-ad-templates)
    - [Quick Start Guide](https://help.indiegraf.com/indie-ads-manager-iam?hsLang=en#quick-start-guide)
    - [Payment Solutions](https://help.indiegraf.com/indie-ads-manager-iam?hsLang=en#payment-solutions)
- [Hearken](https://help.indiegraf.com/hearken?hsLang=en#main-content)

    - [Planning and Preparing to Launch with Hearken](https://help.indiegraf.com/hearken?hsLang=en#planning-and-preparing-to-launch-with-hearken)
    - [Collecting Questions](https://help.indiegraf.com/hearken?hsLang=en#collecting-questions)
    - [Collecting Votes](https://help.indiegraf.com/hearken?hsLang=en#collecting-votes)
    - [Reporting an Answer](https://help.indiegraf.com/hearken?hsLang=en#reporting-an-answer)
    - [Spreading Hearken Across Your Organization](https://help.indiegraf.com/hearken?hsLang=en#spreading-hearken-across-your-organization)
    - [Creating and Customizing an Embed](https://help.indiegraf.com/hearken?hsLang=en#creating-and-customizing-an-embed)
    - [Workflow Features](https://help.indiegraf.com/hearken?hsLang=en#workflow-features)
    - [Platform Features](https://help.indiegraf.com/hearken?hsLang=en#platform-features)
    - [Setting Up Notifications and Alerts](https://help.indiegraf.com/hearken?hsLang=en#setting-up-notifications-and-alerts)
    - [Setting up APIs and webhooks](https://help.indiegraf.com/hearken?hsLang=en#setting-up-apis-and-webhooks)
    - [Data collection and exporting](https://help.indiegraf.com/hearken?hsLang=en#data-collection-and-exporting)
    - [Automatic categorization](https://help.indiegraf.com/hearken?hsLang=en#automatic-categorization)
    - [Social, outreach, and marketing](https://help.indiegraf.com/hearken?hsLang=en#social-outreach-and-marketing)
    - [Events and In-Person Engagement](https://help.indiegraf.com/hearken?hsLang=en#events-and-in-person-engagement)
    - [Monetizing your Hearken work](https://help.indiegraf.com/hearken?hsLang=en#monetizing-your-hearken-work)
- [Indiegraf Experts](https://help.indiegraf.com/indiegraf-experts?hsLang=en)
- [Indiegraf Product Release Notes](https://help.indiegraf.com/indiegraf-product-release-notes?hsLang=en#main-content)

    - [Product Demo Videos](https://help.indiegraf.com/indiegraf-product-release-notes?hsLang=en#product-demo-videos)
- [General](https://help.indiegraf.com/general?hsLang=en)
- [RevEngine](https://help.indiegraf.com/revengine?hsLang=en#main-content)

    - [Getting Started with RevEngine](https://help.indiegraf.com/revengine?hsLang=en#getting-started-with-revengine)
    - [International giving](https://help.indiegraf.com/revengine?hsLang=en#international-giving)
    - [RevEngine Core](https://help.indiegraf.com/revengine?hsLang=en#revengine-core)
    - [Organization management](https://help.indiegraf.com/revengine?hsLang=en#organization-management)
    - [Working with Stripe](https://help.indiegraf.com/revengine?hsLang=en#working-with-stripe)
    - [Contribution page basics](https://help.indiegraf.com/revengine?hsLang=en#contribution-page-basics)
    - [Customizing your page](https://help.indiegraf.com/revengine?hsLang=en#customizing-your-page)
    - [Branding and images](https://help.indiegraf.com/revengine?hsLang=en#branding-and-images)
    - [Advanced page settings & features](https://help.indiegraf.com/revengine?hsLang=en#advanced-page-settings-features)
    - [Portal & contribution management](https://help.indiegraf.com/revengine?hsLang=en#portal-contribution-management)
    - [Contribution data](https://help.indiegraf.com/revengine?hsLang=en#contribution-data)
    - [Analytics and Reporting](https://help.indiegraf.com/revengine?hsLang=en#analytics-and-reporting)
    - [Best Practices and Recommendations](https://help.indiegraf.com/revengine?hsLang=en#best-practices-and-recommendations)
    - [Receipts, reminders and transactional communications](https://help.indiegraf.com/revengine?hsLang=en#receipts-reminders-and-transactional-communications)
    - [Security & Legal](https://help.indiegraf.com/revengine?hsLang=en#security-legal)
    - [Common issues](https://help.indiegraf.com/revengine?hsLang=en#common-issues)

[![Indiegrf](https://help.indiegraf.com/hs-fs/hubfs/Indiegraf-SecondaryLogo-DarkNavy-2.png?width=260&height=130&name=Indiegraf-SecondaryLogo-DarkNavy-2.png "Indiegrf")](https://help.indiegraf.com/?hsLang=en)

Indiegraf is on a mission to make local news entrepreneurship a great career and life choice for journalists everywhere.

<https://www.instagram.com/indiegrafmedia> <https://www.twitter.com/indiegrafmedia> <https://www.facebook.com/indiegrafmedia> <https://www.linkedin.com/indiegraf-media> [mailto:support@indiegraf.com](mailto:support@indiegraf.com)

Copyright © 2025, Indiegraf Media