Replayed dataLayer Push
A replayed push is one that happened before Scalpel Tags could hook dataLayer.push. The tool reads the entries already sitting in the array, reports them in order so the timeline is complete, and flags each one as replayed rather than live.
Why it matters
The page's JavaScript runs before Scalpel Tags can hook it. So if the page pushes something to the dataLayer before the extension loads, Scalpel Tags misses it. You'd see an incomplete timeline. A replayed push restores that missing piece.
For debugging ecommerce, tracking code, or any dataLayer-driven flow, the complete timeline matters. You want to see every push in order, including the early ones.
How it works
When Scalpel Tags starts, it looks at the existing dataLayer array. If there are entries already sitting in it, the tool treats them as "already happened" and replays them into the timeline, marked as replayed.
Then it hooks dataLayer.push so all future pushes are captured live. You see the replayed ones first, then the live ones after, all in order.
What does not matter
A replayed flag doesn't mean the push is wrong or late. It just means the page fired it before the extension was ready to watch. The data is real and the order is preserved. From Google Tag Manager's perspective, it counts the same as a live push.
You can't change whether pushes are replayed or live. That's determined by when the page starts running versus when your extension loads. It's informational, not actionable.
Code example
Suppose your page runs this in the <head>:
window.dataLayer = window.dataLayer || [];
dataLayer.push({
event: 'page_view',
pageType: 'product'
});
Then later, after the page renders, your tag manager code fires:
dataLayer.push({
event: 'add_to_cart',
value: '29.99'
});
When Scalpel Tags loads (which might not happen until several hundred milliseconds after the page starts), it sees the first push already in the array. It replays it and marks it replayed. Then it hooks push and catches the second one live.
Your timeline shows:
[replayed] page_view, pageType: product
[live] add_to_cart, value: 29.99
The order is right. Both are real. The first is just flagged to remind you it happened before the extension was watching.
How Scalpel Tags shows it
In the dataLayer timeline panel, replayed pushes appear with a replayed badge. Click on any push (replayed or live) to see its diff and the accumulated state after that push.
Replayed pushes are not a problem. They're the tool's honest way of saying "this happened early, I caught it by reading the array, but I wasn't hooking it live".