From antigravity-awesome-skills
Guides Zapier and Make no-code automation patterns, best practices for reliable workflows, platform comparisons, pitfalls, and when to switch to code.
npx claudepluginhub sickn33/antigravity-awesome-skillsThis skill uses the workspace's default tool permissions.
No-code automation democratizes workflow building. Zapier and Make (formerly
Guides Zapier and Make patterns for reliable no-code automations, platform choices (simplicity vs power), pitfalls, principles, and when to switch to code.
Assists with Zapier integrations for business automation, generating configurations, code, and guidance for workflows, email processing, and spreadsheets.
Guides Zapier and Make automation patterns: platform comparison (simplicity vs power), reliable building, pitfalls, and when to graduate to code. Activates on zapier, make, integromat mentions.
Share bugs, ideas, or general feedback.
No-code automation democratizes workflow building. Zapier and Make (formerly Integromat) let non-developers automate business processes without writing code. But no-code doesn't mean no-complexity - these platforms have their own patterns, pitfalls, and breaking points.
This skill covers when to use which platform, how to build reliable automations, and when to graduate to code-based solutions. Key insight: Zapier optimizes for simplicity and integrations (7000+ apps), Make optimizes for power and cost-efficiency (visual branching, operations-based pricing).
Critical distinction: No-code works until it doesn't. Know the limits.
Single trigger leads to one or more actions
When to use: Simple notifications, data sync, basic workflows
""" [Trigger] → [Action] e.g., New Email → Create Task """
""" Zap Name: "Gmail New Email → Todoist Task"
TRIGGER: Gmail - New Email
ACTION: Todoist - Create Task
""" Scenario: "Gmail to Todoist"
[Gmail: Watch Emails] → [Todoist: Create a Task]
Gmail Module:
Todoist Module:
Chain of actions executed in order
When to use: Multi-app workflows, data enrichment pipelines
""" [Trigger] → [Action 1] → [Action 2] → [Action 3] Each step's output available to subsequent steps """
""" Zap: "New Lead → CRM → Slack → Email"
TRIGGER: Typeform - New Entry
ACTION: HubSpot - Create Contact
ACTION: Slack - Send Channel Message
ACTION: Gmail - Send Email
""" [Typeform] → [HubSpot] → [Slack] → [Gmail]
Different actions based on conditions
When to use: Different handling for different data types
""" ┌→ [Action A] (condition met) [Trigger] ───┤ └→ [Action B] (condition not met) """
""" Zap: "Route Support Tickets"
TRIGGER: Zendesk - New Ticket
PATH A: If priority = "urgent"
PATH B: If priority = "normal"
PATH C: Otherwise (catch-all)
""" [Zendesk: Watch Tickets] ↓ [Router] ├── Route 1: priority = urgent │ └→ [Slack] → [PagerDuty] │ ├── Route 2: priority = normal │ └→ [Slack] → [Asana] │ └── Fallback route └→ [Slack: overflow]
"""
Clean, format, and transform data between apps
When to use: Apps expect different data formats
""" Common transformations:
Text manipulation:
Date formatting:
Numbers:
Lookup tables:
""" Make has powerful built-in functions:
Text: {{lower(1.email)}} # Lowercase {{substring(1.name; 0; 10)}} # First 10 chars {{replace(1.text; "-"; "")}} # Remove dashes
Arrays: {{first(1.items)}} # First item {{length(1.items)}} # Count items {{map(1.items; "id")}} # Extract field
Dates: {{formatDate(1.date; "YYYY-MM-DD")}} {{addDays(now; 7)}}
Math: {{round(1.price * 0.8; 2)}} # 20% discount, 2 decimals """
Graceful handling of failures
When to use: Any production automation
"""
Built-in retry (automatic):
Error handling step: Zap:
Path-based handling: [Action] → Path A: Success → [Continue] → Path B: Error → [Alert + Log] """
""" Make has visual error handling:
[Module] ──┬── Success → [Next Module] │ └── Error → [Error Handler]
Error handler types:
Example: [API Call] → Error Handler (Ignore) → [Log to Airtable: "Failed: {{error.message}}"] → Continue scenario """
Process multiple items efficiently
When to use: Importing data, bulk operations
""" Zap: "Process Order Items"
TRIGGER: Shopify - New Order
LOOPING: For each item in line_items
Note: Each loop iteration counts as tasks! 10 items = 10 tasks consumed """
""" [Webhook: Receive Order] ↓ [Iterator: line_items] ↓ (processes each item) [Inventory: Adjust Stock] ↓ [Aggregator: Collect Results] ↓ [Slack: Summary Message]
Iterator creates one bundle per item. Aggregator combines results back together. Use Array Aggregator for collecting processed items. """
Time-based triggers instead of events
When to use: Daily reports, periodic syncs, batch jobs
""" Zap: "Daily Sales Report"
TRIGGER: Schedule by Zapier
ACTIONS:
""" Scenario Schedule Options:
[Scheduled Trigger: Every day at 8 AM] ↓ [Google Sheets: Search Rows] ↓ [Iterator: Process each row] ↓ [Aggregator: Sum totals] ↓ [Gmail: Send Report] """
Severity: CRITICAL
Situation: Configuring actions with dropdown selections
Symptoms: "Bad Request" errors. "Invalid value" messages. Action fails despite correct-looking input. Works when you select from dropdown, fails with dynamic values.
Why this breaks: Dropdown menus display human-readable text but send IDs to APIs. When you type "Marketing Team" instead of selecting it, Zapier tries to send that text as the ID, which the API doesn't recognize.
Recommended fix:
Add a "Find" or "Search" action first
Use the returned ID in subsequent actions
Add a Search module first
Map the ID to subsequent modules
Severity: CRITICAL
Situation: Running a Zap with frequent errors
Symptoms: Zap suddenly stops running. Email notification about auto-disable. "This Zap was automatically turned off" message. Data stops syncing.
Why this breaks: Zapier automatically disables Zaps that have 95% or higher error rate over 7 days. This prevents runaway automation failures from consuming your task quota and creating data problems.
Recommended fix:
Add error handling steps:
Use filters to prevent bad data:
Monitor task history regularly:
Severity: HIGH
Situation: Processing arrays or multiple items
Symptoms: Task quota depleted unexpectedly. One Zap run shows as 100+ tasks. Monthly limit reached in days. "You've used X of Y tasks" surprise.
Why this breaks: In Zapier, each iteration of a loop counts as separate tasks. If a webhook delivers an order with 50 line items and you loop through each, that's 50+ tasks for one order.
Recommended fix:
Order with 10 items, 5 actions per item: = 1 trigger + (10 items × 5 actions) = 51 tasks
Batch operations when possible:
Aggregate before sending:
Filter before looping:
Consider Make for high-volume:
[Iterator] → [Actions] → [Aggregator]
Severity: HIGH
Situation: App you're connected to releases updates
Symptoms: Working Zap suddenly fails. "Field not found" errors. Different data format in outputs. Actions that worked yesterday fail today.
Why this breaks: When connected apps update their APIs, field names can change, new required fields appear, or data formats shift. Zapier/Make integrations may not immediately update to match.
Recommended fix:
Severity: HIGH
Situation: Using OAuth connections to apps
Symptoms: "Authentication failed" errors. "Please reconnect" messages. Zaps fail after weeks of working. Multiple apps fail simultaneously.
Why this breaks: OAuth tokens expire. Some apps require re-authentication every 60-90 days. If the user who connected the app leaves the company, their connection may stop working.
Recommended fix:
Use service accounts for connections
Monitor connection health
Document who connected what
Prefer connections that don't expire
Severity: MEDIUM
Situation: Using webhooks as triggers
Symptoms: Some events never trigger the Zap. Same event triggers multiple times. Inconsistent automation behavior. "Works sometimes."
Why this breaks: Webhooks are fire-and-forget. If Zapier's receiving endpoint is slow or unavailable, the webhook may fail. Some systems retry webhooks, causing duplicates. Network issues lose events.
Recommended fix:
Add deduplication logic:
Use idempotency:
[Webhook Trigger] ↓ [Airtable: Find Records] - search by event_id ↓ [Filter: Only continue if not found] ↓ [Process Event] ↓ [Airtable: Create Record] - store event_id
Use polling triggers for critical data
Implement reconciliation:
Check source system retry settings:
Severity: MEDIUM
Situation: Scenarios with failing modules
Symptoms: Operations quota depleted quickly. Scenario runs "succeeded" but used many operations. Same scenario running more than expected.
Why this breaks: Make counts operations per module execution, including failed attempts and retries. Error handler modules consume operations. Scenarios that fail and retry can use 3-5x expected operations.
Recommended fix:
Successful run: Each module = 1 operation Failed + retry (3x): 3 operations for that module Error handler: Additional operation per handler module
Add error handlers that break early: [Module] → Error → [Break] (1 additional op) vs [Module] → Error → [Log] → [Alert] → [Update] (3+ ops)
Use ignore instead of retry when appropriate:
Pre-validate before expensive operations: [Check Data] → Filter → [API Call]
Optimize scenario scheduling:
Severity: MEDIUM
Situation: Setting up scheduled automations
Symptoms: Zap runs at wrong time. "9 AM" trigger fires at 2 PM. Different behavior on different days. DST causes hour shifts.
Why this breaks: Zapier shows times in your local timezone but may store in UTC. If you change timezones or DST occurs, scheduled times shift. Team members in different zones see different times.
Recommended fix:
Explicitly set timezone in schedule:
Document in Zap name:
Test around DST transitions:
For global teams:
Consider buffer times:
Works well with: workflow-automation, agent-tool-builder, backend, api-designer