Replay and bulk replay
Every time a hook runs, Cloudhooks keeps a log of the run, including the event payload the hook received. Replay lets you run your hook again with that stored payload. For example, if an external API your hook calls was down, you can replay the runs that failed once the API is back up.
Replay works on a single run. Bulk replay works on many: you filter a hook's run log and replay every matching run at once, up to 5,000 runs in one batch.
Important: A replay is a real execution, not a simulation. Every action your hook performs happens again, including changing data in your store, calling external APIs, and sending emails.
Why bulk replay exists
A typical scenario: your hook failed on dozens of orders over a weekend because an external service was down, or because of a bug in your code. Shopify won't send those webhooks again. Before bulk replay, the only way to recover those events was to replay the failed runs one by one.
With bulk replay, once the external service is back up (or you've fixed the bug), you filter the run log for the failed runs in that time window and replay them all in one go. No more replaying runs one at a time.
Plan availability
- Starter (Free): Not included. Clicking a replay button shows an upgrade prompt instead.
- Trial: Included. The 1,200 action limit applies; replays consume actions.
- Pro: Included. Unlimited actions.
- Custom: Included. Unlimited actions.
Replaying a single run
Open a hook → Logs tab. Each finished run has a Replay run button (the replay icon, the same one that marks replayed runs) between Copy payload to clipboard and Debug.
Click it and confirm the "Are you sure you'd like to re-run this event?" prompt. Cloudhooks runs the hook again with the stored payload and reloads the list. The new run appears at the top with a Replayed marker next to its status icon (tooltip: "Replayed: run again from an earlier log"). The original run stays unchanged.
The replay button is hidden for runs waiting on a scheduled retry (see Automated rate-limit handling). Those runs will run again on their own.
Replaying runs in bulk
1. Filter the run log
Open a hook → Logs tab and use the filter bar above the list to narrow down the runs you want to replay:
- Resource Id – the ID of a Shopify resource, such as an order ID. Press Enter to apply it.
- Status – All statuses, Succeeded, Failed, Unprocessed, or Scheduled retry
- Delivery source – All sources, Webhook, API, or Replayed
- Date range – the time window the runs were triggered in
Bulk replay always uses the filters currently applied to the list, so what you see is what gets replayed.
2. Review and confirm
Click Replay matching runs (next to Refresh). The Replay matching runs window counts the matching runs and shows:
- The filters being applied, e.g., Status: Failed · Source: All sources · Resource: all resources · Dates: Oct 18, 2026 00:00 – Oct 19, 2026 23:59
- How many runs will be replayed, and how many will be skipped and why, e.g., 37 runs will be replayed, 3 skipped (event data expired)
- A warning: Each run executes the hook's actions again for real and is billed as a normal run.
- Whether the hook is marked "safe to re-run"
To start, tick the checkbox confirming that the runs will execute the hook's actions again, then click the Replay button. Both show the number of runs to be replayed.
3. Follow the progress
Once started, a Bulk replay in progress banner appears above the filter bar. It shows when the batch started, the filters it uses, a progress bar, and a running tally of how many runs have succeeded, failed, are retrying, or are still running.
The run list refreshes on its own as replays come in, each with the Replayed marker. To see only the replays, set Delivery source to Replayed.
You can navigate away or close the app. The batch keeps running on our servers. When you come back to the Logs tab, the banner shows the batch's current progress.
4. Cancel if needed
Click Cancel replay in the banner. Runs that are already executing will finish. Runs that are queued or haven't been sent for execution yet are dropped.
5. Review the result
When the batch ends, the banner changes to Bulk replay completed, Bulk replay cancelled, or Bulk replay stopped with the reason. While the last runs are still executing, the title ends with "Finishing the remaining runs…".
The summary shows when the batch ran and the final tally. You can dismiss it; otherwise it disappears after 7 days.
How replay works
Replays use your current code
A replay runs the hook's code and settings as they are now, not as they were when the original run happened. That's usually what you want, since any fix you made is applied to the replayed runs. But it also means a replay can behave differently from the original run.
Each replay is a new run
The original run is never modified. Each replay creates a new run with its own log entry, outcome, and usage, marked Replayed. A replayed run can itself be replayed later.
If Automated rate-limit handling is on for the hook, replayed runs are retried like any other run. They show up as retrying in the banner tally.
Runs are sent gradually
Cloudhooks doesn't fire 5,000 runs at once. It sends a batch's runs for execution a few at a time, so one bulk replay can't slow down live events, whether yours or other stores'. Large batches can take a while to complete.
What can be replayed
- Only finished runs. Runs with the Scheduled retry status are still waiting to run on their own, so they can't be replayed. If that status is selected, the window explains why and offers Show failed runs instead.
- Only runs with stored event data. Runs whose logs have expired, or whose event data is no longer available, are skipped.
Each run is checked again right before it's sent for execution. Runs that no longer qualify are skipped and counted in the tally with the reason: not finished, event data no longer available, or event data expired.
When a batch stops on its own
A bulk replay stops automatically when:
- The store reaches its plan's action limit (e.g., the 1,200 action Trial limit)
- The store's plan no longer includes replay
- The hook is disabled or deleted
The banner shows the reason, e.g., Bulk replay stopped: the store reached its plan's action limit. As with cancelling, runs already executing finish and the rest are dropped.
Replaying safely
This is the most important part to understand before you click Replay matching runs.
Side effects run again
A replay repeats everything your hook does. If the original run already completed some of its work before it failed, the replay does that work again. Bulk replay multiplies this by the number of runs in the batch.
Typical side effects that can repeat:
- Changes in your Shopify store (tags, metafields, order updates)
- HTTP requests to external services (creating records, sending events)
- Emails sent to customers or to your team
Before you replay
- Filter tightly. Replay only the runs that actually need it. Filtering for failed runs in a specific time window is usually the right start.
- Check what the original run already did. Open a few of the runs you're about to replay and look at their logs. If actions succeeded before the failure, they will run again.
- Make your hook safe to re-run. The confirmation window tells you whether the hook is marked "safe to re-run" (a setting of Automated rate-limit handling). The setting is informational here and doesn't block a replay. Either way, use idempotency keys where the destination API supports them, prefer update/upsert operations over blind creates, and check for existing data before writing.
- Test first. Copy a payload from one of the runs into the Tester and run it with your current code before replaying the whole batch. See Testing your hooks.
You are responsible for the effects of the runs you replay. Cloudhooks can't tell which of your hook's actions are safe to repeat.
Billing
Replays consume actions. Every action a replayed run performs counts toward your monthly usage and is billed like any other action.
- Pro/Custom plans: Billed per action as usual. A large bulk replay can noticeably increase your monthly usage.
- Trial: A single bulk replay can use up the entire 1,200 action allowance. When the limit is reached, the batch stops.
The confirmation window shows the number of runs, not the number of actions. A hook that performs five actions per run consumes roughly five times the run count.
Limits and safety nets
- Maximum batch size: 5,000 runs. If more runs match, the replay can't be started and the window asks you to narrow the date range or status.
- One active batch per hook. The Replay matching runs button is hidden while a batch is running on the hook. Different hooks can each have their own batch running.
- Retention window: Only runs whose logs are still retained can be replayed (14 days on Trial and Pro).
- Automatic stop: At the plan's action limit, when the plan loses replay, or when the hook is disabled or deleted.
- Cancel any time: Runs already executing finish; queued runs and runs not yet sent for execution are dropped.
Data retention
Replaying copies the original payload into a new run. That new run gets its own, fresh log retention period, so a replayed payload, including any customer data it contains, is kept for up to one additional retention period beyond the original run.
Cloudhooks also keeps a small record of each bulk replay batch (the filters you used, the runs it covered, and its progress). It contains no payloads or customer data. See our Privacy Policy for details.
FAQ
Does the replay use the code I had when the run originally happened?
No. Replays always use the hook's current code.
Do replays cost actions?
Yes. Every action in a replayed run counts toward your usage, exactly like a normal run.
Why were some runs in my filter skipped?
The window and the banner list the reason next to the count: the run hadn't finished, its event data was no longer available, or its log had expired.
Can I replay runs from the Free plan?
No. Replay and bulk replay are available on Trial, Pro, and Custom plans.
Can I run two bulk replays at once?
Not on the same hook. Wait for the current batch to finish, or cancel it. If you try from another browser tab, you'll see "A bulk replay is already running for this hook." Other hooks can run their own batches.
I cancelled a bulk replay. Why did a few more runs show up?
Runs that were already executing when you cancelled are allowed to finish. Only queued runs and runs that hadn't been sent for execution yet are dropped.
Will a replay repeat what the original run already did?
Yes. If the original run changed data in your store, called an external API, or sent emails before it failed, the replay does all of that again. Check the original runs' logs and filter accordingly before replaying. See Replaying safely.
The window says "Counting the matching runs took too long."
The filters matched too many logs to count quickly. Narrow the date range and try again.