Zoho Recruit
Zoho Recruit is an applicant tracking system. It posts the job to a listing site such as Indeed, stores the application, and is the record TextWork reads. TextWork polls Zoho for new candidates and texts the ones with a phone number. The screen is the script you run on those candidates.
What the listing site does with the application is in Listing sites. Zoho's Indeed instructions cover Indeed Sponsored only, and a campaign of at least 7 days. They leave out Indeed Apply, so an applicant may land on a Zoho form. The test at the end of this page checks which one happened.
Set up Zoho
Sign up for Corporate HR with an @textwork.co email. Staffing Agency is a separate Zoho product. Job boards often restrict Gmail.
- In Setup, then General, then Company Details, make the company name, email, and website match.
- Create the job with the city and state in the location fields. Keep the city and state out of the title, and keep links and "call this number" out of the description.
Post to Indeed
Follow Zoho's steps for Indeed Sponsored.
- Go to Setup, then Job Board Hub, then Job Boards. Turn on Indeed Sponsored and choose Authenticate.
- Log in to Indeed and choose the employer account.
- Open the job, choose Publish, and select Indeed Sponsored.
- Set a small budget, choose an application form, and publish.
If Indeed Sponsored is missing on the free plan, stop and ask Zoho before upgrading.
Connect the API
At api-console.zoho.com, create a Self Client. Generate a code with the scope ZohoRecruit.modules.READ, then exchange it for tokens on accounts.zoho.com:
curl -X POST https://accounts.zoho.com/oauth/v2/token \
-d grant_type=authorization_code \
-d client_id=YOUR_ID -d client_secret=YOUR_SECRET -d code=YOUR_CODE
Save the refresh token on the server. Access tokens last an hour. Refresh them with grant_type=refresh_token:
curl -X POST https://accounts.zoho.com/oauth/v2/token \
-d grant_type=refresh_token \
-d client_id=YOUR_ID -d client_secret=YOUR_SECRET \
-d refresh_token=YOUR_REFRESH_TOKEN
Pull applicants into TextWork
Webhooks are off the free plan, so poll the Candidates module:
curl https://recruit.zoho.com/recruit/v2/Candidates \
-H "Authorization: Zoho-oauthtoken ACCESS_TOKEN"
- Poll every 2 minutes. That is about 720 calls a day. Confirm the credit cost of each call against the 5,000 daily limit.
- Save each Zoho candidate ID so the same person is never texted twice.
- Map the fields onto the webhook payload TextWork already accepts. Confirm the exact names in Setup, then Developer Space, then APIs, then API Names.
Test it
Apply from a real Indeed account, then check four things:
- The application stayed on Indeed, or it opened a Zoho form.
- The application showed up in Zoho, and how long that took.
- The record included a phone number and a resume.
- The TextWork text arrived.
To stop the test, choose Stop Sponsoring. That turns the job into a free post. Confirm the charges have stopped.
A redirect to a Zoho form means this path does not deliver Indeed Apply. Use the automated Indeed message for BrightStar instead.