Recover
Retries, replay, and resend
FlowRelay recovery uses three different ideas. Sender resend starts outside FlowRelay, FlowRelay retry and reconciliation run inside FlowRelay, and replay is a deliberate operator or agent action.
Choose the right recovery path #
FlowRelay separates sender resend, FlowRelay retry or reconciliation, and deliberate replay. Pick the path based on what the receipt proves.
| Situation | Use | Why |
|---|---|---|
| FlowRelay rejected the request | Sender resend | FlowRelay does not have a trusted accepted event to replay. |
| FlowRelay accepted the event but setup was not ready | FlowRelay replay after a fix | The retained event can be handed to Shopify Flow after endpoint or workflow readiness is corrected. |
| Processing is not terminal yet | Wait for FlowRelay reconciliation or inspect diagnostics | Automatic duplicate side effects are avoided when processing may already have started. |
| Retention expired or replay is unavailable | Sender resend | FlowRelay no longer has replayable event material. |
| The source system intentionally emits a new business event | Sender resend or new send | That is a new source-owned event, not FlowRelay recovery. |
What FlowRelay retries #
FlowRelay may retry queue processing or reconcile accepted events that have not reached a terminal handoff result. FlowRelay does not expose configurable retry schedules or per-endpoint retry policies.
Manual review #
Manual review means FlowRelay paused automatic recovery because Shopify Flow may already have received the handoff, so a duplicate Shopify Flow action could run. Use diagnostics and the replay preview before approving any second handoff.
What the sender owns #
The sender owns fresh sends and corrected resends. Use sender resend when FlowRelay rejected the request, the source payload must change, replay expired, or the business event is intentionally new.
Decision guide
Start with the receipt, then choose the lowest-risk recovery path.
The request was rejected, replay is unavailable, or the source intentionally needs a fresh event
Ask the external sender to resend.
Shopify throttled the handoff or was temporarily unavailable
Let FlowRelay retry while the receipt shows a waiting-to-retry state.
The receipt says Shopify Flow may already have received the handoff
Use manual review; do not trigger an automatic retry.
You are choosing between retry, replay, and resend
Start with the receipt state: rejected, accepted, delivered, failed, duplicate-suppressed, or unavailable for replay.
You are looking for a merchant-configurable retry schedule
Stop; FlowRelay does not expose retry policy controls.
Replay is available and may be appropriate
Preview current setup, readiness, side-effect risk, and grant authority before confirmation.
Downstream processing may already have started
Prefer manual review, diagnostics, and explicit replay confirmation.
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.
FlowRelay