# Keka Fetch Attendance

Use this integration to pull attendance records from Keka into we360.ai.

It fetches first-in and last-out punch data. It also maps premise name as location.

This removes manual attendance exports. It keeps attendance data current in we360.ai.

Fetched data appears in:

* Daily Attendance Report
* All Attendance Reports
* Dynamic Reports

The sync runs daily for the previous day. It runs at `05:30 UTC`. That is `11:00 AM IST`.

## Before you start

You need these values from Keka:

* Client ID
* Client Secret
* API Key
* Subdomain
* Unique Identification Key

The unique identification key is used to match users. Use the same employee identifier in both systems.

{% hint style="warning" %}
Every synced user must have an Employee ID. If Employee ID is missing, that user will not sync.
{% endhint %}

## Required fields

| we360.ai field              | Description                           | Keka usage         |
| --------------------------- | ------------------------------------- | ------------------ |
| `Client ID`                 | Unique identifier for API access      | API authentication |
| `Client Secret`             | Secret paired with the Client ID      | API authentication |
| `API Key`                   | Key used to authorize API calls       | API authentication |
| `Subdomain`                 | Your company Keka subdomain           | API base path      |
| `Unique Identification Key` | Employee identifier used for matching | User mapping       |
| `Employee ID`               | Required employee mapping field       | Employee mapping   |

## Generate API credentials in Keka

You must create the credentials in Keka as a Global Admin.

{% hint style="info" %}
When creating the API key, enable **Mark Attendance** privileges. Without it, the integration will not work.
{% endhint %}

{% stepper %}
{% step %}

### Open Keka admin settings

Log in to the Keka Admin Portal as a Global Admin.

Go to **Global Admin Settings → Integrations & Automation**.

![](/files/jykgFoZl7e9iH9ANWElv)
{% endstep %}

{% step %}

### Open API access

Select **API Access**.

Go to the **API Key** section.
{% endstep %}

{% step %}

### Generate credentials

Generate your **Client ID** and **Client Secret**.

Only the Global Admin can create and manage API keys.
{% endstep %}

{% step %}

### Create the API key

Click **Create New Key**.

Optionally enable **Set Expiry** and choose an expiry date.

Make sure attendance privileges are selected.

![](/files/aHZmTIEQG9NnU0yE8DzC)
{% endstep %}

{% step %}

### Save the key

Click **Save**.

Keep the generated values ready for we360.ai.
{% endstep %}
{% endstepper %}

## Configure the integration in we360.ai

{% stepper %}
{% step %}

### Open the integration

In we360.ai, go to **Settings → Integrations**.

Open **Keka Fetch Attendance**.
{% endstep %}

{% step %}

### Enter the Keka credentials

Fill in these values:

* `Client ID`
* `Client Secret`
* `API Key`
* `Subdomain`
* `Unique Identification Key`
  {% endstep %}

{% step %}

### Enter the subdomain correctly

If your Keka URL is `https://company.keka.com`, enter `company`.
{% endstep %}

{% step %}

### Enable automatic sync

Select the **Auto-Run** checkbox.
{% endstep %}

{% step %}

### Save the integration

Save the configuration.

The next scheduled run will fetch the previous day's records.
{% endstep %}
{% endstepper %}

## How the sync works

we360.ai connects to the Keka API using the saved credentials.

It fetches:

* first-in time
* last-out time
* premise name as location

The integration updates attendance reports after the scheduled fetch completes.

## Troubleshooting

#### Attendance data does not appear

Check the `Client ID`, `Client Secret`, `API Key`, and `Subdomain`.

#### Users are missing from the sync

Check the unique identification key mapping.

Also confirm the user has an `Employee ID`.

#### API calls fail

Confirm the Keka API key has **Mark Attendance** privileges.

## Support

* we360.ai integration support — `support@we360.ai`
* Keka API support — `support@keka.com`


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.we360.ai/deployment-and-it-ops/readme/integrations/portal-integrations/keka-fetch-attendance.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
