Responding to Events
After submitting your transaction, you will receive a stream of events. The first event will be a submission event indicating that your transaction was received by TDN and is in-flight. Thereafter, you will receive injection events, each signaling that your transaction was delivered to an Ethereum node somewhere in the world.

Submission Events

Submission events contain a summary of the TDN request. Generally, you will only be interested in the status and timeStamp fields. You can use the timestamp to calculate your transaction’s flight time by subtracting it from the timestamps found in subsequent injection events.
Example successful transaction submission response payload:
{
"version": 0,
"serverVersion": "0.135.1",
"timeStamp": "2022-05-05T04:37:27.216Z",
"connectionId": "d4-7e38d956-2da0-4a3a-97ee-10e23f238d8e",
"status": "ok",
"event": {
"timeStamp": "2022-05-05T04:37:27.231Z",
"dappId": "<YOUR_API_KEY>",
"categoryCode": "tdn",
"eventCode": "tdnSubmitResponse",
"blockchain": {
"system": "ethereum",
"network": "rinkeby"
},
"hash": "0x1c98a192948c26862c3c47baa7746740396efc3af97692a68190393b85a25dd1"
}
}
Example failed transaction submission response payload:
{
"status": "error",
"reason": "<ERROR_STRING>"
}

Injection Events

Injection events can have two states: successful and failed. These are distinguishable by the presence of an error message in a failed injection event. Common submission errors are detailed in our blog post here.
To help you track propagation into the mempool, injection events provide the region field containing the geographical region into which your transaction was injected. You will receive separate injection events for each region.
Region codes are: us-east-1 (North America), eu-central-1 (Central Europe), and se-asia-1 (South East Asia). We are adding more regions, so please let us know if you’d like to see any region supported in particular.
Note that you may receive multiple injection events per region. If network conditions are bad, you may receive the occasional failed transaction, or fail to receive events from a particular region. This is expected. In fact, this is why TDN exists in the first place: to provide reliable transaction submission, even in the presence of adverse network conditions.
If you get at least one successful injection event, your transaction is in the mempool. The more injection events you receive, the faster your transaction will propagate through the mempool, on average. This leads to a valuable insight: depending on your strategy, it MAY be valuable to issue replacement transactions (i.e. to “cancel” or “speed up” your transaction) based on the number of injection events or the flight-time of your transactions.
{
"version": 0,
"serverVersion": "0.135.1",
"timeStamp": "2022-05-05T04:37:27.216Z",
"connectionId": "d4-7e38d956-2da0-4a3a-97ee-10e23f238d8e",
"status": "ok",
"event": {
"timeStamp": "2022-05-05T04:37:27.235Z",
"dappId": "<YOUR_API_KEY>",
"categoryCode": "tdn",
"eventCode": "activeTransaction",
"blockchain": {
"system": "ethereum",
"network": "rinkeby"
},
"hash": "0x1c98a192948c26862c3c47baa7746740396efc3af97692a68190393b85a25dd1",
"region": "us-east-1"
}
}
Example failed transaction injection response payload:
{
"version": 0,
"serverVersion": "0.135.1",
"timeStamp": "2022-05-05T04:37:27.216Z",
"connectionId": "d4-7e38d956-2da0-4a3a-97ee-10e23f238d8e",
"status": "ok",
"event": {
"timeStamp": "2022-05-05T04:37:27.235Z",
"dappId": "<YOUR_API_KEY>",
"categoryCode": "tdn",
"eventCode": "activeTransaction",
"blockchain": {
"system": "ethereum",
"network": "rinkeby"
},
"hash": "0x1c98a192948c26862c3c47baa7746740396efc3af97692a68190393b85a25dd1",
"error": "nonce too low",
"region": "us-east-1"
}
}

Additional Events

For each transaction submitted, you are automatically subscribed to the transaction updates via our mempool monitoring API. You will receive these updates through the same WebSocket, alongside your submission and injection events. These updates are not counted towards your monitoring API rate-limits. More information on these payloads can be found in the Mempool API documentation. These are the same notifications you would receive by watching (subscribing to) the transaction hash using our API or SDK.

Rate Limits

Rate-limits are applied based on your account tier. Each transaction submitted to TDN is counted towards your daily limit. Tier rate limits are shown on the Blocknative Pricing Page. Daily counts reset at UTC±00:00.
Copy link
On this page
Submission Events
Injection Events
Additional Events
Rate Limits