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

# deal.moved

> Outbound webhook when a deal changes stage.

# `deal.moved`

## What this event means

`deal.moved` is emitted when an existing deal changes stage in a pipeline.

## Webhook `type`

`deal.moved`

## Internal source mapping

| Internal event       | Trigger path                                                     |
| -------------------- | ---------------------------------------------------------------- |
| `deal.stage_changed` | Deal stage update is persisted and stage transition is detected. |

## Payload example

```json theme={null}
{
  "type": "deal.moved",
  "object": "event",
  "data": {
    "actor_name": "Alex Morgan",
    "deal_id": "dl_1a2b3c",
    "pipeline_id": "pl_b4c5d6",
    "pipeline": "Q4 Pipeline",
    "estimated_value": 18500,
    "currency": "USD",
    "deal_creation_date": "2026-04-20T09:21:11.122Z",
    "estimated_close_date": "2026-06-01T00:00:00.000Z",
    "is_private": false,
    "deal_name": "Acme Analytics - Expansion plan",
    "owner_name": "Alex Morgan",
    "from": "Opportunity",
    "to": "Proposal",
    "company": {
      "name": "Acme Analytics",
      "domain": "acmeanalytics.com"
    },
    "point_of_contact": {
      "first_name": "Jordan",
      "last_name": "Patel",
      "email": "jordan.patel@acmeanalytics.com",
      "title": "Head of Growth"
    }
  }
}
```

## Delivery and idempotency handling

* Use `data.deal_id` as the primary idempotency key for this event.
* Because retries are possible, ensure stage transitions are applied only once per `type` + `data.deal_id`.
* If your workflow needs stage metadata, use `data.from` and `data.to` values when present.

## Related links

* [Webhook introduction](/docs/webhooks/introduction)
* [Webhook event types](/docs/webhooks/event-types)
