> ## Documentation Index
> Fetch the complete documentation index at: https://developer.jtl-software.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhook Topics

> The ERP event topics a Cloud App can subscribe to in its manifest.

## Topic Format

Each topic identifies a specific event for a specific entity using a reverse-DNS format:

```
com.jtl.erp.workflow.v1.item.changed
└─────────────────────┘ └──┘ └─────┘
     namespace          entity  event
```

For example:

`com.jtl.erp.workflow.v1.item.changed`

represents a `changed` event for the `item` entity.

The topic you declare in `capabilities.erp.webhooks.subscriptions[].topics` is delivered as-is in the event payload. The topic matches the event's `type` and `subject` fields, so you can use these fields to identify and route events without maintaining a separate lookup table.

Topics are matched exactly. If your app needs to receive multiple events, declare each topic separately.

## Payload

All ERP topics use the same event envelope and `data` structure.

The `data` object contains:

* `objectKey`: the key of the entity that triggered the event
* a timestamp for when the event occurred
* information about the user who triggered the event

The payload does not contain the entity's fields or current state. Use `objectKey` to retrieve the entity through the GraphQL API when you need its details.

See [Handling Webhooks](/cloud/guides/cloud-apps/handling-webhooks) for the full envelope and a worked example.

## Items

Topics that fire on changes to items in the item catalog.

| Topic | Fires when |
| - | - |
| `com.jtl.erp.workflow.v1.item.created` | An item is created. |
| `com.jtl.erp.workflow.v1.item.changed` | An item is modified. |
| `com.jtl.erp.workflow.v1.item.deleted` | An item is deleted. |

## Customers

Topics that fire on changes to customer records.

| Topic | Fires when |
| - | - |
| `com.jtl.erp.workflow.v1.customer.created` | A customer is created. |
| `com.jtl.erp.workflow.v1.customer.changed` | A customer is modified. |

## Orders

Topics that cover the sales order lifecycle, including payment and fulfilment milestones.

| Topic | Fires when |
| - | - |
| `com.jtl.erp.workflow.v1.order.created` | An order is created. |
| `com.jtl.erp.workflow.v1.order.changed` | An order is modified. |
| `com.jtl.erp.workflow.v1.order.deleted` | An order is deleted. |
| `com.jtl.erp.workflow.v1.order.cancelled` | An order is cancelled. |
| `com.jtl.erp.workflow.v1.order.delivered` | An order is marked as delivered. |
| `com.jtl.erp.workflow.v1.order.merged` | An order is merged into another order. |
| `com.jtl.erp.workflow.v1.order.split.source` | An order is split. Carries the key of the original order. |
| `com.jtl.erp.workflow.v1.order.split.new` | An order is split. Carries the key of the order created by the split. |
| `com.jtl.erp.workflow.v1.order.completed.without-shipment` | An order is completed without a shipment. |
| `com.jtl.erp.workflow.v1.order.payment.changed` | The payment status of an order changes. |
| `com.jtl.erp.workflow.v1.order.payment.fully-paid` | An order is fully paid. |

## Invoices

Topics that cover outgoing invoices and their payment status.

| Topic | Fires when |
| - | - |
| `com.jtl.erp.workflow.v1.invoice.created` | An invoice is created. |
| `com.jtl.erp.workflow.v1.invoice.changed` | An invoice is modified. |
| `com.jtl.erp.workflow.v1.invoice.deleted` | An invoice is deleted. |
| `com.jtl.erp.workflow.v1.invoice.cancelled` | An invoice is cancelled. |
| `com.jtl.erp.workflow.v1.invoice.payment.fully-paid` | An invoice is fully paid. |

## Credit Notes

Topics that fire on changes to credit notes.

| Topic | Fires when |
| - | - |
| `com.jtl.erp.workflow.v1.credit-note.created` | A credit note is created. |
| `com.jtl.erp.workflow.v1.credit-note.changed` | A credit note is modified. |
| `com.jtl.erp.workflow.v1.credit-note.deleted` | A credit note is deleted. |
| `com.jtl.erp.workflow.v1.credit-note.cancelled` | A credit note is cancelled. |

## Delivery Notes

Topics that cover delivery note creation and dispatch.

| Topic | Fires when |
| - | - |
| `com.jtl.erp.workflow.v1.delivery-note.created` | A delivery note is created. |
| `com.jtl.erp.workflow.v1.delivery-note.deleted` | A delivery note is deleted. |
| `com.jtl.erp.workflow.v1.delivery-note.shipped` | A delivery note is shipped. |

## Returns

Topics that cover returns and the status transitions of individual return positions.

| Topic | Fires when |
| - | - |
| `com.jtl.erp.workflow.v1.return.created` | A return is created. |
| `com.jtl.erp.workflow.v1.return.changed` | A return is modified. |
| `com.jtl.erp.workflow.v1.return.deleted` | A return is deleted. |

## Payments

Topics that cover payment records and bank reconciliation.

| Topic | Fires when |
| - | - |
| `com.jtl.erp.workflow.v1.payment.created` | A payment is created. |
| `com.jtl.erp.workflow.v1.payment.changed` | A payment is modified. |
| `com.jtl.erp.workflow.v1.payment.deleted` | A payment is deleted. |
| `com.jtl.erp.workflow.v1.payment-reconciliation.imported` | A transaction is imported into payment reconciliation. |
| `com.jtl.erp.workflow.v1.payment-reconciliation.created` | A payment reconciliation record is created. |
| `com.jtl.erp.workflow.v1.payment-reconciliation.assigned` | A payment reconciliation record is assigned. |

## Picking

Topics that cover pick lists and pick confirmations.

| Topic | Fires when |
| - | - |
| `com.jtl.erp.workflow.v1.picklist.created` | A pick list is created. |
| `com.jtl.erp.workflow.v1.picklist.changed` | A pick list is modified. |
| `com.jtl.erp.workflow.v1.picklist.picked` | A pick list is picked. |
| `com.jtl.erp.workflow.v1.picklist.completed` | A pick list is completed. |

## Warehouse Movements

Topics that fire on stock bookings into and out of the warehouse.

| Topic | Fires when |
| - | - |
| `com.jtl.erp.workflow.v1.warehouse-incoming.stock.booked.in` | Stock is booked into the warehouse. |
| `com.jtl.erp.workflow.v1.warehouse-outgoing.stock.booked.out` | Stock is booked out of the warehouse. |
| `com.jtl.erp.workflow.v1.warehouse-outgoing.shortage.reported` | A shortage is reported on an outgoing movement. |

## Stock Transfers

Topics that cover transfers of stock between warehouses.

| Topic | Fires when |
| - | - |
| `com.jtl.erp.workflow.v1.stock-transfer.created` | A stock transfer is created. |
| `com.jtl.erp.workflow.v1.stock-transfer.changed` | A stock transfer is modified. |
| `com.jtl.erp.workflow.v1.stock-transfer.deleted` | A stock transfer is deleted. |
| `com.jtl.erp.workflow.v1.stock-transfer.cancelled` | A stock transfer is cancelled. |
| `com.jtl.erp.workflow.v1.stock-transfer.delivered` | A stock transfer is delivered. |
| `com.jtl.erp.workflow.v1.stock-transfer.completed` | A stock transfer is completed. |

## Shipments

Topics that cover packages, tracking, and carrier export.

| Topic | Fires when |
| - | - |
| `com.jtl.erp.workflow.v1.shipment.package.created` | A package is created for a shipment. |
| `com.jtl.erp.workflow.v1.shipment.tracking.changed` | Tracking information on a shipment changes. |
| `com.jtl.erp.workflow.v1.shipment.export.failed` | Export of a shipment to the carrier fails. |

## Fulfillment Network

Topics that cover fulfillment orders and the fulfiller's processing status.

| Topic | Fires when |
| - | - |
| `com.jtl.erp.workflow.v1.ffn.created` | A fulfillment order is created. |
| `com.jtl.erp.workflow.v1.ffn.deleted` | A fulfillment order is deleted. |
| `com.jtl.erp.workflow.v1.ffn.failed` | A fulfillment order fails. |
| `com.jtl.erp.workflow.v1.ffn.fulfiller.confirmed` | The fulfiller confirms the order. |
| `com.jtl.erp.workflow.v1.ffn.fulfiller.processing.started` | The fulfiller starts processing the order. |
| `com.jtl.erp.workflow.v1.ffn.fulfiller.completed` | The fulfiller completes the order. |
| `com.jtl.erp.workflow.v1.ffn.fulfiller.cancelled` | The fulfiller cancels the order. |
| `com.jtl.erp.workflow.v1.ffn.fulfiller.partially-cancelled` | The fulfiller cancels part of the order. |

***

## What's Next?

<CardGroup cols={2}>
  <Card title="Handling Webhooks" icon="webhook" href="/cloud/guides/cloud-apps/handling-webhooks">
    Declare subscriptions, receive deliveries, and fetch the changed entity.
  </Card>

  <Card title="Webhooks & Events" icon="bell" href="/cloud/guides/essentials/common-patterns/webhooks">
    How ERP webhooks compare to AppBridge events.
  </Card>

  <Card title="Best Practices" icon="star" href="/cloud/guides/cloud-apps/best-practices">
    Production patterns for error handling, security, and performance.
  </Card>
</CardGroup>
