# ErrorLens × Asana — Starter Pack

> Turn error analyses into Asana tasks assigned to the right team with due dates and priority.

**Category:** Issue Trackers
**Required plan:** Pro or higher

---

## 1. Before you start

PAT is at app.asana.com/0/my-apps. The Project GID is the long number in the URL when viewing the project.

## 2. Configuration fields

| Field | Type | Required | Example |
|-------|------|----------|---------|
| `token` | password | yes | `1/…` |
| `projectGid` | text | yes | `1205…` |



### `config.json` template

Drop this into your config tooling (1Password, Doppler, Vault, ...) — ErrorLens
reads the same shape from your dashboard form.

```json
{
  "token": "<your-token>",
  "projectGid": "<your-projectGid>"
}
```

## 3. What ErrorLens sends

Once configured, ErrorLens POSTs the payload below to the integration the
moment an analysis completes. Use this to write tests for any forwarder /
transformer you wrap around the webhook.

```json
{
  "event": "analysis.completed",
  "analysisId": "7b2f1e9d-...-...-...-...",
  "title": "Production checkout 500s — Dec 1",
  "url": "https://app.errorlens.ai/dashboard/analysis/7b2f1e9d-...",
  "result": {
    "severity": "critical",
    "summary": "NullPointerException in PaymentService.process() during guest checkout.",
    "rootCause": "customer.getPaymentMethod() returns null because guest profiles do not initialize payment methods.",
    "suggestedFix": "Initialize a default payment method on the guest profile, or guard with a null-check in PaymentService.",
    "affectedServices": [
      "payment-svc",
      "order-svc"
    ],
    "occurrences": 148,
    "language": "Java",
    "framework": "Spring Boot"
  },
  "user": {
    "id": "usr_...",
    "email": "on-call@yourcompany.com",
    "plan": "pro"
  },
  "receivedAt": "1970-01-01T00:00:00.000Z"
}
```

## 4. Setting it up in ErrorLens

1. Sign in at https://app.errorlens.ai (or your self-hosted instance).
2. Go to **Dashboard → Integrations**.
3. Find **Asana** in the catalog and click **Connect**.
4. Paste the values from your `config.json` into the form.
5. Hit **Save** — the first test event fires immediately.

## 5. Removing the integration

Disabling the integration from the same screen stops further events; it
does NOT revoke the token on the Asana side. Rotate or delete the
credential in Asana as well if you're decommissioning it.

---

_Generated by ErrorLens · 2026-05-11 ·
provider `asana`_
