The key isn’t fixed - run_id is a free-form field you can set to
anything ({{ $execution.id }}, your own webhook event ID, etc.).
AARI uses it to group related actions in the audit trail, not for
dedup itself.
If you need dedup at the gate level (block duplicate calls with
the same key), that’s idempotency_key - currently not exposed in
the node UI, but it’s in the underlying API. Worth adding as an
optional field?
What’s your dedup use case - webhook retries or something else?
Yep, that’s the ideal setup - stable event ID → idempotency key.
That’s exactly where duplicate execution issues show up (at-least-once delivery + retries).
Exposing idempotency_key as an optional, expression-based field in the node UI makes sense - keeps it flexible across providers without adding complexity for simpler flows.
Yeah exactly. Event_id as key is the cleanest way to handle retries.
Redis SET NX + TTL works well there, especially when everything is coming from the same source.
Where it got messy for us was when retries came from multiple layers (provider + client + queue) and the same logical action ended up with slightly different payload shapes.
Then dedup becomes less about “same key” and more about “same intent”.
Curious if you’ve run into that or if your flows are mostly single-source?