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

# Investigate failing actions

> Diagnose failed write actions using Logs and Komboman.

While most actions succeed automatically, occasional failures are inevitable when syncing data with external systems. Strict validation rules, changing permissions, or complex data dependencies can sometimes cause requests to be rejected.

This guide introduces tools like [Logs](../../features/logs) and [Komboman](../../features/komboman) to help you isolate and understand the error.

## 1. Find the action in the logs

<Frame>
  <video controls className="aspect-video w-full" src="https://storage.googleapis.com/kombo-assets/docs/finding-failed-actions.mp4" autoPlay />
</Frame>

To find the relevant log entry, head to the [Logs page](../../features/logs) and use the filters on the top:

* **Type**: Select **Action** to see only write operations (excluding syncs and webhooks).
* **Status**: Select **Failed** to focus on the errors.
* **Integration**: Narrow down results to a specific customer connection.
* **Date**: If you know when the error happened, setting a time range helps filter out noise.

Once you've filtered the list, you should see the failed action.

## 2. Inspect the logs

Click on the log entry to open the detail view. This is your view for understanding what happened.

* **Review the input**: Check the `Incoming Request` tab to see exactly what data you sent to Kombo.
* **Inspect the requests**: An action often involves multiple HTTP calls to the remote tool. Check the timeline for any failed requests.
* **Dig deeper**: Click on a specific request in the timeline to see the raw payload Kombo sent and the error response from the remote system. These often contain more specific details than the top-level error message.

<Frame>
  <img src="https://mintcdn.com/kombo/gOJSp7BFh1-OoJE6/images/logs/request-log-details.png?fit=max&auto=format&n=gOJSp7BFh1-OoJE6&q=85&s=694ce4a41e24930583bcb469aed72d8e" alt="Request log details" width="1678" height="1140" data-path="images/logs/request-log-details.png" />
</Frame>

## 3. Common issues

We have a dedicated [Error Handling guide](/guides/errors) that covers how to handle common API errors programmatically. Below, you'll find visual examples of the most common issues specific to actions:

### Missing permissions or Invalid authentication

If you receive a `403 Forbidden` or `401 Unauthorized` error, the integration
likely lacks the necessary permissions or it's authentication is invalid. Below
are some examples of how these errors might look in the logs:

<AccordionGroup>
  <Accordion title="Missing Permissions Example">
    <Frame>
      <img src="https://mintcdn.com/kombo/BPqqoats2A_hhL8H/images/debugging-errors/action-missing-permissions-1.png?fit=max&auto=format&n=BPqqoats2A_hhL8H&q=85&s=a100c7e266391f105c38adda9004b07e" alt="Missing permissions error" width="1672" height="884" data-path="images/debugging-errors/action-missing-permissions-1.png" />
    </Frame>
  </Accordion>

  <Accordion title="Invalid Authentication Example">
    <Frame>
      <img src="https://mintcdn.com/kombo/BPqqoats2A_hhL8H/images/debugging-errors/action-missing-permissions-2.png?fit=max&auto=format&n=BPqqoats2A_hhL8H&q=85&s=e3b6cb8408903ebda2bd179b77dc9aa6" alt="Invalid authentication error" width="1592" height="806" data-path="images/debugging-errors/action-missing-permissions-2.png" />
    </Frame>
  </Accordion>
</AccordionGroup>

**Solution**: Identify the missing permission from the error message. Ask your
customer to check their settings or API key, as they might have revoked access
or changed their role. In some cases, they will need to [reconnect the
integration](../connect/reconnection) to grant the missing scopes.

### Invalid input

If the error is a `400 Bad Request`, `422 Unprocessable Entity`, or a validation
error, the remote tool rejected the data you sent. Below are some examples of
how these errors might look in the logs:

<AccordionGroup>
  <Accordion title="Invalid Input Example 1">
    <Frame>
      <img src="https://mintcdn.com/kombo/BPqqoats2A_hhL8H/images/debugging-errors/action-remote-input-invalid-1.png?fit=max&auto=format&n=BPqqoats2A_hhL8H&q=85&s=c57b4f7b5b27660a8ac132217024bc01" alt="Invalid input error 1" width="1668" height="282" data-path="images/debugging-errors/action-remote-input-invalid-1.png" />
    </Frame>
  </Accordion>

  <Accordion title="Invalid Input Example 2">
    <Frame>
      <img src="https://mintcdn.com/kombo/BPqqoats2A_hhL8H/images/debugging-errors/action-remote-input-invalid-2.png?fit=max&auto=format&n=BPqqoats2A_hhL8H&q=85&s=067556e3122a8a69c3988e8a2d26cf2a" alt="Invalid input error 2" width="1668" height="354" data-path="images/debugging-errors/action-remote-input-invalid-2.png" />
    </Frame>
  </Accordion>
</AccordionGroup>

**Solution**:

1. Identify the incorrect or missing data in the `Incoming Request` tab.
2. Use [Komboman](../../features/komboman) to replay the action with adjusted inputs and verify the fix.
3. Check the integration's **Field Report** (in the dashboard) to see which fields are required by the remote tool.
4. If a connection always requires specific static inputs, you can set up Remote field overrides.

### Logical errors (e.g., Job closed)

Sometimes the request is valid, but the operation cannot be performed due to the state of the remote system (e.g., applying to a closed job or creating a duplicate candidate). Below are some examples of how these errors might look in the logs:

<AccordionGroup>
  <Accordion title="Logical Error Example 1">
    <Frame>
      <img src="https://mintcdn.com/kombo/BPqqoats2A_hhL8H/images/debugging-errors/action-expected-1.png?fit=max&auto=format&n=BPqqoats2A_hhL8H&q=85&s=c28b6991312f52616494b2687e06f699" alt="Logical error 1" width="1678" height="286" data-path="images/debugging-errors/action-expected-1.png" />
    </Frame>
  </Accordion>

  <Accordion title="Logical Error Example 2">
    <Frame>
      <img src="https://mintcdn.com/kombo/BPqqoats2A_hhL8H/images/debugging-errors/action-expected-2.png?fit=max&auto=format&n=BPqqoats2A_hhL8H&q=85&s=0f8b22f5dca20bae63fef59e7c5a023d" alt="Logical error 2" width="1672" height="390" data-path="images/debugging-errors/action-expected-2.png" />
    </Frame>
  </Accordion>

  <Accordion title="Logical Error Example 3">
    <Frame>
      <img src="https://mintcdn.com/kombo/BPqqoats2A_hhL8H/images/debugging-errors/action-expected-3.png?fit=max&auto=format&n=BPqqoats2A_hhL8H&q=85&s=62b77fa0896369262465d30ea740a9d4" alt="Logical error 3" width="1668" height="574" data-path="images/debugging-errors/action-expected-3.png" />
    </Frame>
  </Accordion>
</AccordionGroup>

**Solution**: Check the state of the referenced records (e.g., is the `job_id` open?) before sending the action, or handle these specific error codes gracefully in your application.

### Temporary issues

If you see a `500` error or a timeout from the remote tool, it might be a temporary issue. Below is an example of how this error might look in the logs:

<AccordionGroup>
  <Accordion title="Temporary Issue Example">
    <Frame>
      <img src="https://mintcdn.com/kombo/BPqqoats2A_hhL8H/images/debugging-errors/action-remote-unavailable.png?fit=max&auto=format&n=BPqqoats2A_hhL8H&q=85&s=dc1229e4ec7026e77c4cd7723d93c4fc" alt="Temporary remote tool error" width="1664" height="396" data-path="images/debugging-errors/action-remote-unavailable.png" />
    </Frame>
  </Accordion>
</AccordionGroup>

**Solution**: Try resending the action directly from the log details view.

## 4. Still not sure?

If the error is unclear or you suspect a bug in Kombo:

1. Copy the URL of the failing log entry.
2. Reach out to [Kombo support](/support).
3. Paste the link so we can look at the exact same trace you are seeing.
