5616e31192
The Zapier SDK (@zapier/zapier-sdk) gives AI agents direct TypeScript access to 8,000+ app integrations without building OAuth flows. Updates the integration guide with SDK quick start, CLI commands, methods, and marketing automation examples. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5.6 KiB
5.6 KiB
Zapier
Workflow automation platform connecting 8,000+ apps. The Zapier SDK gives AI agents direct access to any app's actions without building OAuth flows or reverse-engineering APIs.
Capabilities
| Integration | Available | Notes |
|---|---|---|
| API | ✓ | REST API for Zaps, tasks, and webhooks |
| MCP | ✓ | Available via Zapier MCP server |
| CLI | ✓ | @zapier/zapier-sdk-cli for app discovery and type generation |
| SDK | ✓ | @zapier/zapier-sdk — TypeScript SDK for 8,000+ app integrations |
Authentication
Legacy API (Zaps management)
- Type: API Key
- Header:
X-API-Key: {api_key} - Get key: Settings > API in Zapier account
SDK Authentication
Browser-based login (development):
npx zapier-sdk login
Server-side (production):
- Client Credentials — store as environment variables
- Direct token — set
ZAPIER_CREDENTIALSenv var
Browser-based login only works locally. Use Client Credentials for any server-side deployment.
SDK Quick Start
Install
npm install @zapier/zapier-sdk
npm install -D @zapier/zapier-sdk-cli @types/node typescript
npm pkg set type=module
Initialize
import { createZapierSdk } from "@zapier/zapier-sdk";
const zapier = createZapierSdk();
CLI Commands
| Command | Purpose |
|---|---|
npx zapier-sdk login |
Authenticate (dev only) |
npx zapier-sdk list-apps --search "query" |
Search available apps |
npx zapier-sdk list-actions APP_KEY |
List actions for an app |
npx zapier-sdk add [app-key] |
Generate TypeScript types |
SDK Methods
| Method | Purpose |
|---|---|
zapier.listConnections() |
List authenticated app connections |
zapier.findFirstConnection() |
Find a specific connection |
zapier.runAction() |
Execute an action on a connected app |
zapier.apps.slack() |
App proxy pattern for clean syntax |
zapier.fetch() |
Custom authenticated API calls |
Example: Send a Slack Message
import { createZapierSdk } from "@zapier/zapier-sdk";
const zapier = createZapierSdk();
const slack = await zapier.apps.slack();
await slack.sendChannelMessage({
channel: "#marketing",
message: "Campaign launched!"
});
Example: Create a HubSpot Contact
const hubspot = await zapier.apps.hubspot();
await hubspot.createContact({
email: "lead@example.com",
firstName: "Jane",
lastName: "Doe"
});
Pagination
Use .items() for large datasets:
const contacts = await hubspot.listContacts({ maxItems: 100 });
for await (const contact of contacts.items()) {
console.log(contact.email);
}
Governance Note
Direct API calls via zapier.fetch() are not subject to org app/action restriction policies. Use pre-built actions where possible if your org has governance requirements.
Zaps API (Legacy)
List Zaps
GET https://api.zapier.com/v1/zaps
Get Zap details
GET https://api.zapier.com/v1/zaps/{zap_id}
Turn Zap on/off
POST https://api.zapier.com/v1/zaps/{zap_id}/on
POST https://api.zapier.com/v1/zaps/{zap_id}/off
Get task history
GET https://api.zapier.com/v1/zaps/{zap_id}/tasks
Get profile info
GET https://api.zapier.com/v1/profiles/me
Webhooks (Triggers)
Catch Hook (receive data)
Create a "Webhooks by Zapier" trigger to receive data:
POST https://hooks.zapier.com/hooks/catch/{webhook_id}/
{
"event": "user.created",
"user_id": "123",
"email": "user@example.com"
}
Send data to Zapier
Most common: trigger a Zap from your app:
POST https://hooks.zapier.com/hooks/catch/{account_id}/{hook_id}/
{
"name": "John Doe",
"email": "john@example.com",
"plan": "pro"
}
Common Marketing Automations
With SDK (recommended for agents)
// Lead capture to CRM
const hubspot = await zapier.apps.hubspot();
await hubspot.createContact({ email, firstName, lastName });
// New customer notification
const slack = await zapier.apps.slack();
await slack.sendChannelMessage({ channel: "#revenue", message: `New customer: ${email}` });
// Add to email sequence
const customerio = await zapier.apps.customerio();
await customerio.createOrUpdatePerson({ email, plan: "pro" });
With Zaps (no-code)
- Typeform → Zapier → HubSpot (lead capture)
- Stripe → Zapier → Slack (new customer alerts)
- Form submission → Zapier → Customer.io (email sequences)
- New review → Zapier → Slack (social proof)
- New referral → Zapier → Spreadsheet + Slack (referral tracking)
Webhook Payload Structure
When sending to Zapier, structure data as flat JSON:
{
"customer_name": "John Doe",
"customer_email": "john@example.com",
"plan_name": "Pro",
"plan_price": 99,
"signup_date": "2024-01-15"
}
Key Concepts
- Zap - Automated workflow (no-code)
- SDK - Programmatic access to 8,000+ app integrations
- Trigger - Event that starts a Zap
- Action - Task performed by Zap or SDK
- Task - Single action execution
- Connection - Authenticated link to an app (shared between Zaps and SDK)
When to Use
- SDK: When an AI agent needs to interact with any app directly — send messages, create records, sync data
- Zaps: When you need always-on automation without code
- Webhooks: When triggering workflows from your own app
- API: When managing Zaps programmatically
Rate Limits
- API: 100 requests per minute
- SDK: Rate limits per connected app
- Task limits by plan tier
Relevant Skills
- email-sequence
- analytics-tracking
- referral-program
- revops