Upfirst is an AI receptionist that connects to Zoho CRM in two ways: through Custom Actions (live REST API calls during a call, using a Zoho OAuth token) and through Zapier (writes to Zoho after the call ends). The receptionist can search any Zoho module by phone, email, or criteria, then write back to Calls, Notes, Tasks, or any of your standard or custom modules in the same call.
Does Upfirst integrate with Zoho CRM?
Yes. Two options:
- Custom Actions hit
www.zohoapis.com/crm/v8(or your region's equivalent like.eu,.in,.au,.jp) using a Zoho OAuth access token. The receptionist can run module searches, criteria queries, and record updates while the caller is on the line. - Zapier handles post-call automation through the Zoho CRM Zapier app.
One thing to know: Zoho's API is region-aware. The base domain matches the data center your Zoho org lives in. Get that wrong and the calls fail authentication.
What Zoho CRM is
Zoho CRM is the sales and customer management platform in the Zoho One stack. Its object model is module-based: every record type (Lead, Contact, Account, Deal, Call, Task, Note, plus any custom modules you've added) lives in its own module. The same API patterns (search, insert, update, related-list) work across all of them. Layouts, custom fields, and validation rules vary by org.
Zoho serves small and mid-sized businesses globally, with strong adoption outside the US. The integration with Upfirst keeps inbound calls connected to the right Lead or Contact regardless of which data center or what custom modules you've built.
What Upfirst can do with Zoho CRM
Match incoming calls to a Zoho Lead, Contact, or Account
When a call comes in, Upfirst calls GET /crm/v8/Contacts/search?phone=#{{caller_id}} (and Leads, if you want). Zoho returns the matching record. The receptionist greets the caller by name and can reference owner, lead status, lead source, or any custom field.
Run module-aware searches mid-call
Zoho's search supports three modes: ?phone=, ?email=, and ?criteria=. The criteria operator handles compound queries like (Account_Name:equals:Acme)and(Deal_Stage:equals:Proposal). If the caller mentions an account, a deal, or any custom-field value, the receptionist searches the right module and reads back what it finds.
Log every call to the Zoho Calls module
Zoho CRM has a dedicated Calls module. On call end, Upfirst writes a record there with caller name, phone, duration, direction (inbound), the call summary as the description, and a related record (the matched Lead, Contact, or Deal). The transcript can go in as a Note. Reps see the call in the activity timeline of the matching record.
Update records and trigger Workflow Rules from call signals
Upfirst can pull anything you want out of a call: lead source, intent, custom field values. Use those signals to update the Lead or Contact, which trips the Zoho Workflow Rules (auto-assignment, score updates, email sequences, Blueprint transitions) you've already built. The phone call becomes a clean entry point to the rest of your Zoho automation.
Zoho CRM API calls Upfirst can make
- GET /crm/v8/{Module}/search with
?phone=,?email=, or?criteria= - POST /crm/v8/{Module} for inserts (Leads, Contacts, Deals, custom modules)
- PUT /crm/v8/{Module}/{id} for updates
- POST /crm/v8/Calls to log the call as an Activity
- POST /crm/v8/Notes tied to any record
- POST /crm/v8/Tasks to assign follow-up
- POST /crm/v8/coql for SQL-style joins across modules
Setting up the Zoho CRM integration
Custom Actions
- In Zoho Developer Console (
api-console.zoho.com, matching your data center), create a Self Client or Server-based app. Save the Client ID and Client Secret. Add the scopes you need (e.g.ZohoCRM.modules.ALL,ZohoCRM.settings.READ). - In Upfirst, set up the Zoho OAuth Connection. Point it at the authorization endpoint for your data center (
accounts.zoho.com/oauth/v2/auth, oraccounts.zoho.eufor EU, etc.). - Go to Agent > Custom actions and add a new action. Pick the trigger: When call starts for the phone-number module search, During call for caller-driven criteria queries, or After call for Calls/Notes/record creation.
- Set the request. Example:
GET https://www.zohoapis.com/crm/v8/Contacts/search?phone=#{{caller_id}}(swap in your region'szohoapisdomain). Authorization header:Zoho-oauthtoken {{access_token}}. Upfirst's OAuth Connection handles the refresh. - Pick which fields the receptionist gets back (Full_Name, Lead_Status, Owner, Account_Name). Test it. Save.
Zapier
- Create a Zap. Trigger: Upfirst > Call Completed.
- Pick a Zoho CRM action: Create or Update Lead, Create Contact, Create Call, Create Note.
- Map the call fields to the Zoho module fields. Module and Lead_Status / Stage matter for routing.
- Add filters so only certain calls create records.
- Test and turn the Zap on.
A common Zoho setup: Contacts search on call start, Deal lookup mid-call when the caller mentions an opportunity, Calls module write on call end. Zapier handles cross-tool fanout if the same call also needs to land in Slack or a spreadsheet.
