Make Actions¶
This document describes how to use the WhiteLabelCRO Integration API actions in Make scenarios.
How Actions Work¶
In Make, actions are implemented using HTTP modules that call the Integration API to create or modify records. Each action maps to a specific API endpoint and supports idempotency for safe retries.
Available Actions (9)¶
Lead Actions¶
Create Lead
- Creates a new lead with status "Lead - New"
- Endpoint: POST /api/v1/integrations/leads
- Required: first_name, last_name, email
- Optional: phone, city, state, zip, package_keyword, affiliate_id, external_id
- Returns: client_id, status, created_utc
Update Lead
- Modifies an existing lead's information
- Endpoint: PATCH /api/v1/integrations/leads/{client_id}
- Required: client_id
- Optional: first_name, last_name, email, phone, city, state, zip, employee_id, affiliate_id, external_id
- Returns: success, updated_utc, client_id
Update Lead Status
- Changes a lead's status (must remain a Lead status)
- Endpoint: PATCH /api/v1/integrations/leads/{client_id}/status
- Required: client_id, new_status or new_status_id
- Optional: changed_by_employee_id, status_note
- Returns: previous_status, new_status, updated_utc
Client Actions¶
Create Client
- Enrolls a new client in the system
- Endpoint: POST /api/v1/integrations/clients
- Required: first_name, last_name, email
- Optional: phone, status, employee_id, city, state, zip, affiliate_id, external_id
- Returns: client_id, status, created_utc
Update Client
- Modifies an existing client's information
- Endpoint: PATCH /api/v1/integrations/clients/{client_id}
- Required: client_id
- Optional: first_name, last_name, email, phone, city, state, zip, employee_id, affiliate_id, external_id
- Returns: success, updated_utc, client_id
Update Client Status
- Changes a client's lifecycle stage
- Endpoint: PATCH /api/v1/integrations/clients/{client_id}/status
- Required: client_id, new_status or new_status_id
- Optional: changed_by_employee_id, status_note
- Returns: previous_status, new_status, updated_utc
Add Client Note
- Attaches a note or comment to a client record
- Endpoint: POST /api/v1/integrations/clients/{client_id}/notes
- Required: client_id, text
- Optional: note_type, visibility, external_id
- Returns: client_note_id, created_utc
Affiliate Actions¶
Create Affiliate
- Adds a new referral partner
- Endpoint: POST /api/v1/integrations/affiliates
- Required: email, first_name, last_name
- Optional: phone, affiliate_code, commission_rate, affiliate_company_name, external_id
- Returns: employee_id, affiliate_code, is_approved, created_utc
- Note: Created affiliates are not automatically approved
Update Affiliate
- Modifies an existing affiliate's information
- Endpoint: PATCH /api/v1/integrations/affiliates/{employee_id}
- Required: employee_id
- Optional: first_name, last_name, email, phone, affiliate_company_name, commission_rate, is_active, is_approved, external_id
- Returns: success, updated_utc, employee_id
Implementing Actions in Make¶
Basic Setup¶
- Add HTTP module to your scenario
- Set Method: POST, PATCH, or DELETE (per action)
- Set URL: Full endpoint URL (e.g.,
https://your-api-url.com/api/v1/integrations/leads) - Set Connection: Select your WhiteLabelCRO connection
- Configure Body with required and optional fields
Request Body Configuration¶
Set Body type: Raw
Set Content type: JSON (application/json)
Example: Create Lead
{
"first_name": "{{first_name}}",
"last_name": "{{last_name}}",
"email": "{{email}}",
"phone": "{{phone}}",
"external_id": "hubspot_{{id}}"
}
Field Types¶
- String fields: Use variables like
{{field_name}} - ID fields: Use numeric values (e.g.,
client_id: 12345) - Status fields: Accept either ID (
new_status_id: 231) or name (new_status: "Client - Active") - Boolean fields: Use true/false (no quotes in JSON)
Dynamic URLs¶
For update operations with ID in URL:
https://your-api-url.com/api/v1/integrations/clients/{{client_id}}
Idempotency¶
Actions support idempotency via the external_id field:
- If you provide an external_id, the system checks for existing records
- Duplicate submissions update existing records rather than creating duplicates
- Use external_id to link WhiteLabelCRO records to external systems (HubSpot, Salesforce, etc.)
Example:
{
"email": "john@example.com",
"first_name": "John",
"last_name": "Doe",
"external_id": "hubspot_12345"
}
Error Handling¶
Common Errors¶
400 Bad Request - Missing required field - Invalid field value - Request validation failed
401 Unauthorized - Invalid or expired API key - Missing X-Api-Key header
404 Not Found - Record not found (for update actions) - Invalid client_id or employee_id
429 Too Many Requests - Rate limit exceeded - Wait and retry per Retry-After header
Handling Errors in Make¶
- Add Error handler route to HTTP module
- Use Router to handle different error types
- Log errors or send notifications
- Implement retry logic for transient errors (429, 503)
Example error condition: Check HTTP status code in filters.
Rate Limits¶
Actions count toward the "write" rate limit bucket: - 100 requests per minute per API key - Shared across all write operations
Monitor rate limit headers in HTTP module responses.
Response Handling¶
Success Response¶
Most actions return JSON with created/updated record details:
{
"client_id": 12345,
"status": "Lead - New",
"created_utc": "2026-01-28T10:30:00Z"
}
Access in subsequent modules:
- {{client_id}}
- {{status}}
Checking Success¶
Check HTTP status code: - 200 or 201 indicates success - Use Filter module to route based on status
Best Practices¶
Null Handling¶
Check for null values before sending:
- Use {{ifempty(phone; null)}} for optional fields
- Use Filter modules to skip null values
Batch Operations¶
For bulk creates/updates: 1. Use Iterator module to process arrays 2. Limit to 100 requests/minute 3. Add Sleep module between batches if needed
Error Recovery¶
- Enable Error handler on HTTP module
- Add logging or notification modules
- Implement retry logic for transient errors
- Store failed records for manual review
Scenario Organization¶
For complex integrations: - Break into multiple scenarios - Use webhooks or data stores for communication - Keep individual scenarios focused on single responsibility
Platform Compatibility¶
These same actions are available via: - Zapier - Using native app actions - n8n - Using HTTP Request nodes - Custom code - Direct API calls
All platforms use the same endpoints and field names.
Related Documentation¶
- Integration Capabilities Overview - Complete action field definitions
- Error Handling - Error response formats
- Rate Limits - Rate limiting details