Build an ATS Integration with Willo in 30 Minutes

A practical guide for both technical teams and hiring leaders


Why this matters

Most teams assume integrating a candidate assessment tool like Willo into their ATS will take days or weeks.

In reality, you can get a working Willo integration live in ~30 minutes - then improve it over time.

This guide shows:

  • Developers: Exactly what to build (endpoints, flow, data)
  • Hiring teams / buyers: What the integration actually unlocks

What you’ll have at the end

A simple but complete loop:

  1. Candidate reaches a stage in your ATS (e.g. Screening)
  2. Willo interview is automatically sent
  3. Candidate completes it asynchronously
  4. Responses (video, audio, text, transcripts) are retrieved
  5. Results are attached back to the candidate record

The 30-minute plan

Note: We'll be referring to the OpenAPI documentation throughout this tutorial.

Step What you do Who this impacts
1 Get API access Dev
2 Select an interview template Hiring
3 Trigger interview from ATS Dev
4 Retrieve responses Dev
5 Sync results back Dev + Hiring

Step 1: Get API access (2 mins)

For developers

  1. Go to Integration → API in Willo
  2. Copy your API key

You’ll use this in every request:

Authorization: Bearer YOUR_API_KEY

Step 2: Choose your interview (3 mins)

For hiring teams

  • Create or select an interview in Willo
  • This defines the questions and format (video, audio, text, etc.)
  • Copy the Interview ID

💡 Think of this as your “screening template”


Step 3: Trigger interviews from your ATS (10 mins)

For developers

When a candidate reaches a stage like “Screening”, call the Willo API.

Example request

POST /v1/interviews/send
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

{
  "interview_id": "INTERVIEW_ID",
  "candidate": {
    "name": "Jane Doe",
    "email": "jane@example.com"
  },
  "metadata": {
    "ats_candidate_id": "12345"
  }
}

What this does

  • Sends the interview automatically
  • Stores a link between Willo and your ATS candidate

💡 Always include your ATS candidate ID in metadata   —you’ll need it later.


What hiring teams should expect

  • No manual sending of interview links
  • Every candidate at that stage gets the same branded experience
  • Immediate progression without coordination delays

Step 4: Retrieve completed interviews (10 mins)

For developers

Configure a webhook endpoint to receive events like:

  • interview.completed   
  • response.submitted   
  • Real-time updates
  • No need for polling

What hiring teams should expect

  • Interviews appear as soon as they’re completed
  • No chasing candidates or checking manually
  • Faster turnaround on screening decisions

Step 5: Sync results back to your ATS (5 mins)

For developers

Take the completed interview data and attach it to your candidate record.

Typical data to store

  • Response links (video/audio)
  • Transcripts
  • AI summaries
  • Completion status

Example structure

{
  "candidate_id": "12345",
  "interview_status": "completed",
  "responses": [
    {
      "question": "Tell us about yourself",
      "video_url": "https://...",
      "transcript": "..."
    }
  ]
}

What hiring teams should expect

  • Everything in one place (no switching tools)
  • Structured, comparable candidate data
  • Faster, more confident shortlisting

What you’ve just built

In ~30 minutes, you now have:

  • Automated interview sending
  • Asynchronous candidate screening
  • Structured response capture
  • ATS-linked candidate data

That’s enough to replace manual screening workflows.


Common integration patterns

Most teams evolve into one of these:

1. Stage-triggered screening (most common)

Send interviews automatically at a defined stage

2. Pre-application screening

Candidates complete a Willo interview before entering the ATS

3. Recruiter-triggered flow

Manual send from ATS when needed


How teams typically improve this

Once the basics are live:

Week 1–2

  • Add scorecards and structured evaluation

Week 2–4

  • Automate decisions (e.g. auto-progress candidates)

Month 2+

  • Build dashboards or reporting
  • Dynamic template selection

What “good” looks like

A well-implemented integration should:

  • Require zero manual interview sending
  • Sync results within minutes
  • Attach structured data to candidate profiles
  • Reduce time-to-shortlist significantly

Troubleshooting

Interview not sending

  • Check API key permissions
  • Confirm Interview ID is correct
  • Check candidate phone number is formatted correctly as E.164

Responses not syncing

  • Ensure metadata includes ATS candidate ID
  • Verify webhook endpoint is live

Duplicate candidates

  • Deduplicate using email or ATS ID

Final thought

The goal isn’t to build a perfect integration on day one.

It’s to get a working loop live quickly, then improve it.

Teams that start simple move faster—and get value sooner.


Need help?

If you want help reviewing or optimising your integration, our team can support you.

Reach out via support in the bottom right of any page and we’ll help you get this live quickly.

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us