CRM & Webhooks
Connect your agents to CRMs, look up customer data, and send information to external systems via webhooks.
CRM & Webhooks
Connect your agents to customer data and external systems. Use the Get User tool to look up caller information from your CRM, and webhooks to push data to any external service in real time.
Get User Tool (CRM Lookup)
The Get User tool lets your agent look up caller or user information from your CRM before or during a conversation. When someone calls or chats, the agent can instantly pull up their profile, order history, account status, or any other data you store.
How It Works
- A user contacts your agent (via chat, phone, or API).
- The agent calls your CRM webhook with the user's identifier (phone number, email, or ID).
- Your CRM returns the user's profile data.
- The agent uses this data to personalize the conversation.
Setting Up the Get User Tool
- Navigate to Agents and select your agent.
- Go to the Tools section and click Add Tool.
- Select Get User (CRM Webhook).
- Configure the webhook:
| Setting | Description | Example |
|---|---|---|
| Webhook URL | Your CRM endpoint that returns user data | https://api.yourcrm.com/lookup |
| Method | HTTP method | GET or POST |
| Lookup Field | What identifier to send | Phone number, email, or custom ID |
| Headers | Authentication headers | Authorization: Bearer xxx |
Example CRM Webhook
Your webhook should accept a lookup parameter and return user data as JSON:
Request:
GET https://api.yourcrm.com/lookup?phone=+15551234567
Authorization: Bearer your-api-keyResponse:
{
"name": "Sarah Johnson",
"email": "sarah@company.com",
"account_type": "Enterprise",
"account_status": "Active",
"last_order": "2026-02-28",
"total_spent": 12500,
"notes": "Preferred contact: email. Interested in annual plan."
}The agent receives this data and can reference it throughout the conversation.
Using CRM Data in Conversations
Configure your agent to use the lookup data naturally:
Agent instructions:
"At the start of each conversation, look up the user's information using
the Get User tool. Use their name and account details to personalize
the interaction.
If the user is an Enterprise customer, prioritize their request and
offer to connect them with their dedicated account manager.
If their account status is 'Past Due', gently mention the outstanding
balance and offer to help resolve it."Sample voice call:
[Incoming call from +1-555-123-4567]
Agent: [Calls Get User webhook with phone: +15551234567]
[Receives: name=Sarah Johnson, account=Enterprise, status=Active]
"Hello Sarah! Thanks for calling. I see you're on our Enterprise
plan. How can I help you today?"
Sarah: "I need to upgrade our seat count."
Agent: "Of course! You currently have 50 seats on your Enterprise plan.
How many additional seats would you like to add?"Custom Webhook Integration
Beyond CRM lookups, you can use webhooks to send data from your agent to any external system.
Sending Data to External Systems
Create a custom webhook tool that pushes data to your backend:
Common webhook use cases:
| Use Case | Trigger | Data Sent |
|---|---|---|
| Lead capture | User provides contact info | Name, email, phone, interest |
| Support ticket | User reports an issue | Issue description, severity, user ID |
| Order placement | User confirms an order | Product, quantity, shipping info |
| Appointment booking | Agent books a slot | Date, time, attendee details |
| Call summary | Call ends | Transcript summary, action items, sentiment |
Setting Up an Outbound Webhook
- Go to Tools > Add Tool > Custom Tool (API).
- Configure your webhook endpoint:
# Example: Create a support ticket
Endpoint: https://api.yourapp.com/tickets
Method: POST
Headers:
Authorization: Bearer your-api-key
Content-Type: application/json- Define the parameters the agent will fill in:
| Parameter | Type | Description |
|---|---|---|
subject | string | Ticket subject/title |
description | string | Detailed issue description |
priority | string | low, medium, high, urgent |
customer_email | string | Customer's email address |
- The agent will call this webhook when it determines a ticket should be created.
Webhook Authentication
Secure your webhooks with one of these methods:
# Bearer token
Authorization: Bearer sk-your-webhook-secret
# API key header
X-API-Key: your-api-key
# HMAC signature (verify on your server)
X-Webhook-Signature: sha256=...Webhook Response Handling
Your webhook should return a JSON response that the agent can use:
{
"success": true,
"ticket_id": "TKT-4521",
"message": "Ticket created successfully"
}The agent will use this response to confirm the action to the user:
Agent: "I've created a support ticket for you. Your ticket number is
TKT-4521. Our team will get back to you within 2 hours."Receiving Webhook Events
You can also trigger agent actions from external events by sending webhooks to the thinnestAI API.
Use Cases
- New lead in CRM — Trigger the agent to send a welcome email.
- Payment received — Notify the agent to update the customer's account status.
- Support ticket updated — Have the agent follow up with the customer.
Sending Events to thinnestAI
curl -X POST https://api.thinnest.ai/agents/{agent_id}/trigger \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"event": "new_lead",
"data": {
"name": "Alex Rivera",
"email": "alex@startup.com",
"source": "website",
"interest": "Enterprise plan"
}
}'Example: Full CRM-Connected Voice Agent
Build a voice agent that looks up callers, handles requests, and logs everything to your CRM.
Agent Setup
| Field | Value |
|---|---|
| Name | Customer Service Agent |
| Model | GPT-4o |
| Tools | Get User (CRM), Custom Webhook (Create Ticket), SMS |
Agent Instructions
You are a customer service agent for Acme SaaS.
ON EVERY CALL:
1. Look up the caller using the Get User tool
2. Greet them by name and reference their account
HANDLING REQUESTS:
- For billing questions: look up their account and answer directly
- For technical issues: create a support ticket with full details
- For upgrade requests: explain the options and offer to process it
- For cancellations: understand why, offer alternatives, escalate if needed
AFTER RESOLUTION:
1. Create a webhook ticket summarizing the interaction
2. Offer to text them a summary or confirmation number via SMS
3. Thank them and ask if there's anything else
TONE: Professional, helpful, empathetic. Never argue with the customer.Best Practices
CRM Integration
- Cache responses — If your CRM lookup is slow, consider caching frequent lookups.
- Handle missing users — Tell the agent what to do if the user isn't found in the CRM (e.g., collect their info and create a new record).
- Keep data fresh — CRM data can change. The agent fetches it live on each interaction.
Webhook Reliability
- Return quickly — Your webhook endpoint should respond within 5 seconds. For longer operations, accept the webhook and process asynchronously.
- Return meaningful errors — If something goes wrong, return an error message the agent can relay to the user.
- Idempotency — Design your webhooks to handle duplicate calls gracefully.
Security
- Validate webhook signatures on your server to ensure requests come from thinnestAI.
- Use HTTPS for all webhook endpoints.
- Limit data exposure — Only return the CRM fields your agent actually needs.
Webhook Tool (Zapier / Make / n8n)
Send data from your agent to any automation platform. One tool covers Zapier, Make.com, n8n, and any custom webhook endpoint.
Setting Up
- Go to Tools > Add Tool > Webhook.
- Paste your webhook URL from Zapier, Make, or n8n.
- Optionally name it (e.g., "Zapier CRM") and add a webhook secret.
| Setting | Description | Example |
|---|---|---|
| Webhook URL | Your automation endpoint | https://hooks.zapier.com/hooks/catch/123/abc/ |
| Name | Friendly name (optional) | Zapier Lead Capture |
| Secret | Signature verification (optional) | whsec_... |
What the Agent Can Do
The agent has two functions:
send_webhook(data, event_type)— Send any JSON data with an event typesend_event(event_name, customer_name, email, phone, notes)— Send structured CRM-style events
Example: Zapier Lead Capture
User: "My name is Rahul, email is rahul@company.com, I want a demo"
Agent: [Calls send_event]
event_name: "new_lead"
customer_name: "Rahul"
customer_email: "rahul@company.com"
notes: "Wants a demo of voice agents"
→ Zapier receives JSON, creates HubSpot contact + sends Slack notificationPayload Format
Every webhook receives this JSON structure:
{
"event": "new_lead",
"source": "thinnestai",
"data": {
"customer_name": "Rahul",
"customer_email": "rahul@company.com",
"notes": "Wants a demo of voice agents"
}
}Platform-Specific Setup
| Platform | Get Webhook URL |
|---|---|
| Zapier | Create a Zap → Trigger: "Webhooks by Zapier" → "Catch Hook" → Copy URL |
| Make.com | Create a Scenario → Add "Webhooks" module → "Custom webhook" → Copy URL |
| n8n | Add "Webhook" node → Copy test/production URL |
Composio (500+ App Integrations)
Connect your agent to 500+ SaaS apps using Composio — including CRMs (Zoho, Pipedrive, Freshsales), productivity tools, and more. Composio handles authentication and API complexity automatically.
Setting Up
- Sign up at composio.dev and get your API key.
- Go to Tools > Add Tool > Composio.
- Paste your Composio API key.
- The agent can now access any app you've connected in your Composio dashboard.
Supported Apps
Composio connects to 500+ apps including:
| Category | Apps |
|---|---|
| CRM | Zoho CRM, Pipedrive, Freshsales, Salesforce, HubSpot |
| Productivity | Google Workspace, Notion, Slack, Asana, Linear |
| Marketing | Mailchimp, SendGrid, ActiveCampaign |
| Support | Zendesk, Intercom, Freshdesk |
| Finance | Stripe, QuickBooks, Xero |
When to Use Composio vs. Direct Tools
| Scenario | Use |
|---|---|
| You need HubSpot/Salesforce with deep customization | Direct tool (built-in) |
| You need Zoho/Pipedrive/Freshsales | Composio (no custom code) |
| You need 5+ different SaaS integrations | Composio (one API key for all) |
| You need simple webhook automation | Webhook tool (Zapier/Make) |
Built-in CRM Tools
thinnestAI includes direct integrations for popular CRMs. These are deeper integrations with full CRUD operations.
| CRM | Operations | Setup |
|---|---|---|
| HubSpot | Contacts, Deals, Companies, Tickets — create, update, search | HubSpot Access Token |
| Salesforce | Leads, Accounts, Contacts, Opportunities — full CRUD + SOQL | Username + Password + Security Token |
| ActiveCampaign | Contacts, Deals, Lists — create, update, manage | API URL + API Key |
| Apollo | People search, Company search, Email finder, Sequences | Apollo API Key |
| Profile lookup, Company search, Share posts | LinkedIn Access Token |
To add a CRM tool: Tools > Add Tool > select the CRM > enter your API credentials.
Next Steps
- Custom Tools — Build more complex API integrations.
- SMS — Send text confirmations and follow-ups.
- Tools Overview — Browse all available tools.