# identity.registration.provisional

Source: https://docs.settlemint.com/docs/events/identity-registration-provisional
An identity was joined to an identity registry; the linkage is provisional until the indexer reaches the configured reorg depth.



An identity was joined to an identity registry; the linkage is provisional until the indexer reaches the configured reorg depth.

## Delivery contract [#delivery-contract]

| Field                           | Value                                       |
| ------------------------------- | ------------------------------------------- |
| Event type                      | `identity.registration.provisional`         |
| Version                         | `1`                                         |
| Lifecycle state                 | `provisional`                               |
| Counter-signed receipt required | `false`                                     |
| SDK type                        | `Webhook.IdentityRegistrationProvisionalV1` |

Related references:

* `idxr_account`
* `idxr_identity`

## When to consume this event [#when-to-consume-this-event]

Consume `identity.registration.provisional` when your integration needs early notice that an account address has been joined to an identity registry, but can tolerate the result still being within the configured reorg depth.

Use the event to stage downstream identity, account, or compliance synchronization. Do not treat it as final proof of registry membership while the observation is provisional.

Your consumer must handle any later retraction or final state for the same on-chain observation.

The payload carries the account address, identity address, registry address, country code, status, chain ID, block number, and transaction hash. Treat `accountAddress` and `country` as personal-data-bearing fields for webhook privacy reviews. If your endpoint is configured for thin payload delivery, do not depend on those fields in the first delivery.

See [webhook idempotency and on-chain outcome](/docs/events/idempotency-and-on-chain-outcome) for retry, replay, payload-shape, and provisional-event handling.

## Payload schema [#payload-schema]

```json
{
  "type": "object",
  "properties": {
    "accountAddress": {
      "type": "string",
      "pattern": "^0x[a-fA-F0-9]{40}$"
    },
    "blockNumber": {
      "type": "string"
    },
    "chainId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "country": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "identityAddress": {
      "type": "string",
      "pattern": "^0x[a-fA-F0-9]{40}$"
    },
    "registryAddress": {
      "type": "string",
      "pattern": "^0x[a-fA-F0-9]{40}$"
    },
    "status": {
      "type": "string"
    },
    "transactionHash": {
      "type": "string",
      "pattern": "^0x[a-fA-F0-9]{64}$"
    }
  },
  "required": [
    "accountAddress",
    "blockNumber",
    "chainId",
    "country",
    "identityAddress",
    "registryAddress",
    "status",
    "transactionHash"
  ],
  "additionalProperties": false
}
```

## TypeScript SDK example [#typescript-sdk-example]

```typescript
import { verifyWebhook, type Webhook } from "@settlemint/dalp-sdk";

const result = verifyWebhook({
  rawBody,
  headers,
  secret: process.env.DALP_WEBHOOK_SECRET!,
});

if (!result.ok) {
  throw new Error(`Webhook verification failed: ${result.code}`);
}

if (result.event.type === "identity.registration.provisional") {
  const event: Webhook.Event<"identity.registration.provisional"> = result.event;
  console.log(event.payload);
}
```

## curl example [#curl-example]

```bash
curl -X POST https://consumer.example.com/dalp/webhooks \
  -H "content-type: application/json" \
  -H "webhook-id: evt_docs_identity_registration_provisional_001" \
  -H "webhook-timestamp: 1778112000" \
  -H "webhook-signature: v1,docs-example-signature" \
  --data '{"evt_id":"evt_docs_identity_registration_provisional_001","type":"identity.registration.provisional","version":1,"lifecycle_state":"provisional","request":{"idempotency_key":"idem_01JZP7R5W8M9N0P1Q2R3S4T5"},"related":{"idxr_account":"idxr_account_example","idxr_identity":"idxr_identity_example"},"payload":{"accountAddress":"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","blockNumber":"18445201","chainId":537001,"country":56,"identityAddress":"0xcccccccccccccccccccccccccccccccccccccccc","registryAddress":"0xdddddddddddddddddddddddddddddddddddddddd","status":"ACTIVE","transactionHash":"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"}}'
```

## Version history [#version-history]

* Version `1`: Initial registry entry for `identity.registration.provisional`.

## Deprecation [#deprecation]

This event type is not deprecated.

## Manifest [#manifest]

The machine-readable AsyncAPI entry is published in the [DALP events manifest](/.well-known/dalp-events.json).
