Skip to main content
The JTL platform has three event systems depending on what you’re building and what kind of events you need to handle. This guide explains each one, how they differ, and when to use which.

Event Systems at a Glance

ERP Webhooks

What they are: Signed HTTP requests that JTL sends to your app when data changes in the merchant’s ERP. An item is edited, an order is paid, stock moves between warehouses, and your endpoint hears about it within seconds. How they work: You declare the topics you want and an HTTPS endpoint in your app manifest. When a matching change occurs, JTL posts a signed request to that endpoint. The payload carries the key of the entity that changed rather than the entity itself, so your handler verifies the signature, acknowledges the delivery, and then fetches the current record through the GraphQL API. When to use them:
  • Keeping your own store in sync with ERP data
  • Triggering work when an order reaches a status your app cares about
  • Reacting to stock movements, returns, or payment changes without polling

Manifest Configuration

Subscriptions live under capabilities.erp.webhooks in your app.json:
Each subscription pairs a set of topics with one endpoint, so different domains can route to different handlers.

Key Characteristics

Treat an unverified delivery as untrusted input. Your endpoint is a public URL, and the signature is the only thing that distinguishes a real event from a forged one.
For the topic list and the handler implementation, see Webhook Topics and Handling Webhooks.

AppBridge Events

In development: Publishing events from your app to the host is in active development. Subscribing to host entity-context events is available today.
What they are: Events exchanged between your Cloud App and the App Shell over the iframe messaging channel. Communication is asynchronous and non-blocking, so your app continues executing while the message is delivered, with no HTTP request or polling involved. When to use them:
  • Reacting when the merchant navigates to a different customer, order, quotation, or item
  • Notifying the App Shell that your app completed an action (in development)

Subscribing to Host Events

A panel subscribes to host events to react when the merchant navigates to a different entity. Each ERP entity view publishes its own change event, using PascalCase past-tense names with object payloads.
See Reading Panel Context for the full list of events and the pattern.

Publishing Events

Publishing will let your app notify the host when it completes an action, for example when a verification step finishes or a generated description is ready to insert. The API is in active development.

Key Characteristics

Setup Handshake

What they are: A URL defined in your app’s app.json that JTL loads in an iframe when a merchant installs your app. How they work: You define a configurationUrl in the lifecycle section of your manifest. When a merchant installs your app, JTL loads that URL inside the JTL Hub. Your app shows its onboarding UI, completes the AppBridge handshake, and signals setup is done by calling appBridge.method.call('setupCompleted'). When to use it:
  • Showing onboarding UI when a merchant installs your app
  • Verifying the app token from AppBridge and persisting the tenant connection
  • Collecting any configuration the merchant needs to provide

Manifest Configuration

The setup URL is defined in your app.json:

Key Characteristics

The configurationUrl is the entry point for the merchant’s first interaction with your app. If this URL is unreachable when a merchant tries to install your app, the installation fails. Make sure it’s always available.
For implementation details, see the Quick Start: From Scratch guide, which walks through the full setup handshake.

Choosing the Right Event System


What’s Next?

Handling Webhooks

Declare subscriptions, receive deliveries, and fetch the changed entity.

Error Handling

Handle failures in event processing and API calls.