Teamtailor
Deeper Signals is a Teamtailor partner using the Partner API. Recruiters add Deeper Signals to a candidate and pick the test; Teamtailor sends a partner event; when the candidate completes, Deeper Signals updates the partner result with the status, a summary, the profile link and the scores.
How it works
- Teamtailor fetches the partner config, a select field listing the ATS-enabled hiring campaigns as tests.
- The partner event carries the candidate and the chosen test. Deeper Signals finds or creates the candidate by e-mail, adds them to the campaign and e-mails the invitation, remembering the event's
update-url. - On completion of all assessments, Deeper Signals
PUTs apartner-resultsdocument to that URL.
Prerequisites
| Where | What |
|---|---|
| Teamtailor | The Deeper Signals partner activated on your Teamtailor account (Marketplace → Deeper Signals). Teamtailor authenticates to Deeper Signals with a JWT whose api_key claim is your Deeper Signals API token. |
| Deeper Signals | An account administrator; API access enabled on the account by Deeper Signals. |
Setup
- In the admin app open Settings → Integrations → Teamtailor and create the integration; copy the generated API token. (API:
POST /admin/integrations/teamtailor/{account}/create.) No further credentials are needed on the Deeper Signals side. - Activate Deeper Signals in Teamtailor and enter the API token when asked.
- Flag the hiring campaigns that should be offered as tests as ATS-enabled. If none is flagged, Deeper Signals creates Team Tailor - Default with the account's default hiring reports.
Runtime contract
Inbound (Teamtailor → Deeper Signals, Authorization: Bearer <JWT>):
| Endpoint | Purpose |
|---|---|
GET /integrations/teamtailor/config | { "config": { "fields": [{ "id": "campaign", "label": "Test", "type": "select", "options": [{ "id", "label" }] }] } } |
POST /integrations/teamtailor/webhook | Partner event. Reads partner-event.webhook-data.campaign, partner-event.candidate.{id,email,first-name,last-name}, partner-event.partner-result.{id,update-url}. Answers 200 []. |
partner-event
{
"partner-event": {
"id": "evt-1",
"webhook-data": { "campaign": 10 },
"candidate": { "id": 123, "first-name": "Ada", "last-name": "Lovelace", "email": "ada@example.com" },
"partner-result": { "id": "partner-result-99", "update-url": "https://api.teamtailor.com/partner/v1/partner-results/partner-result-99" }
}
}
Outbound (PUT {update-url}, Content-Type: application/vnd.api+json):
partner-results
{
"data": {
"type": "partner-results",
"id": "partner-result-99",
"attributes": {
"status": "completed",
"summary": "The candidate completed all assessments.",
"url": "https://app.deepersignals.com/admin/users/user/1?account=examplecorp&tab=Reports",
"assessment": { "duration": 75 },
"details": { "Core Drivers-> Drive": 74.83, "Competency Collaboration": 4, "Campaign Job Match Score": 81.5 }
}
}
}
assessment.duration is the total time the candidate spent on the assessments, in seconds.
Limitations
- Only the final
completedupdate is sent; progress is visible in Deeper Signals. - Re-sending the same test to the same candidate replaces the earlier partner result link; only the newest is updated.
- PDF reports are not attached in Teamtailor; use the profile URL or the report download endpoints.