Engineering

Hoe Webhooks gebruiken om Kandidaten met Slack en HubSpot te Synchroniseren

ClarityHire Team(Editorial)4 min read

Wat ATS webhook werkelijk doet

Webhook is hook ATS trekt wanneer iets gebeurt — kandidaat past, test voltooid, interview gepland. De ATS stuurt kleine JSON payload naar URL je gegeeft. Je code leest het en doet iets downstream: post naar Slack, maak HubSpot contact, werk Greenhouse stadium, trap Zap.

Webhooks zijn goedkoop, push-gebaseerd, en event-vormig. Je poll niet. Je reimplement niet data model. Je reactie.

De evenementen waard draden eerste

Elf evenementen brandhaard op ClarityHire's webhook oppervlak, maar alleen handvol materie dag één:

  • application.submitted — nieuw kandidaat in pijplijn. Slack-melding evenement.
  • test.completed — beoordeling beoordeeld. De "ping recruiter" evenement.
  • test.passed / test.failed — auto-advance / auto-archive triggers.
  • interview.scheduled en interview.completed — kalender en CRM sync.
  • candidate.stage_changed — de "vertel HubSpot lood verwarmd up" evenement.
  • candidate.hired — sluit lus met finance / IT provisioning.

Draad application.submitted en candidate.stage_changed eerste. Alles anders kan wachten tot je geleerd wat je team werkelijk meldingen wilt over.

Patroon 1 — Slack kandidaat alerts

Naïef versie: één webhook → één Inkomend Webhook URL in Slack → plat bericht in #hiring. Prima een week. Pijnlijk daarna, omdat elke nieuw applicant ping iedereen.

Patroon dat houdt:

  1. Weg per job. Map elke job naar Slack kanaal (#hiring-backend, #hiring-design). Ontvang webhook in tiny serverless functie, job → kanaal mapping opzoeken, post daar. Vijf-regel functie.
  2. Threaded updates per kandidaat. Post initiaal application.submitted evenement als top-level bericht. Post latere evenementen (test.completed, interview.scheduled) als antwoorden in dezelfde thread. Nu elke kanaal leest als per-kandidaat tijdlijn.
  3. Één actiebare knop. Voeg Slack action knop toe dat link naar kandidaatprofiel in ATS. Probeer niet werkelijk beslissing in Slack; doen waar gegevens is.

Reden klein functie in midden zetten (in plaats van Slack's native webhook direct gebruiken) is zodat je HMAC handtekening kan verifiëren, staat opzoeken, en niet Slack URL lek naar gehele organisatie ATS config.

Patroon 2 — HubSpot contact sync

HubSpot's waarde in aanwervingspijplijn is hetzelfde als verkoop pijplijn: houd verslag iedereen ooit organisatie interageerde, getagged door levenscyclusnadium. Aanwervingsleads zijn personen je reengageren kunnen in drie jaar.

  1. application.submitted → make/update HubSpot contact. Set levenscyclusnadium naar Other of aangepast Candidate stadium. Attach bronrole als eigenschap.
  2. candidate.hired → update levenscyclus naar Customer/Employee. Onderdrukt terugkerende marketing e-mails naar personen nu je werk voor je.
  3. application.rejected → tag talent herontdekking. "Afgewezen maar gekwalificeerd" tag is enkelvoudige hoogste-ROI tag in HubSpot/ATS brug. Zes maanden later als je gelijkaardige req hebt, je sourcer tag query.

Gebruik HubSpot's batch API voor schrijven bij enige schaal. Enkelvoudige-contact schrijven prima start, pijnlijk bij 50 reqs/min.

De gotchas wat bijten productie

  • Verifieer HMAC handtekening op verzoek. Webhook URL is internet-toegankelijk. Verifieer niet, iedereen wat webhook URL vindt kan je Slack kanaal spam. ClarityHire's webhooks scheepvracht ondertekening geheim per endpoint — gebruik het.
  • Maak handlers idempotent. Webhooks retry niet-2xx antwoorden. Je handler ziet hetzelfde evenement meer dan eens. Sleutel je downstream acties op evenement ID, niet ontvangstijd.
  • Antwoord 2xx snel, doen dan werk. Webhook handler wat 30 seconden neemt HubSpot te roepen voordat je antwoord zal tijd uit en herpoging. Erkennen eerste, werk queue, doen async.
  • Log levering, apart van actie. ATS geeft je leveringslogboek; bouw je eigen ook. Wanneer iets ontbreekt, vraag "did ATS stuur het, ontvingen we het, actie we het" drie aparte antwoorden.

Hoe ClarityHire webhook laag wired

/dashboard/webhooks laat je endpoint per organisatie registreert, evenementen kiezen abonneer, aangepaste headers zet, en per-levering logboek met HMAC handtekening, payload, response code, en replay knop bekijken. Mislukte leveringen retry met exponentiëel backoff. Lichter integraties je kunt ook route door Zapier of gebruik native Slack + HubSpot connectors en sla aangepaste endpoint over.

TL;DR

Begin met twee evenementen (application.submitted, candidate.stage_changed), één Slack kanaal per job, en één HubSpot contact-sync stroom. Verifieer HMAC, maak handlers idempotent, erkennen snel en queue. Alles anders schalen van dat basis.

ats webhooksslack kandidaat meldingenhubspot ats syncaanwervingsautomatiseringwebhook integratie

Gerelateerde artikelen