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

# Connect Privy to Zapier

> Connect Privy to Zapier to automate contact creation and updates from any of Zapier's thousands of apps.

export const NoteInfo = ({children}) => <Callout icon="circle-info" color="#3b82f6">
        {children}
    </Callout>;

<NoteInfo>
  The Privy Zapier app is currently private and available by invitation only. Reach out to Privy support to request access. [Email Support](mailto:support@privy.com)
</NoteInfo>

The Privy Zapier integration lets you automate contact management in Privy from any app connected to Zapier. Send a Typeform submission, a new Shopify customer, a Google Sheets row, or any other Zapier-supported event into Privy as a new or updated contact — no code required.

## Features of the integration

The Privy Zapier integration allows you to:

* Create new contacts in Privy from external apps (e.g., a Typeform submission becomes a Privy contact)
* Find existing Privy contacts by email or phone number (Optionally create them if they don't exist)
* Update existing contacts — name, tags, custom fields, and email/SMS consent

All actions use Privy's [Public API](https://help.privy.com/docs/api-reference/) and are subject to your account's API rate limits (60 requests per minute, 10,000 requests per day by default).

## Setting up the integration

Privy uses **OAuth 2.0** to securely connect to Zapier. You won't need to copy or paste any API keys — just log in to Privy from Zapier's connection prompt and approve access.

To connect your Privy account in Zapier:

1. In your Zap, add a new step and choose **Privy** as the app.
2. Click **Sign in** under **Account** in the right sidebar to connect your Privy account.
3. A new window will open. Click on  "**Yes, Continue to Privy**"
4. If your Privy login is associated with multiple businesses, select the business you want Zapier to connect to.
5. You will be redirected to Privy. Log in with your Privy credentials if you aren't already signed in.

<video autoPlay muted loop playsInline className="zapier-oauth-login" src="https://mintcdn.com/privy/1bMdsv8IQLSb4ihO/images/integrations/zapier-oauth-login.mp4?fit=max&auto=format&n=1bMdsv8IQLSb4ihO&q=85&s=c8bbfca8097a8a54192770b0cb96daad" data-path="images/integrations/zapier-oauth-login.mp4" />

Once you're connected, the Privy account name will appear under your authorized accounts in Zapier and can be reused across any number of Zaps.

<NoteInfo>
  Each Zapier connection is scoped to a single Privy business. If you manage multiple businesses, repeat the connection flow once per business and Zapier will list each as a separate authorized account.
</NoteInfo>

## Available actions

### Create Contact

Adds a new contact to your Privy account.

**Required Attributes:** at least one of **Email** or **Phone Number** in the E.164 format (e.g. `+14155551234`).

**Optional Attributes:** First Name, Last Name, Tags, Email Consent, SMS Consent, Custom Fields.

<video autoPlay muted loop playsInline className="zapier-create-contact" src="https://mintcdn.com/privy/1bMdsv8IQLSb4ihO/images/integrations/zapier-create-contact.mp4?fit=max&auto=format&n=1bMdsv8IQLSb4ihO&q=85&s=849fe78b3d6b3d6692e78e42e346b89b" data-path="images/integrations/zapier-create-contact.mp4" />

<Warning>
  Set **Email Consent** to **Subscribed** only when the contact has opted in. Marking contacts as subscribed without consent violates anti-spam laws (GDPR, CAN-SPAM, CCPA). When in doubt, leave the consent fields blank — Privy defaults new contacts to "never subscribed."
</Warning>

<NoteInfo>
  Setting **SMS Consent** to **Subscribed** at create time also requires the phone number to be from a Privy-supported country.
</NoteInfo>

### Find Contact

Searches Privy for an existing contact by email or phone number so you can look up their ID or attributes. Returns the contact if found.

**Required Attributes:** **Email** or **Phone Number**.

Use this when you need to chain into an **Update Contact** step.

### Find or Create Contact

A combo action that searches first and creates only if no match is found. Use this when you want one step that always produces a contact, regardless of whether they already exist.

**Required Attributes:** at least one of **Email** or **Phone Number**.

**Optional Attributes:** the same fields as **Create Contact** — these are only applied when no existing contact is found.

<video autoPlay muted loop playsInline className="zapier-find-or-create-contact" src="https://mintcdn.com/privy/1bMdsv8IQLSb4ihO/images/integrations/zapier-find-or-create-contact.mp4?fit=max&auto=format&n=1bMdsv8IQLSb4ihO&q=85&s=5834f22c29dc8a7e72b7c8dda95c972e" data-path="images/integrations/zapier-find-or-create-contact.mp4" />

<NoteInfo>
  **Find or Create Contact does not update existing contacts.** If a match is found, the existing contact is returned as-is and your additional fields are ignored. To update an existing contact, chain a **Find Contact** step into an **Update Contact** step instead.
</NoteInfo>

### Update Contact

Updates an existing Privy contact by ID. Only the fields you provide are changed; blank fields are left untouched.

**Required Attributes:** **Contact ID** (`cus_...`). Map this from the output of a prior **Find Contact** or **Create Contact** step, or paste an ID directly.

**Optional Attributes:** First Name, Last Name, Tags, Custom Fields, Email, Phone Number, Email Consent, SMS Consent.

<video autoPlay muted loop playsInline className="zapier-update-contact" src="https://mintcdn.com/privy/1bMdsv8IQLSb4ihO/images/integrations/zapier-update-contact.mp4?fit=max&auto=format&n=1bMdsv8IQLSb4ihO&q=85&s=5cb3550f0e1cf56fffb1ac4341aedf4b" data-path="images/integrations/zapier-update-contact.mp4" />

**Email Consent** and **SMS Consent** each accept **Subscribed**, **Unsubscribed**, or **Never subscribed (no consent recorded)**. Leave them blank to keep the contact's current consent state untouched. Subscribing to SMS requires the contact to have a phone number on file from a Privy-supported country.

<Warning>
  Set **Email Consent** or **SMS Consent** to **Subscribed** only when the contact has opted in. Marking contacts as subscribed without consent violates anti-spam laws (GDPR, CAN-SPAM, CCPA). When in doubt, leave the consent fields blank.
</Warning>

<Warning>
  **Email and phone number are immutable once set.** You can set an email or phone on a contact that doesn't have one yet, but once a value exists it cannot be changed — Privy will reject the request as `422 is immutable`. Leave those fields blank when updating contacts that already have them.
</Warning>

<Warning>
  **Tags and Custom Fields replace the existing values.** Providing **Tags** overwrites the entire tag list. Providing **Custom Fields** replaces the entire custom-fields object — any existing keys you don't include will be removed. Leave these fields blank to keep the existing values.
</Warning>

## Common patterns

### Add new form submissions to Privy

Trigger: **New Submission** in Typeform / Google Forms / Jotform → Action: **Find or Create Contact** in Privy.

This is the most common Zap pattern. "Find or Create" prevents duplicate contacts when the same person submits multiple forms.

### Sync subscribers across tools

Trigger: **New Subscriber** in another platform → Action: **Find or Create Contact** in Privy → Action: **Update Contact** in Privy (to apply tags or consent).

Use the two-step Find-or-Create + Update pattern when you need to apply consent or tags to *both* new and existing contacts.

### Honor unsubscribes from external suppression lists

Trigger: **New Row** in a Google Sheet (or webhook from a compliance tool) → Action: **Find Contact** in Privy → Action: **Update Contact** in Privy with **Email Consent** set to **Unsubscribed**.

## Removing the integration

To disconnect Privy from Zapier:

1. In Zapier, from the left sidebar click on **App Connections**.
2. Find **Privy** in the list of authorized accounts.
3. Click on the vertical three dots to the right of the connection, then click on **Delete**.

Disconnecting from Zapier revokes the access token. Any Zaps that use this connection will pause until you reconnect or pick a different connection.

## Troubleshooting

**"Authorization required" or `401` errors mid-Zap.** Reconnect your Privy account in Zapier. Tokens occasionally need to be refreshed if your Privy password changes or the connection is revoked.

**`422 is immutable` when updating email or phone.** The contact already has that field set. Email and phone numbers cannot be changed once set — leave the field blank in your **Update Contact** step.

**`422 phone_number is required to subscribe to sms`.** The contact has no phone number on file. Either set **Phone Number** in the same step (only works for contacts that don't have one yet) or chain a step that captures a phone number before subscribing to SMS.

**`422 sms_consent requires a phone number from a supported country`.** The contact's phone number is not from a country Privy supports for SMS. Leave **SMS Consent** blank for international numbers, or filter them out of your SMS-subscribe Zap.

**`429 Too Many Requests`.** You've hit the API rate limit (60 requests/minute or 10,000/day). Zapier will automatically retry rate-limited requests. If you need a higher limit, [contact support](mailto:support@privy.com).

**Sudden duplicate contacts.** You're likely using **Create Contact** instead of **Find or Create Contact**. Switch to the combo action to avoid creating duplicates when the contact already exists.

For any other issues, [contact Privy Support](mailto:support@privy.com) with the Zap name and a screenshot of the error.
