What do you use for transient storage?

It is possible to receive the same event more than once. We recommend that you handle webhook events using idempotent operations. One way of doing this is logging the ID of webhook events that you have processed and ignoring subsequent requests with the same ID

For this case, where will you save id of webhook that is already handled? I think saving webhook id in database and fetch to check is too much(2 data operation) or doesn’t matter?

You can use ETS:

ETS is a robust in-memory store for Elixir and Erlang objects that comes included. ETS is capable of storing large amounts of data and offers constant time data access.

https://elixirschool.com/en/lessons/storage/ets


Other options: