as

Settings
Sign out
Notifications
Alexa
Amazon Appstore
AWS
Documentation
Support
Contact Us
My Cases
Ti ringraziamo per la visita. Questa pagina รจ per il momento disponibile solo in inglese.

Event feed reporting

Overview

The Event feed service was created to meet the requirements of customers who require more control over the time and format of shopper events occurring within their stores to allow for a more flexible and scalable integration with back-office systems such as Point of Sale and ERP. The Event feed service is targeting three types of events, 1)Ordering, 2) Payment and 3) Shopper.

The Event feed solution guide is applicable for all retail integration models supported by Amazon Just Walkout services.

Prerequisites

The following are the prerequisites to enable retailers to take advantage of the Event feed solution.

AWS EventBridge: the sample solution depends on AWS EventBridge service to receive events from the Amazon systems. You will also need to have permissions to create, update AWS EventBridge resources and IAM roles and policies.

Just Walk Out Store: the Event feed solution uses cart event data generated in an operational Just Walk Out store.

AWS account: An AWS account is required to utilize the Event feed solution. For steps on how to get an AWS account follow steps here.

Common use cases

Below are some sample use cases to enable most flexibility and provides easy access to data across multiple merchant accounts and Just Walk Out stores. Select the most applicable use case for your company based on your reporting need and technical solution complexity.

Stage incoming cart data on an S3: this approach works best for customers that have already invested in mechanisms to ingest reporting data from an S3 or a file mount. This allows you to control the frequency of generating the event file to you need as well as doing schema translation to match your reporting intake process.

Store incoming cart data into a document database: this approach allows you to pass the incoming cart data to a data store, in this case a document database to enable use cases such as available inventory in a store in near time and alerting to reaching a threshold Pipe the incoming event into a destination API: this use case allows you to pass the payload to an API endpoint you might have. EventBridge supports most common authorization mechanisms to provide maximum flexibility. Note: there are additional integration options so please consult the EventBridge documentation for more detailed use cases.

High level event flow


A shopper will complete their trip at an Amazon Just Walkout store. As soon as the shopping trip ends, Amazon will complete the validation process and send the event to the process in Figure 1

1- The EventBridge service in the Amazon system will use a pre-configured EventBus endpoint to deliver the cart data. For steps on how to onboard to the Amazon system, see below. For steps on how to create an event bus see steps here.

2- As soon as the event is received in the customer account, it will validated against a rule that you have configured in your EventBridge. The event validation must comply with the Amazon event schema to ensure delivery of the cart events. For steps on how to configure EventBridge rules, see here. Below is a sample of event rule based on current cart schema. Note that the event schema can change so please review the latest documentation from Amazon.

{
  "source": ["AmazonEventsService"],
  "detail-type": ["CART"]
}

3- Once the event has been validated, the event data will be routed to the target defined in the EventBridge. Event bridge supports multiple types of targets. Please select the applicable target for your company. For steps on how to configure a target for an EventBridge rule, see here..

4- Depending on your use case you can process the incoming event. For an example of an event received from the Amazon systems see below

Sample event where Amazon is calculating the cart with an Amazon applied promotion. The merchantPromotionId in the payload will match the promotion in the Amazon merchant portal

{
  "version": "0",
  "id": "a001e3f8-2c20-973e-b477-436332a4ee31",
  "detail-type": "CART",
  "source": "AmazonEventsService",
  "account": "216989093685",
  "time": "2025-09-26T14:44:49Z",
  "region": "eu-west-1",
  "resources": [],
  "detail": {
    "eventId": "fc85b59a-ba21-4bd9-ba8e-84c262df9e25",
    "eventName": "CHECKOUT",
    "storeId": "<STORE-ID>",
    "eventPayload": {
      "sessionId": "fc85b59a-ba21-4bd9-ba8e-84c262df9e25",
      "orderId": "204-2193710-1358720",
      "sessionStartTime": 1758895638479,
      "sessionEndTime": 1758895677726,
      "cartItems": [
        {
          "quantityValue": "1.0",
          "quantityUnit": "unit",
          "priceValue": "4.25",
          "priceCurrency": "GBP",
          "taxValue": "0.0",
          "merchantSku": "3986",
          "taxDiscountValue": "0.0",
          "taxCurrency": "GBP",
          "taxDiscountCurrency": "GBP",
          "listPriceValue": "4.25",
          "listPriceCurrency": "GBP",
          "totalPromotion": "-2.13",
          "orderLineItemId": "54636766128162",
          "promotionInfos": [
            {
              "merchantPromotionId": "63c06f6f-0276-4b06-b395-cf80724b3e89",
              "promotionValue": "-2.13",
              "taxDiscountValue": "0.0"
            }
          ]
        }
      ]
    }
  }
}

You can apply schema translation to match the interface or input to any of your data ingestion targets.

For a sample Python Lambda solution to process the incoming message and store into an S3 file see below


  1. When the incoming message is matches the Eventbus rule, the event is passed to the DataEmissions lambda

  2. The Data emissions lambda is configured to record the incoming event to a file that will roll every minute using a configuration value. Full Lambda code below.

For CloudFormation template, sample Python Lambda on how to process incoming message please contact your Amazon team.

Data dictionary

Cart event

Field Name Data Type Sample Value Description
quantityValue number 2 Numerical value representing the quantity of the item in the cart. Supports decimal quantities for weight-based or fractional items.
quantityUnit string "unit" Unit of measurement for the quantity. Standard values include "unit", "kg", "lb", "oz", etc. Ensures proper quantity interpretation across systems.
priceValue number 4.99 Final per-unit price of the item after all applicable discounts (excluding tax). Used for order total calculations and financial reporting.
priceCurrency string "USD" ISO-4217 currency code associated with the price value. Supports multi-currency operations and international commerce.
taxValue number 0.41 Tax amount applied to this line item. Calculated based on applicable tax rules for the item, store, and customer location.
merchantSku string "089765432109" Merchant-specific Stock Keeping Unit identifier. Used for inventory management and product identification in merchant systems.
taxDiscountValue number 0 Discount amount specifically applied to the tax value. Used in promotional scenarios for tax inclusive pricing where tax may be reduced or waived.
taxCurrency string "USD" ISO-4217 currency code associated with the tax value. Typically matches priceCurrency .
taxDiscountCurrency string "USD" ISO-4217 currency code associated with the tax discount value. Typically matches taxCurrency.
listPriceValue number 4.99 Original per-unit price of the item before any discounts or promotions were applied. Used for discount calculations and price comparison.
listPriceCurrency string "USD" ISO-4217 currency code associated with the list price value. Typically matches priceCurrency.
orderLineItemId string "127984561298765" Unique identifier for this specific line item within the order. Used for line-item level operations and tracking.
promotionInfo array/null null Array of PromotionInfo objects, each containing: merchantPromotionId (String): unique identifier for the promotion; promotionValue (BigDecimal): monetary value of the promotion discount; taxDiscountValue (BigDecimal): discount amount specifically applied to tax. Null if no promotions were applied.

Payment event

Field Name Type Definition Required Pattern/Constraints
amount Structure Payment amount information with value (String) and currencyCode (String of length 3) Yes N/A
brand String Card brand (e.g., VISA, MASTERCARD, AMEX) No ^[A-Za-z]+$, max length: 20
cardLastFourDigits String Last four digits of the payment card No ^[0-9]{4}$
currency String Currency code (e.g., USD, CAD, GBP) Yes ^[A-Z]{3}$
expirationDate Structure Card expiration information with: month (String) and year (String) No N/A
paymentRequestTime Timestamp When the initial charge/refund was created Yes Timestamp format
paymentRequestId String (UUID) Unique identifier for the payment request Yes ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
paymentReceivedTime Timestamp When the processor response/completion occurred Yes Timestamp format
posEntryMode String Point of Sale entry mode No ^[0-9]{2}$
reconciliationId String Identifier used to reconcile a transaction Yes ^[0-9a-zA-Z_-]+$, max length: 255
authorizationResponseCode String Authorization response code from payment processor No ^[0-9]{4}$
authorizationCode String Authorization code from payment processor No ^[A-Za-z0-9_-]+$, max length: 50
cryptogramInformationData String Cryptogram information data for EMV transactions No ^[A-Za-z0-9_-]+$, max length: 255
cardholderVerificationMethod String Method used to verify the cardholder No ^[A-Za-z0-9_-\s]+$, max length: 50
panSequenceNumber String Primary Account Number sequence number No ^[A-Za-z0-9_-]+$, max length: 50
terminalId String Identifier for the payment terminal No ^[A-Za-z0-9_-]+$, max length: 50
cardStatementTransactionId String Transaction ID that appears on the card statement No ^[A-Za-z0-9_-]+$, max length: 255
status String Status of the eventName (e.g. AuthorizationApproved, AuthorizationDeclined, RefundPending, RefundApproved, CaptureApproved, CapturePending, AuthorizationCancelled, etc.) Yes ^[A-Za-z_]+$, max length: 50
applicationId String Application identifier for EMV transactions No ^[A-Za-z0-9_-]+$, max length: 50

Testing

You can validate your event processing rule and target setup by sending a test event to your event bus following these steps

  1. Login to the AWS account where the eventbus is deployed
  2. Navigate to EventBridge service
  3. Select event bus from the left navigation section
  4. On the upper right side, click on send events
  5. Fill the pop up window with the following value. Note you need to select the event bus you created


Use the following for the EventDetail


{
  "detail": {
    "eventId": "bcf4d0e9-94ea-4b5e-9775-810aebb1e446",
    "eventName": "CHECKOUT",
    "storeId": "<STORE_ID>",
    "eventPayload": {
      "sessionId": "bcf4d0e9-94ea-4b5e-9775-810aebb1e446",
      "orderId": "113-5204848-9196220",
      "sessionStartTime": 1756143973871,
      "sessionEndTime": 1756143999192,
      "cartItems": [{
        "quantityValue": "1.0",
        "quantityUnit": "unit",
        "priceValue": "4.25",
        "priceCurrency": "USD",
        "taxValue": "0.0",
        "merchantSku": "786162200433",
        "taxDiscountValue": "0",
        "taxCurrency": "USD",
        "taxDiscountCurrency": "USD",
        "listPriceValue": "4.25",
        "listPriceCurrency": "USD",
        "totalPromotion": "0",
        "orderLineItemId": "137392212080481",
        "promotionInfos": []
      }]
    }
  }
}

Click on send events. You can validate the events will be delivered to the target you have setup for the event rule