> ## Documentation Index
> Fetch the complete documentation index at: https://memberful.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Integrate with Zapier

> Memberful can activate Zapier triggers when important member events happen, allowing you to create powerful workflows across third-party API services.

export const RelatedDocs = ({link1, link2, link3, link4, link5, link6, link7, link8, link9, link10, className = ""}) => {
  const links = [link1, link2, link3, link4, link5, link6, link7, link8, link9, link10].filter(Boolean);
  if (!links.length) return null;
  return <section className={`related-docs border dark:border-gray-700 rounded-2xl px-6 py-4 mt-6 ${className}`}>
      <p className="mb-2 font-medium">
        <strong>Related help docs:</strong>
      </p>
      <ul className="space-y-1 mb-1 mt-1">
        {links.map((link, index) => <li key={index}>
            <a href={link.url}>{link.label}</a>
          </li>)}
      </ul>
    </section>;
};

In this help article, we'll show you how Memberful can [integrate with Zapier](https://zapier.com) to activate triggers when important member events happen, allowing you to create powerful workflows across third-party services.

## Create an API key for Zapier

<Frame caption="Create an API key">
  <img src="https://mintcdn.com/memberful/zfHsjCK1h1UMRz66/images/custom-development-and-api/integrate-with-zapier/create-api-key.gif?s=c923a125557923bc06e13d7d49215fa3" alt="Create an API Key" width="910" height="414" data-path="images/custom-development-and-api/integrate-with-zapier/create-api-key.gif" />
</Frame>

1. Go to *Settings → Custom applications* in your Memberful dashboard and click **Add a new Custom Application.**
2. Enter a name and click **Add a new custom application.** We'll be using this key in a later step.

## Create a Zap

<Frame>
  <img src="https://mintcdn.com/memberful/zfHsjCK1h1UMRz66/images/custom-development-and-api/integrate-with-zapier/create-zap.gif?s=dcd2e07525311d8ca643fb5bdab17d89" alt="Create a Zap" width="1566" height="933" data-path="images/custom-development-and-api/integrate-with-zapier/create-zap.gif" />
</Frame>

1. Go to Zapier and click the **create Zap** button.
2. Type "Memberful" in the main search box to add it as a trigger.
3. Choose the event you'd like to trigger and click **continue.**

## Connect to Memberful

If you don't already have Zapier connected to Memberful, now is the time to do that. Click **connect a new account** and Zapier will ask for:

1. The Memberful API key we created earlier. Copy the key from your Memberful dashboard and paste it into the field.
2. Your Memberful account URL subdomain (see below).

Your Memberful account URL subdomain is the part of your Memberful account URL between `https://` and `memberful.com`. For example, if your Memberful URL was `https://jensbakery.memberful.com`, your account URL subdomain would be `jensbakery`.

<Frame>
  <img src="https://mintcdn.com/memberful/zfHsjCK1h1UMRz66/images/custom-development-and-api/integrate-with-zapier/zapier-find-subdomain.png?fit=max&auto=format&n=zfHsjCK1h1UMRz66&q=85&s=88214f0ea3a2f56628194e714b82738f" alt="Find your account URL subdomain" width="1440" height="486" data-path="images/custom-development-and-api/integrate-with-zapier/zapier-find-subdomain.png" />
</Frame>

Finally, Zapier will test your Zap. Click **test** and it'll do the rest.

<Callout icon="triangle-alert" color="#FFE044">
  We send test data, not real data, during Zapier's test stage. Once you enable your Zap it will start receiving real data.
</Callout>

## Learn about the available triggers

These are the Memberful events that can trigger a Zap:

<ParamField path="New Member" type="trigger">
  Triggers when a new member account is created. Use this trigger to add new members to your app or to a third-party service.
</ParamField>

<ParamField path="Member Updated" type="trigger">
  Triggers when a member's profile information is updated. This will *not* be triggered when a member updates their answers to custom fields; there is a separate trigger for custom field updates. Use this trigger to update a member's profile information in your app.
</ParamField>

<ParamField path="Member Deleted" type="trigger">
  Triggers when a member is deleted from your Memberful account. Use this trigger to remove a member from your app if they were deleted from Memberful. It's not common for a member account to be deleted — in most cases, you'll want to react to *Subscription Deactivated* instead.
</ParamField>

<ParamField path="Subscription Created" type="trigger">
  Triggers when a new subscription is added to a member's account. This includes when a member purchases a subscription or activates a gifted subscription, when a member is added to a group subscription, and when a staff account manually creates a subscription. Use this trigger to let your app know when a member has subscribed.
</ParamField>

<ParamField path="Subscription Renewed" type="trigger">
  Triggers when a member's subscription is renewed, or when a returning member reactivates an old subscription. Use this trigger to renew the member's access to your app. At this time there's no way to differentiate between a renewal and a reactivation.
</ParamField>

<ParamField path="Subscription Updated" type="trigger">
  Triggers when a member's subscription is updated. To detect price changes (upgrades, downgrades, or crossgrades), look for changes to `plan_id` in the **changed** section of the data. The first value is the old price and the second is the new one. The same applies to other changed fields, like *autorenew*. Note that `plan_id` refers to the price, not the plan—you can check the `pass` object in the payload to see which plan the subscription belongs to.
</ParamField>

<ParamField path="Subscription Deactivated" type="trigger">
  Triggers when a member's subscription fails to renew, expires, or becomes inactive. Also triggered when a staff account [suspends an order](/member-management/subscription-management/pause-a-subscription/#suspend-the-order), making the subscription inactive. Use this trigger to remove the member's access to your app or to update their status if they stop paying.
</ParamField>

<ParamField path="Subscription Reactivated" type="trigger">
  Triggers when a member's [suspended order](/member-management/subscription-management/pause-a-subscription/#suspend-the-order) is marked as *complete* and the subscription becomes active again. Although this trigger uses the term "reactivated", this does *not* refer to when a member renews their subscription after it has expired — use the **Subscription Renewed** trigger for that.
</ParamField>

<ParamField path="Subscription Deleted" type="trigger">
  Triggered when a staff account deletes a member's subscription from the Memberful dashboard. Use this trigger to remove the member's access to your app or to update their status.
</ParamField>

<ParamField path="Order Purchased" type="trigger">
  Triggers when a member places an order or when a staff account manually adds an order to a member's account. This is not triggered for renewal payments. A member purchasing a gift subscription for someone else will trigger this event, but no subscription will be created until the recipient activates their gift. Use this trigger to notify your app when a member makes a purchase.
</ParamField>

<ParamField path="Order Refunded" type="trigger">
  Triggers when a staff account refunds an order. Use this trigger to update your app when a refund has been processed.
</ParamField>

<ParamField path="Custom Fields Updated" type="trigger">
  Triggers when a member answers or updates their custom fields. Use this trigger to update your app when a member updates their answers to custom fields, either during checkout or by visiting their member profile.
</ParamField>

<ParamField path="Tax ID Updated" type="trigger">
  Triggers when a member adds, changes, or removes their tax ID. Use this trigger to update your app when a member updates their tax ID.
</ParamField>

## Distinguishing group manager sign-ups from member sign-ups

Sign-ups from group managers and members both trigger the **Subscription Created** event. To differentiate between the two, you can check the two member IDs in the data that was returned.

If both IDs are the same, the sign-up is from a group manager (or it's for a plan that doesn't support groups). If the IDs are different, the sign-up is from a member who is joining a group. The group manager's ID is the one at the top, while the group member's ID appears further down (nested within the <em>member</em> object).

<Frame>
  <img src="https://mintcdn.com/memberful/DOpS1_0MI9MjYqsN/images/custom-development-and-api/integrate-with-zapier/group-manager-vs-member-id.png?fit=max&auto=format&n=DOpS1_0MI9MjYqsN&q=85&s=960ff4a90febcaebac4ac87ab7694c71" alt="Group Manager vs. Member ID" width="1440" height="754" data-path="images/custom-development-and-api/integrate-with-zapier/group-manager-vs-member-id.png" />
</Frame>

## How to navigate custom fields

[Custom fields](/configuration/feedback-and-policies/create-custom-fields/) are collected after checkout, which means the value is not yet set when Zaps using the New Member, Subscription Created, or Order Purchased events are triggered. To access custom field values, Zaps must use the **Custom Fields Updated** trigger instead.

Custom field values currently show up in Zapier as a single field called "custom fields values," with each of the values separated by a comma. If you'd like to access the values individually, you can use Zapier's built-in formatter to split the values into separate fields.

First, add a Formatter step and choose the **Utilities** event.

<Frame>
  <img src="https://mintcdn.com/memberful/zfHsjCK1h1UMRz66/images/custom-development-and-api/integrate-with-zapier/add-formatter-step.png?fit=max&auto=format&n=zfHsjCK1h1UMRz66&q=85&s=25d28e29f14e68b8989f0045b5b80d47" alt="Add a Formatter step" width="1440" height="838" data-path="images/custom-development-and-api/integrate-with-zapier/add-formatter-step.png" />
</Frame>

Choose **custom fields value** as the CSV file.

<Frame>
  <img src="https://mintcdn.com/memberful/zfHsjCK1h1UMRz66/images/custom-development-and-api/integrate-with-zapier/choose-custom-fields-value.png?fit=max&auto=format&n=zfHsjCK1h1UMRz66&q=85&s=2eb9854f38c347e98f324031f5ff3d26" alt="Choose Custom Fields Value as the CSV File" width="1440" height="1391" data-path="images/custom-development-and-api/integrate-with-zapier/choose-custom-fields-value.png" />
</Frame>

After you save that step, whenever you want to use a custom field value, you can select one of the output line items from the Formatter step.

<Frame>
  <img src="https://mintcdn.com/memberful/zfHsjCK1h1UMRz66/images/custom-development-and-api/integrate-with-zapier/use-formatter-output-line-items.png?fit=max&auto=format&n=zfHsjCK1h1UMRz66&q=85&s=f09919b8cc19b68fcd9ba9a10b9fc842" alt="Select an output line item from the Formatter step" width="1440" height="1453" data-path="images/custom-development-and-api/integrate-with-zapier/use-formatter-output-line-items.png" />
</Frame>

Note that this method has some drawbacks. For example, if your members enter responses that contain commas, the Formatter won't be able to split the values correctly.

<RelatedDocs
  link1={{
url: "/metrics-and-analytics/compare-and-export/export-data",
label: "Learn about exporting your member data.",
}}
  link2={{
url: "/newsletters/integrations/other-integrations/",
label: "Use Memberful with ActiveCampaign, AWeber, or Mad Mini.",
}}
/>
