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

# Zapier

> Connect InstantCampaign to 8,000+ apps with the official Zapier integration — instant triggers for contacts, lists, forms and email events, and actions to add contacts, record goals, send email and start automations.

The official **InstantCampaign** app on Zapier connects with a click — no API key to copy. Pick a workspace, allow access, and build Zaps from InstantCampaign's triggers and actions like any other app.

<Note>
  The Zapier app is in **beta** while it collects its first users. If you don't see it in Zapier yet, the [webhook and API-key route](/integrations/automation-tools) works with every workflow tool today.
</Note>

## Connect

<Steps>
  <Step title="Add InstantCampaign to a Zap">
    In the Zap editor, search for **InstantCampaign** as the trigger or action app and choose **Sign in**.
  </Step>

  <Step title="Pick a workspace">
    A small InstantCampaign page opens. If you belong to several workspaces, choose the one this Zap should work with. You need the **API keys: manage** permission there — Owners and Admins have it.
  </Step>

  <Step title="Allow access">
    Review what the app may do and click **Allow access**. The connection is named after the workspace, so several workspaces can be connected side by side.
  </Step>
</Steps>

You can see and disconnect every connected app under **Settings → Developers → Connected apps**. Disconnecting stops the Zap's access immediately.

## Triggers

Every trigger is **instant**: InstantCampaign notifies Zapier the moment it happens.

| Trigger | Fires when |
| - | - |
| New Contact | A contact is created — dashboard, import, form, API or a transactional send |
| Contact Updated | A contact's fields change (`changedFields` says which) |
| Contact Unsubscribed | A contact opts out of everything |
| Contact Confirmed (Double Opt-In) | A pending contact confirms |
| New List Subscriber | A contact becomes an active member of a list (optionally one list) |
| Contact Removed From List | A contact leaves a list (optionally one list) |
| New Form Submission | Someone submits one of your forms |
| New Event or Goal | A custom event or goal is recorded for a contact |
| Email Bounced / Spam Complaint | The provider reports a bounce or complaint |
| Link Clicked | A contact clicks a tracked link |
| Campaign Completed | A campaign send finishes, with its counts |
| Transactional Email Sent | A transactional email is accepted by the provider |

Every contact trigger carries the whole contact, including your **custom fields** (as `customFields → <key>`), so a Zap rarely needs a second lookup.

## Actions and searches

| Action | Does |
| - | - |
| Create or Update Contact | Upserts on email; profile fields, your custom fields, and optionally a list |
| Update Contact | Changes an existing contact |
| Add Contact to List / Remove Contact From List | Per-list subscription |
| Unsubscribe Contact | Global opt-out (transactional email still reaches them) |
| Record Event or Goal | A custom event, or a goal with a value — starts any journey listening for it |
| Send Transactional Email | One email from a template with data for its variables |
| Start Contact on Journey | Enters a contact into an API-triggered automation |
| Create List | A new list |
| **Find Contact** (search) | By email; pairs with *Create or Update Contact* as *Find or Create* |
| **Find List** (search) | By exact name |

## Ideas

* **Google Sheets → Create or Update Contact**: a spreadsheet becomes a list.
* **Typeform / Calendly → Add Contact to List**: bookings and answers feed a segment.
* **Stripe / Shopify → Record Event or Goal**: purchases power RFM segments and goal analytics.
* **New Contact → Slack**: a post per signup.
* **Email Bounced → your CRM**: mark the address invalid where your sales team looks.

## Permissions and troubleshooting

* The connection acts with the scopes you approved. If a step fails with *missing the "…" permission*, reconnect the account: the app now asks for a permission it did not before.
* Zapier refreshes the connection automatically. If a refresh is refused (the app was disconnected in Settings, or the workspace suspended), Zapier asks you to reconnect.
* Triggers are delivered with retries for about 34 hours. A trigger that has been turned off in Zapier answers `410`, and InstantCampaign stops sending to it.
* Building from your own code instead? The same API is documented at **Settings → Developers → API reference**, and works with a workspace API key or an OAuth token.
