# Eventos de pedidos

> Pedidos guardados por primera vez y pedidos guardados que cambiaron.



## order.placed

> Se envía cuando un pedido se guarda por primera vez. Incluye los artículos y el email de campaña o de automatización al que se atribuye el pedido. Alfa: solo para el equipo de Emailit.

# order.placed

Se envía cuando Emailit guarda un pedido por primera vez: desde [Crear o actualizar un pedido](/es/docs/api-reference/orders/create/), desde el script de seguimiento o desde [Importar pedidos en bloque](/es/docs/api-reference/orders/batch/) con `historical` igual a `false`. Las importaciones históricas no lo envían. El mismo evento puede iniciar una automatización. Consulta [Comercio electrónico](/es/docs/commerce/).

> **Comercio electrónico está en alfa:** Comercio electrónico solo está abierto al equipo de Emailit mientras lo probamos. Consulta [Quién puede usar Comercio electrónico](/es/docs/commerce/#who-can-use-commerce).

Las peticiones de webhook contienen un array JSON de eventos como este; consulta [Peticiones de webhook](/es/docs/webhooks/webhook-requests/).

```json
{
  "event_id": "evt_381an2bijq9dF40JdqYLuJT43Z4",
  "type": "order.placed",
  "object": {
    "object": "order",
    "id": "ord_3aMEK4No62Zw8S1fcHNznAnnbfp",
    "external_id": "1042",
    "contact_id": "con_3EwrXnu9OaQWlfI1AyPUUEoYjQs",
    "email": "ada@example.com",
    "status": "paid",
    "currency": "USD",
    "subtotal": 107,
    "discount": 10.7,
    "shipping": 5,
    "tax": 0,
    "total": 101.3,
    "refunded_amount": 0,
    "coupon_codes": [
      "WELCOME-7KQ2M9XA"
    ],
    "cart_id": "c-58f1a2",
    "source": "api",
    "placed_at": "2026-10-08T14:32:10.000Z",
    "paid_at": "2026-10-08T14:32:11.204Z",
    "fulfilled_at": null,
    "canceled_at": null,
    "refunded_at": null,
    "attribution": {
      "email_id": "eml_3TSvDAUQi7vqxvAQ1UEVN7k4igq",
      "campaign_id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
      "campaign_name": "October newsletter",
      "variant_id": null,
      "automation_id": null,
      "automation_name": null,
      "type": "click",
      "touched_at": "2026-10-08T09:41:52.000Z"
    },
    "items": [
      {
        "product_id": "8123456789",
        "variant_id": "42-blue",
        "sku": "TRS-BLU-42",
        "title": "Trail running shoe",
        "quantity": 1,
        "unit_price": 89,
        "total": 89,
        "categories": [
          "Shoes",
          "Running"
        ],
        "url": "https://shop.example.com/products/trail-running-shoe",
        "image_url": "https://shop.example.com/images/trail-running-shoe.jpg"
      }
    ],
    "metadata": {
      "channel": "web"
    },
    "created_at": "2026-10-08T14:32:11.204Z",
    "updated_at": "2026-10-08T14:32:11.204Z"
  },
  "data": {
    "object": {
      "object": "order",
      "id": "ord_3aMEK4No62Zw8S1fcHNznAnnbfp",
      "external_id": "1042",
      "contact_id": "con_3EwrXnu9OaQWlfI1AyPUUEoYjQs",
      "email": "ada@example.com",
      "status": "paid",
      "currency": "USD",
      "subtotal": 107,
      "discount": 10.7,
      "shipping": 5,
      "tax": 0,
      "total": 101.3,
      "refunded_amount": 0,
      "coupon_codes": [
        "WELCOME-7KQ2M9XA"
      ],
      "cart_id": "c-58f1a2",
      "source": "api",
      "placed_at": "2026-10-08T14:32:10.000Z",
      "paid_at": "2026-10-08T14:32:11.204Z",
      "fulfilled_at": null,
      "canceled_at": null,
      "refunded_at": null,
      "attribution": {
        "email_id": "eml_3TSvDAUQi7vqxvAQ1UEVN7k4igq",
        "campaign_id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
        "campaign_name": "October newsletter",
        "variant_id": null,
        "automation_id": null,
        "automation_name": null,
        "type": "click",
        "touched_at": "2026-10-08T09:41:52.000Z"
      },
      "items": [
        {
          "product_id": "8123456789",
          "variant_id": "42-blue",
          "sku": "TRS-BLU-42",
          "title": "Trail running shoe",
          "quantity": 1,
          "unit_price": 89,
          "total": 89,
          "categories": [
            "Shoes",
            "Running"
          ],
          "url": "https://shop.example.com/products/trail-running-shoe",
          "image_url": "https://shop.example.com/images/trail-running-shoe.jpg"
        }
      ],
      "metadata": {
        "channel": "web"
      },
      "created_at": "2026-10-08T14:32:11.204Z",
      "updated_at": "2026-10-08T14:32:11.204Z"
    }
  }
}
```

## Campos

- `event_id` (string): El ID del evento (`evt_…`). Una petición reintentada lleva el mismo ID, así que úsalo para omitir los eventos que ya hayas procesado. También puedes consultar el evento con [Obtener un evento](/es/docs/api-reference/events/get/).

- `type` (string): Siempre `order.placed`.

- `object` (object): El pedido que describe el evento. Sus campos se indican a continuación.

- `data.object` (object): El mismo objeto otra vez, con la forma que devuelve la [API de eventos](/es/docs/api-reference/events/get/) en `data`.

### Objeto de pedido

El mismo objeto que devuelve [Obtener un pedido](/es/docs/api-reference/orders/get/).

- `id` (string): El ID del pedido (`ord_…`).

- `object` (string): Siempre `order`.

- `external_id` (string): El ID del pedido en tu tienda.

- `contact_id` (string | null): El contacto del comprador (`con_…`), o `null`.

- `email` (string | null): La dirección de email del comprador, en minúsculas.

- `status` (string): `placed`, `paid`, `fulfilled`, `canceled` o `refunded`.

- `currency` (string): El código ISO 4217 de tres letras de los importes.

- `subtotal, discount, shipping, tax` (number | null): Los importes del pedido, o `null` si no se enviaron.

- `total` (number): El total del pedido.

- `refunded_amount` (number): El importe reembolsado hasta el momento.

- `coupon_codes` (string[]): Los códigos de cupón o de descuento usados en el pedido.

- `cart_id` (string | null): El ID del carrito o del pago en tu tienda del que procede el pedido.

- `source` (string): `api`, `js` (el script de seguimiento) o `import`.

- `placed_at` (string): Cuándo se realizó el pedido, en formato ISO 8601 UTC.

- `paid_at, fulfilled_at, canceled_at, refunded_at` (string | null): Cuándo tuvo el pedido ese estado por primera vez en Emailit.

- `attribution` (object | null): El email al que se atribuye el pedido, o `null`: `email_id`, `campaign_id`, `campaign_name`, `variant_id`, `automation_id`, `automation_name`, `type` (`click` u `open`) y `touched_at`. Consulta [Cómo se atribuyen los pedidos a los emails](/es/docs/commerce/#how-orders-are-credited-to-emails).

- `items` (object[]): Los artículos, cada uno con `product_id`, `variant_id`, `sku`, `title`, `quantity`, `unit_price`, `total`, `categories`, `url` e `image_url`.

- `metadata` (object): Tus propios datos de clave y valor del pedido.

- `created_at, updated_at` (string): Cuándo guardó Emailit el pedido y cuándo cambió por última vez, en formato ISO 8601 UTC.

---
Fuente: https://emailit.com/es/docs/webhooks/events/order/order-placed/

## order.updated

> Se envía cuando cambia un pedido guardado, por ejemplo su estado o por un reembolso. Si el estado ha cambiado, el evento incluye el estado anterior. Alfa: solo para el equipo de Emailit.

# order.updated

Se envía cuando cambia un pedido que Emailit ya había guardado:

- Cambias su estado, su reembolso o sus metadatos con [Actualizar un pedido](/es/docs/api-reference/orders/update/).
- Vuelves a enviar el mismo pedido con [Crear o actualizar un pedido](/es/docs/api-reference/orders/create/), o el script de seguimiento lo vuelve a enviar.
- [Importar pedidos en bloque](/es/docs/api-reference/orders/batch/) con `historical` igual a `false` lo actualiza. Las importaciones históricas no envían el evento.

Si el estado ha cambiado, el evento también lleva `previous_status`.

> **Comercio electrónico está en alfa:** Comercio electrónico solo está abierto al equipo de Emailit mientras lo probamos. Consulta [Quién puede usar Comercio electrónico](/es/docs/commerce/#who-can-use-commerce).

Las peticiones de webhook contienen un array JSON de eventos como este; consulta [Peticiones de webhook](/es/docs/webhooks/webhook-requests/).

```json
{
  "event_id": "evt_3sRH2D1JwRBeo2uyN9p2NM4VX3i",
  "type": "order.updated",
  "object": {
    "object": "order",
    "id": "ord_3aMEK4No62Zw8S1fcHNznAnnbfp",
    "external_id": "1042",
    "contact_id": "con_3EwrXnu9OaQWlfI1AyPUUEoYjQs",
    "email": "ada@example.com",
    "status": "fulfilled",
    "currency": "USD",
    "subtotal": 107,
    "discount": 10.7,
    "shipping": 5,
    "tax": 0,
    "total": 101.3,
    "refunded_amount": 0,
    "coupon_codes": [
      "WELCOME-7KQ2M9XA"
    ],
    "cart_id": "c-58f1a2",
    "source": "api",
    "placed_at": "2026-10-08T14:32:10.000Z",
    "paid_at": "2026-10-08T14:32:11.204Z",
    "fulfilled_at": "2026-10-09T11:05:43.019Z",
    "canceled_at": null,
    "refunded_at": null,
    "attribution": {
      "email_id": "eml_3TSvDAUQi7vqxvAQ1UEVN7k4igq",
      "campaign_id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
      "campaign_name": "October newsletter",
      "variant_id": null,
      "automation_id": null,
      "automation_name": null,
      "type": "click",
      "touched_at": "2026-10-08T09:41:52.000Z"
    },
    "items": [
      {
        "product_id": "8123456789",
        "variant_id": "42-blue",
        "sku": "TRS-BLU-42",
        "title": "Trail running shoe",
        "quantity": 1,
        "unit_price": 89,
        "total": 89,
        "categories": [
          "Shoes",
          "Running"
        ],
        "url": "https://shop.example.com/products/trail-running-shoe",
        "image_url": "https://shop.example.com/images/trail-running-shoe.jpg"
      }
    ],
    "metadata": {
      "channel": "web"
    },
    "created_at": "2026-10-08T14:32:11.204Z",
    "updated_at": "2026-10-09T11:05:43.019Z"
  },
  "previous_status": "paid",
  "data": {
    "object": {
      "object": "order",
      "id": "ord_3aMEK4No62Zw8S1fcHNznAnnbfp",
      "external_id": "1042",
      "contact_id": "con_3EwrXnu9OaQWlfI1AyPUUEoYjQs",
      "email": "ada@example.com",
      "status": "fulfilled",
      "currency": "USD",
      "subtotal": 107,
      "discount": 10.7,
      "shipping": 5,
      "tax": 0,
      "total": 101.3,
      "refunded_amount": 0,
      "coupon_codes": [
        "WELCOME-7KQ2M9XA"
      ],
      "cart_id": "c-58f1a2",
      "source": "api",
      "placed_at": "2026-10-08T14:32:10.000Z",
      "paid_at": "2026-10-08T14:32:11.204Z",
      "fulfilled_at": "2026-10-09T11:05:43.019Z",
      "canceled_at": null,
      "refunded_at": null,
      "attribution": {
        "email_id": "eml_3TSvDAUQi7vqxvAQ1UEVN7k4igq",
        "campaign_id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
        "campaign_name": "October newsletter",
        "variant_id": null,
        "automation_id": null,
        "automation_name": null,
        "type": "click",
        "touched_at": "2026-10-08T09:41:52.000Z"
      },
      "items": [
        {
          "product_id": "8123456789",
          "variant_id": "42-blue",
          "sku": "TRS-BLU-42",
          "title": "Trail running shoe",
          "quantity": 1,
          "unit_price": 89,
          "total": 89,
          "categories": [
            "Shoes",
            "Running"
          ],
          "url": "https://shop.example.com/products/trail-running-shoe",
          "image_url": "https://shop.example.com/images/trail-running-shoe.jpg"
        }
      ],
      "metadata": {
        "channel": "web"
      },
      "created_at": "2026-10-08T14:32:11.204Z",
      "updated_at": "2026-10-09T11:05:43.019Z"
    },
    "previous_status": "paid"
  }
}
```

## Campos

- `event_id` (string): El ID del evento (`evt_…`). Una petición reintentada lleva el mismo ID, así que úsalo para omitir los eventos que ya hayas procesado. También puedes consultar el evento con [Obtener un evento](/es/docs/api-reference/events/get/).

- `type` (string): Siempre `order.updated`.

- `object` (object): El pedido después del cambio. Tiene los mismos campos que en [`order.placed`](/es/docs/webhooks/events/order/placed/#order-object) y en [Obtener un pedido](/es/docs/api-reference/orders/get/).

- `previous_status` (string): El estado del pedido antes del cambio. Solo se incluye si el estado ha cambiado. Va junto a `object`, no dentro de él.

- `data` (object): `object` y `previous_status` otra vez, con la forma que devuelve la [API de eventos](/es/docs/api-reference/events/get/) en `data`.

---
Fuente: https://emailit.com/es/docs/webhooks/events/order/order-updated/
