Make Integration
Automate AssistLoop with Make
Make Integration API Reference
The AssistLoop API is specifically designed to integrate seamlessly with Make (formerly Integromat), enabling you to build powerful automation scenarios with visual workflows. Our API follows REST principles with predictable resource-oriented URLs, accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes and OAuth 2.0 authentication.
What You Can Build
With the AssistLoop Make integration, you can:
- Trigger Scenarios when new conversations start or when AI requests human assistance
- Automatically respond to customer conversations from other apps
- Close conversations as part of your scenario automation
- Query conversation history to feed data into your other tools
- Build custom scenarios connecting AssistLoop with 1,500+ apps on Make
Base URL
https://api.assistloop.ai/v1Authentication
The AssistLoop Make integration uses OAuth 2.0 for secure authentication. When you connect AssistLoop to Make, you'll be prompted to authorize the connection through a secure OAuth flow. Make will automatically handle token management, including automatic token refresh when needed.
For Make Users
You don't need to manually manage tokens. Simply click "Add" next to the Connection field in any AssistLoop module and follow the authorization prompts.
For Developers
If you're building custom Make modules or testing the API directly, all requests must include your access token in the Authorization header:
Authorization: Bearer YOUR_ACCESS_TOKENAll API requests must be made over HTTPS. Calls made over plain HTTP will fail.
Example Request with Authentication
curl https://api.assistloop.ai/v1/oauth/me \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"OAuth 2.0 Authorization Flow
AssistLoop uses OAuth 2.0 to securely connect with Make. This section describes the technical details of how Make obtains and refreshes access tokens when you connect your AssistLoop account.
Most Make users won't need to understand these technical details - Make handles the OAuth flow automatically. This section is primarily for developers building or debugging Make integrations.
OAuth 2.0 Endpoints
| Endpoint | URL | Purpose |
|---|---|---|
| Authorization | POST /api/v1/oauth/authorize | Obtain authorization code |
| Token | POST /oauth/token | Exchange code for token or refresh access token |
The /oauth/token endpoint is at the root level (not under /api/v1).
Available Scopes
| Scope | Description |
|---|---|
read:conversations | Read conversations and conversation details (default) |
read:messages | Read messages within conversations (default) |
manage:webhooks | Create and manage webhook subscriptions (default) |
write:conversations | Update conversation status and response mode |
Default Scopes: If no scopes are specified, the token will have read:conversations, read:messages, and manage:webhooks scopes.
Make OAuth Configuration
When setting up your Make integration, use the following OAuth configuration:
OAuth Configuration Parameters
| Parameter | Value |
|---|---|
| Authorization URL | https://api.assistloop.ai/v1/oauth/authorize |
| Token URL | https://api.assistloop.ai/oauth/token |
| Scope | read:conversations read:messages manage:webhooks write:conversations |
| Client ID | (Provided in AssistLoop Dashboard) |
| Client Secret | (Provided in AssistLoop Dashboard) |
| Redirect URI | https://www.integromat.com/oauth/cb/app |
Make Connection Settings
- Connection Name: AssistLoop OAuth
- Authorization Method: OAuth 2.0
- Grant Type: Authorization Code
- Show advanced settings: Yes
- Authorization URL Structure: Custom
- Token Request Method: POST (JSON)
- Scope Separator: Space
- Automatically Refresh: Yes
Test API Call
Configure Make's test API call to verify authentication:
- URL:
https://api.assistloop.ai/v1/oauth/me - Method: GET
- Expected Response: JSON with
uuid,name, andemailfields
Errors
AssistLoop uses conventional HTTP response codes to indicate the success or failure of an API request. In general: Codes in the 2xx range indicate success. Codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted, a resource was not found, etc.). Codes in the 5xx range indicate an error with AssistLoop's servers (these are rare).
HTTP Status Code Summary
| Code | Status | Description |
|---|---|---|
| 200 | OK | Everything worked as expected. |
| 400 | Bad Request | The request was unacceptable, often due to missing a required parameter. |
| 401 | Unauthorized | No valid API token provided. |
| 403 | Forbidden | The API token doesn't have permissions to perform the request. |
| 404 | Not Found | The requested resource doesn't exist. |
| 422 | Validation Error | The request parameters failed validation. |
| 429 | Too Many Requests | Too many requests hit the API too quickly. Please retry with exponential backoff. |
| 500 | Internal Server Error | Something went wrong on AssistLoop's end. |
Error Response Format
{
"error": "Conversation not found",
"message": "The requested conversation could not be found or you don't have access to it."
}OAuth Endpoints
Get Current User
Retrieves information about the currently authenticated user. Use this endpoint to verify your authentication token and get details about the associated account.
Endpoint: GET /oauth/me
Example Request
curl https://api.assistloop.ai/v1/oauth/me \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Response
{
"uuid": "usr_abc123",
"name": "John Doe",
"email": "[email protected]"
}Webhook Endpoints (Make Instant Triggers)
Webhooks power Make instant triggers for your AssistLoop account. When you set up an instant trigger in Make (like "New Conversation" or "Human Handoff Required"), Make automatically subscribes to the appropriate webhook endpoint. When the event occurs in AssistLoop, we instantly notify Make to trigger your scenario.
Subscribe to Webhooks
Creates a new webhook subscription for Make instant triggers. When you enable an instant trigger in Make, Make automatically calls this endpoint to subscribe to events. When the event occurs in AssistLoop, we send the data to Make to trigger your scenario.
Endpoint: POST /webhooks/subscribe
For Make Users: This happens automatically when you set up an instant trigger. You don't need to call this endpoint manually.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| organization_uuid | string | Yes | The UUID of your organization (workspace). |
| agent_uuid | string | Yes | The UUID of the agent to monitor for events. |
| target_url | string | Yes | The URL where webhook payloads will be sent. Must be a valid HTTPS URL. |
| event | string | Yes | The type of event to subscribe to. One of: new_conversation, human_handoff_required. |
| platform | string | Yes | Must be make for Make integrations. |
| external_id | string | No | Optional external identifier for your integration (max 255 characters). |
Example Request
curl -X POST https://api.assistloop.ai/v1/webhooks/subscribe \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"organization_uuid": "org_xyz789",
"agent_uuid": "agt_abc123",
"target_url": "https://hook.integromat.com/abcd1234efgh5678",
"event": "new_conversation",
"platform": "make"
}'Response
{
"data": {
"id": "whk_xyz789",
"secret": "whsec_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
},
"message": "Webhook subscribed successfully"
}Important
The secret field is returned only once during subscription. Store it securely to verify webhook signatures.
Webhook Event Types (Make Instant Triggers)
New Conversation
Event: new_conversation
Triggers your scenario when a customer starts a new conversation with your AI agent. Perfect for logging conversations, sending notifications, or creating tickets.
Human Handoff Required
Event: human_handoff_required
Triggers your scenario when the AI determines human assistance is needed. Use this to notify your support team, create urgent tickets, or escalate to your help desk system.
Webhook Payload Examples
New Conversation Event
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"event": "new_conversation",
"timestamp": "2024-11-12T10:30:00Z",
"data": {
"conversation": {
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"status": true,
"response_mode": "ai",
"created_at": "2024-11-12T10:30:00Z"
},
"agent": {
"uuid": "agt_abc123",
"name": "Customer Support Agent"
},
"chat_user": {
"name": "Jane Smith",
"email": "[email protected]"
},
"organization": {
"uuid": "org_xyz789",
"name": "Acme Corporation"
},
"initial_message": {
"uuid": "msg_abc123",
"content": "Hi, I need help with my order",
"type": "guest",
"created_at": "2024-11-12T10:30:00Z"
}
}
}Human Handoff Required Event
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"event": "human_handoff_required",
"timestamp": "2024-11-12T10:35:00Z",
"data": {
"conversation": {
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"status": true,
"response_mode": "human",
"created_at": "2024-11-12T10:30:00Z"
},
"agent": {
"uuid": "agt_abc123",
"name": "Customer Support Agent"
},
"chat_user": {
"name": "Jane Smith",
"email": "[email protected]"
},
"organization": {
"uuid": "org_xyz789",
"name": "Acme Corporation"
},
"last_message": {
"uuid": "msg_def456",
"content": "I need to speak with a human agent",
"type": "guest",
"created_at": "2024-11-12T10:35:00Z"
}
}
}Unsubscribe from Webhooks
Removes a webhook subscription. Make automatically calls this endpoint when you turn off or delete an instant trigger.
Endpoint: DELETE /webhooks/unsubscribe/{uuid}
For Make Users: This happens automatically when you disable or delete an instant trigger. You don't need to call this endpoint manually.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| uuid | string | Yes | The UUID of the webhook subscription. |
Example Request
curl -X DELETE https://api.assistloop.ai/v1/webhooks/unsubscribe/whk_xyz789 \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Response
{
"data": null,
"message": "Webhook unsubscribed successfully"
}Remote Procedures (Make Dropdowns)
Remote Procedure Calls (RPCs) power the dropdown selectors in Make modules, allowing you to dynamically select workspaces, agents, and conversations.
Get Workspaces
Retrieve a list of workspaces (organizations) you are a member of. Used in Make dropdown selectors.
Endpoint: GET /my/organizations
Example Request
curl https://api.assistloop.ai/v1/my/organizations \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Response
[
{
"organization_uuid": "org_abc123xyz",
"id": "org_abc123xyz",
"name": "Acme Corp"
},
{
"organization_uuid": "org_def456uvw",
"id": "org_def456uvw",
"name": "Tech Startup Inc"
}
]Get Agents
Retrieve a list of AI agents in a specific workspace. Used in Make dropdown selectors.
Endpoint: GET /organizations/{organization_uuid}/agents
Path Parameters
| Parameter | Type | Description |
|---|---|---|
| organization_uuid | string | UUID of the workspace |
Example Request
curl https://api.assistloop.ai/v1/organizations/org_abc123xyz/agents \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Response
[
{
"agent_uuid": "agent_abc123",
"id": "agent_abc123",
"name": "Support Bot"
},
{
"agent_uuid": "agent_def456",
"id": "agent_def456",
"name": "Sales Assistant"
}
]Get Conversations
Retrieve a list of conversations for a specific agent. Used in Make dropdown selectors.
Endpoint: GET /automation/agents/{agent_uuid}/conversations/list
Path Parameters
| Parameter | Type | Description |
|---|---|---|
| agent_uuid | string | UUID of the agent |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| per_page | number | No | Number of results (default: 100) |
Example Request
curl "https://api.assistloop.ai/v1/automation/agents/agent_abc123/conversations/list?per_page=100" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Response
[
{
"id": "conv_abc123xyz",
"uuid": "conv_abc123xyz",
"session_id": "sess_xyz789",
"response_mode": "ai",
"status": true,
"last_message_seen": false,
"chat_user": {
"name": "John Doe",
"email": "[email protected]",
"country_code": "+1",
"chat_user_id": "user_12345"
}
}
]Conversation Endpoints (Make Actions)
List Conversations
Query and filter conversations for a specific agent. Use this in Make scenarios to find conversations matching specific criteria.
Endpoint: GET /automation/agents/{agentUuid}/conversations/list
Make Use Cases
- Find open conversations to send daily summaries to Slack
- Check for conversations in "human" mode to assign to support agents
- Export conversation lists to Google Sheets for reporting
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| agentUuid | string | Yes | The UUID of the agent. |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| status | integer | No | Filter by conversation status. 0 for closed, 1 for active/open. |
| response_mode | string | No | Filter by response mode. One of: ai, human. |
| created_from | string | No | Filter conversations created after this date (ISO 8601 format). |
| created_to | string | No | Filter conversations created before this date (ISO 8601 format). |
| per_page | integer | No | Number of conversations per page (min: 10, max: 100, default: 20). |
Example Request
curl "https://api.assistloop.ai/v1/automation/agents/agt_abc123/conversations/list?status=1&response_mode=ai&per_page=20" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Response
The endpoint returns a direct array of conversation objects (not wrapped in a data field).
[
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"session_id": "sess_abc123",
"response_mode": "ai",
"status": true,
"last_message_seen": false,
"deleted_at": null,
"chat_user": {
"name": "Jane Smith",
"email": "[email protected]",
"country_code": "US",
"chat_user_id": "chu_xyz123"
}
}
]Field Descriptions
status: Boolean -truefor active/open,falsefor closedresponse_mode: String - Eitherai(AI responding) orhuman(human agent responding)last_message_seen: Boolean - Whether the last message has been seenchat_user: Object containing customer information
Get Recent Conversation Samples
Provides sample data when you're setting up a Make instant trigger. When you click "Run once" to test the webhook in Make, this endpoint returns recent conversations so you can see what data your scenario will receive.
Endpoint: GET /automation/agents/{agentUuid}/conversations/recent-sample
For Make Users: This runs automatically when you test your instant trigger during scenario setup.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| agentUuid | string | Yes | The UUID of the agent. |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | integer | No | Number of samples to return (default: 5, max: 10). |
| type | string | No | Sample type. One of: new_conversation, human_handoff_required (default: new_conversation). |
Example Request
curl "https://api.assistloop.ai/v1/automation/agents/agt_abc123/conversations/recent-sample?limit=3&type=new_conversation" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Response
Returns an array of webhook payload samples in the same format as actual webhook deliveries.
[
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"event": "new_conversation",
"timestamp": "2024-11-12T10:30:00Z",
"data": {
"conversation": {
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"status": true,
"response_mode": "ai",
"created_at": "2024-11-12T10:30:00Z"
},
"agent": {
"uuid": "agt_abc123",
"name": "Customer Support Agent"
},
"chat_user": {
"name": "Sample Customer",
"email": "[email protected]"
},
"organization": {
"uuid": "org_xyz789",
"name": "Acme Corporation"
},
"initial_message": {
"uuid": "msg_sample123",
"content": "Hello, I have a question",
"type": "guest",
"created_at": "2024-11-12T10:30:00Z"
}
}
}
]When type=human_handoff_required, the response format changes slightly - initial_message becomes last_message and the event field is set to human_handoff_required.
Close Conversation
Use this Make action to automatically close conversations as part of your workflow. Great for marking conversations as complete after creating a help desk ticket, logging to your CRM, or after a certain amount of time.
Endpoint: POST /automation/conversations/{conversationUuid}/close
Rate Limit
10 requests per minute
Make Use Cases
- Close conversations after creating a Zendesk ticket
- Auto-close conversations that have been idle for 24 hours
- Mark conversations as complete after successful payment in Stripe
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| conversationUuid | string | Yes | The UUID of the conversation. |
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| platform | string | Yes | Must be make for Make integrations. |
Example Request
curl -X POST https://api.assistloop.ai/v1/automation/conversations/550e8400-e29b-41d4-a716-446655440000/close \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"platform": "make"
}'Response
{
"status": "conversation_closed",
"platform": "make"
}Message Endpoints (Make Actions)
Find Messages
Use this Make action to retrieve the full message history from a conversation. Perfect for including context when creating support tickets, logging conversations, or analyzing customer interactions.
Endpoint: GET /automation/conversations/{conversationUuid}/messages/find
Make Use Cases
- Fetch conversation history when creating a Zendesk ticket
- Log full conversation to Airtable or Google Sheets
- Send conversation transcript via email when human handoff is requested
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| conversationUuid | string | Yes | The UUID of the conversation. |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| created_from | string | No | Filter messages created after this date (ISO 8601 format). |
| created_to | string | No | Filter messages created before this date (ISO 8601 format). |
| per_page | integer | No | Number of messages per page (min: 10, max: 100, default: 20). |
Example Request
curl "https://api.assistloop.ai/v1/automation/conversations/550e8400-e29b-41d4-a716-446655440000/messages/find?per_page=20" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Response
Returns a direct array of message objects, ordered by created_at descending (newest first).
[
{
"id": "msg_abc124",
"uuid": "660e8400-e29b-41d4-a716-446655440002",
"content": "I'd be happy to help you with your order. Could you provide your order number?",
"type": "agent",
"is_read": null,
"status": null,
"responder_type": "ai",
"emailed_at": null,
"email_seen": false,
"email_opened_at": null,
"via": "web",
"created_at": "2024-11-12T10:30:15.000000Z",
"user_feedback": null,
"sender_name": "Customer Support Agent",
"attachments": []
},
{
"id": "msg_abc123",
"uuid": "660e8400-e29b-41d4-a716-446655440001",
"content": "I need help with my order",
"type": "guest",
"is_read": null,
"status": null,
"responder_type": null,
"emailed_at": null,
"email_seen": false,
"email_opened_at": null,
"via": "web",
"created_at": "2024-11-12T10:30:00.000000Z",
"user_feedback": null,
"sender_name": "Jane Smith",
"attachments": []
}
]Field Descriptions
type: Message type -guest(customer),agent(AI or human), orplatform_action(system messages - excluded from results)responder_type: Who/what responded -ai,human_assistant, ornullfor guest messagessender_name: Display name of the sender (automatically computed)attachments: Array of file attachments associated with the messageuser_feedback: Customer feedback on AI response -positive,negative,not-allowed, ornull
Reply to Conversation
Use this Make action to automatically send messages to customers in response to events in other apps. Messages are sent as if from a human support agent.
Endpoint: POST /automation/conversations/{conversationUuid}/reply
Make Use Cases
- Send a message when a help desk ticket is created: "We've created ticket #12345"
- Notify customers when their order ships via your e-commerce platform
- Reply with order status when customer asks about their order
- Send proactive messages based on events in your CRM
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| conversationUuid | string | Yes | The UUID of the conversation. |
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| content | string | Yes | The message content to send. |
Example Request
curl -X POST https://api.assistloop.ai/v1/automation/conversations/550e8400-e29b-41d4-a716-446655440000/reply \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"content": "Thank you for contacting us. A support agent will be with you shortly."
}'Response
{
"status": "sent",
"message_id": "msg_xyz789"
}Important Notes
- The message is sent as type
agentwith responder_typehuman_assistant - The conversation's
response_modeis automatically switched tohuman - The message is broadcast in real-time to the customer
- The authenticated user is recorded as the human responder
Common Make Scenario Examples
Scenario 1: Slack Notification for New Conversations
Goal
Get instant Slack notifications when customers start conversations with your AI agent.
Instant trigger that fires when a customer starts a new conversation.
Configure the Slack module to post details to your desired channel.
Configuration
- Map
{{data.chat_user.name}}to include customer name - Map
{{data.initial_message.content}}to show first message - Include conversation URL:
https://app.assistloop.ai/conversations/{{data.conversation.uuid}}
Benefits
- Keep your team informed in real-time
- No customer conversation goes unnoticed
- Quick visibility into conversation volume
Scenario 2: Create Zendesk Ticket on Human Handoff
Goal
Automatically create a Zendesk ticket with full conversation context when AI needs human help.
Instant trigger that starts the scenario.
Retrieve conversation history for context.
Process each message and combine them into a transcript.
Use aggregated conversation history in ticket description, add customer email as requester, and set priority to high.
Message: "Thanks! We've created ticket #{{ticket_id}} and a team member will help you shortly."
Close the conversation to prevent additional AI responses.
Benefits
- Zero delay between AI handoff and ticket creation
- Full conversation context automatically included
- Customer gets immediate acknowledgment
- Conversation automatically closed to prevent AI responses
Scenario 3: Daily Conversation Summary
Goal
Get a daily digest of conversation metrics delivered to your team's Slack channel.
Start the workflow on a schedule.
Filter with created_from = yesterday's date.
Calculate metrics like totals, open vs closed, and AI vs human counts.
Share the summarized metrics with the team.
Example Slack Message
📊 Daily AssistLoop Report - November 12, 2024
✅ Total Conversations: 47
🤖 Handled by AI: 39 (83%)
👤 Required Human Help: 8 (17%)
📭 Currently Open: 5
✓ Closed: 42
🔗 View open conversations in dashboardScenario 4: Auto-Close Inactive Conversations
Goal
Keep your conversation list clean by automatically closing conversations that haven't had activity for 24 hours.
Kick off the clean-up scenario.
Filter for Status = Open (1).
Process each conversation and continue only if updated_at is more than 24 hours ago.
Message: "We haven't heard back from you. I'm marking this conversation as complete. Feel free to start a new conversation anytime!"
Close the inactive conversation.
Pro Tips
- Adjust the time threshold based on your business hours
- Customize the goodbye message based on conversation context
- Add error handlers to prevent the scenario from failing on individual errors
Rate Limiting
To ensure reliable service for all Make users, we implement rate limits on API endpoints:
General Endpoints
60 requests per minute per connected account
Close Conversation
10 requests per minute
Webhook Deliveries
Automatic retries up to 3 times with exponential backoff
For Make Users: These rate limits are generous for typical scenario usage. If you hit a rate limit, Make will receive a 429 Too Many Requests response. Consider adding Sleep modules between API calls when processing many items.
429 Error Response
{
"message": "Too Many Attempts.",
"retry_after": 60
}Best Practices for Make Scenarios
Designing Efficient Scenarios
Use Instant Triggers When Possible
- Instant triggers (webhooks) are faster and more reliable than polling
- They're more efficient and don't consume as many operations
- Set up "New Conversation" and "Human Handoff" as instant triggers
Handle Multiple Results Properly
- Use Iterator modules when processing multiple conversations or messages
- Add error handlers to prevent the entire scenario from failing
- Use filters to process only relevant items
Optimize Data Mapping
- Map only the fields you actually need
- Use Make's built-in functions for date/text formatting
- Store frequently used values in variables or data stores
Error Handling in Make
Add Error Handlers
- Right-click any module → "Add error handler"
- Choose "Rollback" for critical operations
- Choose "Ignore" for non-critical operations
- Use "Resume" + notification for logging errors
Common Error Patterns
Error Handler → Slack notification → Stop
Error Handler → Email → Rollback → Stop
Error Handler → Log to Google Sheets → ResumeOptimizing API Calls
Reduce Unnecessary Calls
- Don't fetch full message history if you only need the latest message
- Use pagination wisely - start with 10-20 items
- Filter conversations by date to avoid fetching old data
- Cache frequently accessed data using Data Stores
Rate Limit Considerations
- Add 1-2 second Sleep modules between Close Conversation actions
- For bulk operations, use scheduling to spread calls over time
- Monitor your scenario execution history for 429 errors
Data Handling Best Practices
Understanding Field Types
| Field Type | Format | Example | Notes |
|---|---|---|---|
| Conversation Status | Boolean | true = open, false = closed | Use 1 in filters, not true |
| Response Mode | String | ai or human | Use for routing logic |
| Message Types | String | guest, agent | Filter customer vs AI messages |
| Timestamps | ISO 8601 | 2024-11-12T10:30:00Z | Use formatDate() function |
Handling Missing Data
- Customer email and name may be null for anonymous conversations
- Use Make's
if()function to provide defaults:{{if(data.chat_user.email; data.chat_user.email; "No email provided")}} - Check for empty arrays before iterating (attachments, messages)
- Use Error Handlers to catch missing required fields
Working with Message Content
- Messages may contain line breaks - use
replace()to clean up - Check
attachmentsarray length before accessing - User feedback field is usually null (only set if customer rated the response)
- Use Text Parser modules for extracting specific information
Security Recommendations
Protect Customer Data
- Don't log customer messages to public channels
- Be careful when sending conversation data to third-party apps
- Use Make's data encryption features for sensitive information
- Regularly review which apps have access to your AssistLoop data
OAuth Token Management
- Never share your AssistLoop connection with others
- Use separate connections for development and production scenarios
- Reconnect if you suspect token compromise
- Make handles token refresh automatically - don't try to manually refresh
Webhook Security
- Make automatically validates webhook signatures
- Webhook URLs are unique and secret - don't share them
- If a webhook URL is compromised, delete and recreate the instant trigger
- Use HTTPS only - AssistLoop rejects HTTP webhook URLs
Testing Your Integration
First, create a connection in Make to test authentication:
- Add any AssistLoop module to your scenario
- Click "Add" next to Connection
- Enter Connection name: "AssistLoop Production"
- Click "Continue" and authorize
The OAuth test will call GET /api/v1/oauth/me automatically.
Create a test scenario:
- Add "AssistLoop: New Conversation" instant trigger
- Click "Run once" to activate the webhook
- Create a test conversation in your AssistLoop dashboard
- Verify the data structure in Make's execution history
- Add "AssistLoop: List Conversations" module
- Select your workspace and agent
- Set filters (status=1 for open conversations)
- Run once and inspect the output
- Get a conversation UUID from previous step
- Add "AssistLoop: Find Messages" module
- Set the conversation UUID
- Add "AssistLoop: Reply to Conversation" module
- Test sending a message
- Add "AssistLoop: Close Conversation" module
- Use a test conversation UUID
- Run once and verify conversation is closed in dashboard
Troubleshooting
Common Issues
Getting Help
For Make integration support:
- Make Help: https://www.make.com/en/help/tools
- AssistLoop Documentation: https://assistloop.ai/docs
- Support Email: [email protected]
- Dashboard: https://app.assistloop.ai
When contacting support, please include:
- Screenshot of your Make scenario
- Execution history showing the error
- Your organization UUID
- Agent UUID (if applicable)
- Full error message
- Steps to reproduce
Module Reference Summary
Instant Triggers (Webhooks)
| Module Name | Event Type | Description |
|---|---|---|
| New Conversation | new_conversation | Triggers when conversation starts |
| Human Handoff Requested | human_handoff_required | Triggers when AI needs human help |
Actions
| Module Name | Endpoint | Description |
|---|---|---|
| List Conversations | GET /conversations/list | Query conversations with filters |
| Find Messages | GET /messages/find | Get messages from a conversation |
| Reply to Conversation | POST /reply | Send a message to customer |
| Close Conversation | POST /close | Mark conversation as closed |
Remote Procedures (RPCs)
| RPC Name | Endpoint | Used In |
|---|---|---|
| Get Workspaces | GET /my/organizations | All modules (workspace selector) |
| Get Agents | GET /organizations/#{{id/agents | All modules (agent selector) |
| Get Conversations | GET /conversations/list | Find Messages, Reply, Close modules |
This documentation provides everything you need to build powerful automations with AssistLoop and Make!