Implementation Overview
Implementation Type: Kombo-based Integration Note Format: Plain Text Status: Production Ready iCIMS is a thin Kombo-based provider. Reading jobs, applications, and candidates, moving applications between stages, and creating applications all work through Kombo’s unified API. Job custom fields are the exception: Kombo’s unified iCIMS payload never populates them, so the configured “Tenzo Enabled” job field is fetched directly from iCIMS via the passthrough API (see below).Configuration
Interview Summary & PDF Writeback (Passthrough)
Because Kombo’s unified iCIMS connector has no note endpoint and rejects non-CV attachments, interview results are written back through the iCIMS passthrough API by PATCHing the applicant workflow directly. The applicant-workflow id used is the Kombo application’sremote_id (not the Kombo internal id).
These destinations are configured per org in the ATS Integration UI, under the
Custom Field Mapping section, as free-text field ids (e.g. field675560). They are
free-text rather than dropdowns because these applicant-workflow field ids are not
surfaced by Kombo’s unified custom-fields endpoint.
Interview Summary (Supported)
Interview Summary (Supported)
Set iCIMS Interview Summary Field ID to the applicant-workflow custom field id that
should receive the interview summary text. When set, the post-call flow writes the
summary via:Gated purely on the presence of the configured field id (leave it blank to skip). The
PATCH overwrites the same field, so a redelivered post-call flow is idempotent. Write
failures do not prevent the independent PDF write from being attempted, but they propagate
through post-processing retries. Persistent failures ultimately dead-letter for investigation.
Interview PDF (Supported)
Interview PDF (Supported)
Set iCIMS Interview PDF Field ID to the applicant-workflow binary field id that
should receive the interview PDF. When set, the post-call flow writes the PDF via:The PDF rides as a
Content-Transfer-Encoding: base64 part so the request body stays
ASCII and survives Kombo passthrough’s UTF-8 forwarding intact (verified byte-identical
round-trip); iCIMS decodes it back to the original bytes on receipt. Gated purely on the
presence of the configured field id (leave it blank to skip). Skips cleanly when the call
produced no PDF (no gradeable content, or the org has no PDF template). The PATCH
overwrites the same binary field, so a redelivered post-call flow is idempotent. Write
failures do not undo the independently attempted summary write, but they propagate through
post-processing retries. Persistent failures ultimately dead-letter for investigation.Tenzo Enabled Job Field (Supported)
Tenzo Enabled Job Field (Supported)
Set iCIMS Tenzo Enabled Job Field ID to the job custom field id (e.g.
The field then appears in the integration rules editor as a boolean job custom field
(
field51234) that marks a job as Tenzo enabled. When set, job enrichment fetches the
value directly from iCIMS via:custom_field_values.<field id>) and rules evaluate against it. Yes/no and true/false
values are normalized to booleans. Gated purely on the presence of the configured field
id (leave it blank to skip). Fetch failures are logged and fail soft — the job still
syncs, just without custom field values. After configuring the field id, re-sync jobs:
cached enhanced jobs won’t carry the field until re-synced.Known Limitations
Notes & non-CV attachments not supported via Kombo
Kombo’s iCIMS connector exposes no note endpoint and its attachment endpoint accepts
CV/resume attachments only. Interview summaries and the interview PDF are instead written
to configured applicant-workflow custom fields via passthrough (see above).
Disposition Reasons
iCIMS does not expose a disposition reason bank through Kombo, so rejection and
not-interested flows are handled as stage moves.
Related Files
- Implementation:
server/ats/icims/icims_ats_client.py - Models:
server/ats/icims/icims_models.py - Config fields:
server/ats/config/models.py(IcimsInterviewSummaryCustomField,IcimsInterviewPdfCustomField,IcimsTenzoEnabledJobCustomField) - Config registration:
server/ats/config/providers.py(IcimsConfig) - Typed accessors:
server/ats/org_config.py(icims_interview_summary_custom_field,icims_interview_pdf_custom_field,icims_tenzo_enabled_job_custom_field) - Field Mappings:
server/ats/field_type_mapper.py(ICIMS_FIELD_MAPPINGS)