| name | crm-integrations |
| description | CRM and automation integration patterns for lead gen sites. Webhooks, Zapier, Make, HubSpot, Pipedrive. Use for connecting forms to business systems. |
CRM Integrations Skill
Purpose
Connects lead generation forms to CRM systems and automation tools. Ensures no leads are lost through robust backup strategies and async processing.
Core Rules
- Always have backup — If CRM fails, data must be saved elsewhere (Google Sheets)
- Async processing — Don't block form submission on CRM integration
- Retry failed sends — Queue and retry integration failures with exponential backoff
- Log everything — Track all integration attempts for debugging and compliance
- Validate before send — Ensure data format matches CRM requirements using Zod
- GDPR compliance — Check consent before sending PII to third parties
- 4xx = don't retry — Client errors are not retryable, 5xx errors are
- Hash sensitive data — IP addresses should be hashed for privacy
- Track source — Always include UTM parameters and referrer for attribution
- Timeout protection — Set reasonable timeouts (10s) to prevent hanging requests
Integration Flow
Form → Validate → Save to Sheets → Queue CRM (async) → Thank You → [Background] CRM with retry
Key Environment Variables
| Variable | Purpose | Example |
|---|
HUBSPOT_ACCESS_TOKEN | HubSpot API auth | pat-xxx |
PIPEDRIVE_API_TOKEN | Pipedrive API auth | xxx |
ZAPIER_WEBHOOK_URL | Zapier webhook | https://hooks.zapier.com/... |
CRM_WEBHOOK_URL | Generic CRM endpoint | https://your-crm.com/webhook |
Error Handling Strategy
| Status Code | Action | Retryable |
|---|
| 2xx | Success | No |
| 4xx | Client error, log and skip | No |
| 5xx | Server error, retry with backoff | Yes |
| Timeout | Network issue, retry | Yes |
References
Detailed implementation code and examples:
Forbidden
- ❌ Blocking form response on CRM integration
- ❌ No backup storage for leads
- ❌ Exposing API tokens to client-side code
- ❌ Sending PII without user consent
- ❌ No retry logic for transient failures
- ❌ Ignoring failed integrations without logging
- ❌ Using GET requests for webhooks (always POST)
- ❌ Storing API tokens in version control
Definition of Done