> ## Documentation Index
> Fetch the complete documentation index at: https://docs.alex.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Dayforce

> Integrate Alex with Dayforce

## Overview

Alex integrates with Dayforce through two complementary channels:

* **Jobs** sync into Alex through **Kombo**, our unified integration provider. New job requisitions in Dayforce automatically appear in Alex, where your job workflow configures them into interviews.
* **Applications** are pushed from Dayforce to Alex via a **scheduled custom report webhook**. Each delivery contains the new applications since the last send; Alex creates the candidates and runs your application workflow (for example, automatically inviting each applicant to an interview).

The Dayforce connection is read-only: Alex does not write candidates, applications, or job data back into Dayforce.

## Key Features

### Automated Job Import

When a new job requisition is created in Dayforce, Alex imports it through Kombo and runs your job workflow — generating an interview template from the job's title and description. Use the **New Job from ATS** trigger node in your job workflow to configure which Dayforce fields populate the job title, description, and jobs-list columns.

### Automated Interview Invites

When Dayforce delivers new applications to the webhook, Alex matches each application to its job, creates the candidate with their contact details, and fires the **New Applications via Webhook** trigger in your application workflow — typically inviting the candidate to an interview by email or SMS.

### Do-Not-Hire Filtering

Applications marked **Do Not Hire** in Dayforce are automatically filtered out and are never invited.

## Step 1: Connect Dayforce via Kombo

1. In Alex, go to **Settings → Integrations** and select **Dayforce**.
2. Click **Connect**. A Kombo-hosted connection page opens in a new tab.
3. Follow the prompts to authorize your Dayforce account.
4. Back in Alex, the Dayforce card shows **Syncing…** while Kombo runs its first sync, then **Connected**. Job import begins automatically once the first sync completes.

<Note>
  If the card shows **Needs attention**, the connection requires re-authorization — repeat the Connect flow or contact your
  Alex account team.
</Note>

## Step 2: Set Up the Application Report Webhook in Dayforce

Configure a scheduled custom report in Dayforce that delivers new applications to Alex.

### Report columns

The report must include the following columns, named exactly:

| Column                       | Contents                                                     |
| ---------------------------- | ------------------------------------------------------------ |
| `Candidate Id`               | Dayforce's candidate identifier                              |
| `Candidate First Name`       | Candidate first name                                         |
| `Candidate Last Name`        | Candidate last name                                          |
| `Contact Method`             | A phone number or email address                              |
| `Contact Type Description`   | One of `Home`, `Mobile`, or `Personal Email`                 |
| `Job Req Id`                 | The Dayforce job requisition the candidate applied to        |
| `Job Req Location`           | Job location                                                 |
| `Job Req Title`              | Job title                                                    |
| `Application Date/Time`      | Application date                                             |
| `Job Posting Application Id` | Dayforce's unique identifier for the application             |
| `Do Not Hire Status`         | `True` / `False` — `True` excludes the application from Alex |

One row per contact method is expected — a candidate with a mobile phone, home phone, and email arrives as three rows for the same application. Alex merges them automatically.

### Delivery settings

* **Endpoint:** `POST https://api.alex.com/webhook/dayforce`
* **Format:** JSON array of report rows, `Content-Type: application/json`
* **Authentication header:** `x-api-key: <your Alex API key>` — the same API key from your Alex dashboard used for the Alex public API. Requests without a valid key are rejected with a `401`.
* **Scope:** each delivery should contain only the applications that are new since the previous delivery.

<Note>
  Deliveries are safe to retry: Alex deduplicates on `Job Posting Application Id`, so a redelivered batch never re-invites a
  candidate who was already processed.
</Note>

## Step 3: Configure Your Workflows

* **Job workflow** — add the **New Job from ATS** trigger. Its editor lets you choose which Dayforce fields (including custom fields, once Kombo is connected) populate the job title, description, client name, and location columns.
* **Application workflow** — add the **New Applications via Webhook** trigger as the entry point. Every new application delivered by the report enters the workflow here.

## How Alex Processes Each Delivery

* Rows are grouped by `Job Posting Application Id` — one application per unique id, regardless of how many contact rows it spans.
* Invalid rows (missing ids, unusable contact cells) never fail a delivery — they are skipped individually and logged, and the rest of the batch processes normally.
* Applications with `Do Not Hire Status` of `True` on any row are excluded.
* Phone selection prefers **Mobile** over **Home** (a valid number is always preferred over an invalid one); when duplicate rows conflict, the latest value wins. US phone numbers are normalized to include the `+1` country code automatically; numbers that can't be validated are passed through (US-shaped ones still gain the `+1` prefix) and logged.
* Applications are matched to jobs by `Job Req Id`. If the job doesn't exist in Alex yet, the application is **skipped and is not automatically redelivered** (deliveries are deltas). To avoid this, make sure jobs sync into Alex (via the Kombo connection) before applications for them are sent; if applications were skipped, contact Alex support — every delivery is stored and can be reprocessed.
* Resumes and attachments are not part of this integration — interviews are conducted without a pre-supplied resume.

## Troubleshooting

| Symptom                | Likely cause                                                                                                                      |
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| Webhook returns `401`  | Missing or incorrect `x-api-key` header                                                                                           |
| Webhook returns `400`  | The body isn't a JSON array, or the API key belongs to a non-Dayforce company account                                             |
| Candidates not invited | The job's `Job Req Id` doesn't match an imported job, or the application workflow has no **New Applications via Webhook** trigger |
| Jobs not importing     | Kombo connection not finished syncing (check the Dayforce card in Settings)                                                       |
