# UserPlanActive

Fired when a user plan's local line is in service and the plan is active.

> Enterprise API · https://developer.telgea.com/docs/enterprise/webhooks/user-plan-active

## UserPlanActive [#userplanactive]

Fired when one of the user's local lines reaches service, whether the number was newly provisioned or ported in. The first one makes the plan active. The payload carries the phone number and eSIM activation code of the user's local numbers.

Exactly one of these fires per local number, at the moment the line becomes usable. A user who takes a second local number gets a second `UserPlanActive` when that number is usable.

## Payload [#payload]

```json event=UserPlanActive
{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "eventType": "UserPlanActive",
  "timestamp": "2026-03-25T14:35:00.000Z",
  "organizationId": "b5e2d7f3-a1c4-4e89-9f6b-3d8a7c5e1024",
  "data": {
    "userId": "d4e5f6a7-b8c9-0123-d456-789012345678",
    "firstName": "Anna",
    "lastName": "Holm",
    "email": "anna.holm@acme.example",
    "status": "ACTIVE",
    "teamId": null,
    "teamName": null,
    "costCode": null,
    "employeeId": null,
    "localNumber": {
      "numberId": "f7a8b9c0-d1e2-3456-f789-012345678901",
      "type": "local",
      "phoneNumber": "+4512345678",
      "countryCode": "DK",
      "sim": {
        "iccid": "8945000000000000001",
        "activationCode": "LPA:1$SMDP.TELGEA.COM$34682-73063-9140",
        "pinOne": "1234",
        "pinTwo": "5678",
        "pukOne": "12345678",
        "pukTwo": "87654321"
      }
    },
    "localNumbers": [
      {
        "numberId": "f7a8b9c0-d1e2-3456-f789-012345678901",
        "type": "local",
        "phoneNumber": "+4512345678",
        "countryCode": "DK",
        "sim": {
          "iccid": "8945000000000000001",
          "activationCode": "LPA:1$SMDP.TELGEA.COM$34682-73063-9140",
          "pinOne": "1234",
          "pinTwo": "5678",
          "pukOne": "12345678",
          "pukTwo": "87654321"
        }
      }
    ]
  }
}
```

| Field          | Type             | Description                                                         |
| -------------- | ---------------- | ------------------------------------------------------------------- |
| `userId`       | `string`         | UUID of the user                                                    |
| `firstName`    | `string`         | User's first name                                                   |
| `lastName`     | `string`         | User's last name                                                    |
| `email`        | `string`         | User's email address                                                |
| `status`       | `string`         | Always `ACTIVE`                                                     |
| `teamId`       | `string \| null` | UUID of the user's team                                             |
| `teamName`     | `string \| null` | Name of the user's team                                             |
| `costCode`     | `string \| null` | Cost code set on the user                                           |
| `employeeId`   | `string \| null` | Employee id set on the user                                         |
| `localNumber`  | `object \| null` | The user's first local number and its eSIM                          |
| `localNumbers` | `object[]`       | Every local number the user holds, oldest first, each with its eSIM |

`localNumber` and each item of `localNumbers` hold `numberId`, `type` (always `local`), `phoneNumber` (E.164, or `null`), `countryCode`, and `sim`. `sim` holds `iccid`, `activationCode` (the LPA string to render as a QR code) and the PIN and PUK codes; `sim`, its activation code and its PIN and PUK codes can each be `null`.

For a user with one local number, `localNumbers` holds that one number, the same as `localNumber`. When a further number reaches service, `localNumber` still describes the first, and `localNumbers` lists them all, including numbers not yet in service.

## No travel number here [#no-travel-number-here]

This payload describes the local line alone and carries no `travelNumber`. A travel eSIM is provisioned separately, after the local line is in service, and only for an organization holding a data pool outside its home zone, so when this event fires there is never a travel number to report. Read `travelNumber` from [`GET /v1/user-plans/{userId}`](https://developer.telgea.com/docs/enterprise/api/user-plans#get-user-plan-details) to find out whether one exists and to get its activation code.
