Amazon FBM fulfillment: conversation logs for operations handover

Review conversation logs for operations handover in Amazon FBM fulfillment. Check sources, input boundaries, error handling and repeatable test evidence.

What the documents look like

FBM orders are fulfilled by the seller, and the seller also sets the return address. Platform warehouse inspection is not part of this flow. The working materials that move between shifts are the order picking list, the shipment confirmation, the return address setting, and the logistics tracking table. Carrier selection and tracking number confirmation take up a large share of the day, and undelivered-item complaints extend the handling chain further. These materials update per order and per day.

Conversation logs and audit matter here because a handover needs to locate a specific turn under one conversation using chatId and dataId, then check who requested what, at which state, and with what authority. The existence of a log does not by itself constitute a compliance audit. Reconciliation, retention, and compliance obligations belong to a complete business solution implemented separately.

Constraints at the conversation logs step

The chat interface has documented behavior that shapes any handover review. When chatId is empty, the system does not use the context function FastGPT provides, and the passed messages build the context entirely. When chatId is a non-empty string, the system automatically takes the conversation from the database and uses the last item of the messages array as the user question; the remaining messages are ignored. A passed responseChatItemId becomes the ID of the response message for that turn and is stored in the database; it must be unique under the current chatId. The detail field decides whether intermediate values are returned: in stream mode they are distinguished by event, and in non-stream mode the result is held in responseData. On the session list interface, source=api returns only sessions created through the API and does not return sessions from the page. Clearing application sessions likewise clears only sessions created through the API Key. Session management is keyed by appId and chatId; conversation management locates a single conversation by dataId; the run detail query needs appId, chatId, and dataId together.

Hypothetical drill sample: on 10 March 2025, a customer service role at an FBM seller starts a handover about a return address change for Order A. The conversation chatId is "fbm-return-0310" and the dataId is "rec-0310-01". The handover material text reads: "Order A picking list printed; shipment confirmation not generated; return address set to the default warehouse address; no tracking number for this order in the logistics tracking table." The sentence under review reads: "The return address change has been authorized and can be confirmed for execution directly in the conversation." That sentence states no authorizing party, no authorization time, and no authorization scope, so it is unsupported.

Configuration and implementation checks

Check itemDocumented setting or fieldHow this sample is checked
Conversation identityappId, chatIdConfirm the handover request carries chatId "fbm-return-0310" and matches the Order A record
Turn locationdataIdConfirm dataId is "rec-0310-01" and falls under the same chatId
Run detaildetail, responseDataSet detail per the contract when intermediate values are needed, then inspect responseData content
Session sourcesource=apiConfirm the session was created through the API; page sessions are outside this list
Response message identifierresponseChatItemIdHypothetical starting value "resp-0310-01", chosen so it can be compared against the same batch as dataId; compare uniqueness against other responseChatItemId values under the same chatId
Variable substitutionvariablesCheck whether passed variables replace [key] in input content; do not infer business authorization from this

Three common errors

  1. Treating the empty-chatId and non-empty-chatId context behaviors as the same thing. Input: the actual messages array and the returned historyPreview. Comparison: whether the last message item was taken as this turn's question. Observable result: whether both point to the same question. When chatId is non-empty, the remaining messages are ignored, so a reviewer who assumes all messages were used will misread the turn.
  2. Treating a source=api session list as the full set of sessions. Input: appId together with offset and pageSize. Comparison: the returned chatId set against page sessions. Observable result: whether any page session appears in that list. The documented behavior is that page sessions do not appear.
  3. Treating a retrieval result or a filled form as an authorization credential. Input: the sentence under review and the handover material text. Comparison: whether the material text states authorizing party, authorization time, and authorization scope. Observable result: whether the sentence is supported. In this sample the text states none of the three, so the sentence remains unsupported and the authorization gap stays open.

How to verify the setup

  1. Input the hypothetical chatId "fbm-return-0310" and dataId "rec-0310-01". Compare the query and historyPreview returned by the run detail against each other. The condition is met when both point to the same question and the dataId falls under that chatId. This is an expected result, not a recorded test.
  2. Input the sentence under review, "The return address change has been authorized and can be confirmed for execution directly in the conversation." Compare it against the material text for authorizing party, authorization time, and authorization scope. The condition is met only when the text states all three. This sample states none, so the result is unsupported and the authorization gap is retained for follow-up.
  3. Input source=api with the session list request parameters. Compare the returned chatId set against the page session set. The condition is met when no page session appears in the list. If one appears, record it as a mismatch and recheck the source field.

A pending request is not an approval, an offered option is not execution, and an unsigned termination is not a completed termination. A relevance score is not a category, entity, or permission filter, and retrieval is not authorization. Forms collect values; business verification, approval, database writes, and external synchronization need their stated downstream implementation. Where the documents do not state an error code or an observed result, describe what to compare and leave the outcome unknown.