# Event lifecycle

Canonical: https://docs.flowrelay.app/operate/event-lifecycle/
Markdown: https://docs.flowrelay.app/operate/event-lifecycle.md

Use lifecycle states to understand what FlowRelay has proved. Do not read them as a claim about downstream Shopify Flow actions.

## Lifecycle states
Use lifecycle states to understand the boundary FlowRelay has reached for a specific event.


- State: Accepted; Meaning: FlowRelay authenticated and durably stored the event before responding.
- State: Queued or processing; Meaning: FlowRelay is still working toward a terminal handoff result.
- State: Delivered; Meaning: FlowRelay handed the trigger to Shopify Flow.
- State: No workflow; Meaning: FlowRelay could not find a matching enabled Shopify Flow workflow.
- State: Duplicate suppressed; Meaning: FlowRelay identified a repeated external event ID for the same endpoint inside the dedupe window.
- State: Replayed; Meaning: A deliberate second attempt was made from retained event material.

## Retry and reconciliation
FlowRelay may reconcile accepted events that have not reached a terminal outcome. It does not expose merchant-configurable retry schedules or retry policy controls.


## Use the receipt for recovery
The receipt gives the stable code, replay availability, diagnostics state, and safe next action for the event's current lifecycle state.


## Operating guidance
Apply the concept through the receipt before changing setup, resending, or replaying.
1. Start with the receipt outcome: accepted, delivered, failed, no workflow, duplicate suppressed, or rejected.
2. Read the timeline to see whether FlowRelay stored the event, queued processing, evaluated duplicate suppression, attempted the Shopify Flow handoff, or recorded a terminal result.
3. Treat Delivered as the FlowRelay-to-Shopify Flow handoff boundary, not downstream workflow completion.
4. Treat No workflow as a setup/readiness problem: enable the matching FlowRelay trigger in Shopify Flow, then preview replay while retained.
5. Treat Duplicate suppressed as a sender retry or repeated external event ID that FlowRelay blocked from a second automatic handoff.
6. Use the recovery code and safe next action before replaying, resending, or changing endpoint configuration.

## Handoff Boundary
Delivered means FlowRelay handed the trigger to Shopify Flow. It does not mean downstream Shopify Flow branches, app calls, fulfillment changes, emails, or later systems completed.

## Related
- [Read receipts](https://docs.flowrelay.app/operate/receipts.md)
- [Event history](https://docs.flowrelay.app/operate/event-history.md)
- [Error codes](https://docs.flowrelay.app/recover/error-codes.md)

## Safety Boundary
Do not include raw payloads, endpoint secrets, auth headers, HMAC values, Shopify tokens, Shopify sessions, database URLs, customer data, merchant incidents, or copied private logs in public examples.
