How to Read Webhook Execution Logs
Reconstruct a TradingView alert from Pine event through HTTP delivery, HexTrade validation, broker submission, and final order state without over-reading any single log.
How should webhook execution logs be read?
Start with one TradingView alert event, record its trigger time and Webhook status, then find the corresponding HexTrade execution record using non-secret payload labels, account, symbol, action, quantity, and time. Finally reconcile the destination broker's order and fill state. Read the three layers as a timeline; never infer a broker fill from a sender success or receiver acceptance alone.
TradingView's alert log answers whether its server created the event and what happened while delivering the HTTP request. It can show a timeout or response family, but it cannot see the downstream broker. HexTrade's docs point users to execution logs after account access and document labels such as `strategyName` and `alertName` that can improve correlation. The current interface should be treated as the authority for which exact fields are displayed; do not invent columns or statuses.
The broker account owns the final external order evidence. A receiver can accept a request that is later rejected, and a broker can accept an order that remains working rather than filled. Create a single incident row with observed facts from each source and mark missing evidence as unknown. That discipline matters most after timeouts and retries, when a plausible story can otherwise become a duplicate manual order.
- Sender fact: an alert event existed and delivery had a reported status.
- Receiver fact: a body was or was not observed, then validated or rejected according to available record.
- Broker fact: an order identifier and current state exist—or remain unproven.
- Operator fact: every action taken after the event is timestamped and attributable.
What values should correlate webhook records?
Use a versioned strategy or alert label plus exact account, destination symbol, action, quantity, and sender event time. The combination should remain stable across TradingView's qualifying resends. Do not correlate by receiver arrival time alone, because each retry arrives later. Keep webhook URLs, tokens, broker credentials, and personal information out of log labels and shared incident exports.
HexTrade documents `strategyName`, `alertName`, `note`, and `tags` as optional labeling fields. Use a concise convention such as strategy family, reviewed version, trigger role, and a TradingView time placeholder. The label is for traceability; it is not proof of product-level idempotency. Two events can share a name, and an attacker or misconfigured script can send arbitrary labels, so route and broker evidence still need independent validation.
Account and symbol must be destination values. A chart can show a continuous future or CFD while the route uses a different broker symbol. Record both source and override when mapping is involved. For quantity, preserve the requested value and the broker's accepted or filled value separately. If a copy group fans out the master, retain a master-fill reference and create one follower outcome row rather than collapsing all accounts under a generic success.
{
"ticker": "MNQ",
"action": "{{strategy.order.action}}",
"quantity": "{{strategy.order.contracts}}",
"platformType": "projectx",
"accountId": "replace_with_exact_account_id",
"strategyName": "opening-range-v4",
"alertName": "entry-order-fill",
"note": "opening-range-v4|{{ticker}}|{{timenow}}",
"dryRun": true
}A support-safe record contains no endpoint secret
Redact the complete private webhook URL and all credentials. Share correlation labels, sanitized fields, timestamps, and status evidence instead. Regenerate the URL if it was disclosed.
What does the TradingView alert log prove?
It proves that a running alert emitted an event and reports TradingView's view of webhook delivery, including its Webhook status. It can distinguish no trigger from HTTP, timeout, URL, TLS, or connection problems. It does not prove the receiver completed broker work. A three-second timeout especially leaves downstream state uncertain until receiver and broker evidence are checked.
Begin with the exact alert name and time. Confirm that the alert was active, unexpired, and based on the intended script snapshot, symbol, timeframe, and inputs. TradingView alerts run from a server-side mirror captured at creation; editing the chart afterward does not change that instance. If no event exists in the log, stay in the Pine and alert layer. Receiver and broker logs cannot explain a message that TradingView never emitted.
If an event exists, read the status literally. A 3xx points to redirect behavior; 4xx to receiver rejection; 5xx to a receiving-server failure; timeout to a response beyond three seconds; and URL, TLS, connection, or invalid-response errors to transport. TradingView documents resends only for 500–599 except 504, after five seconds, up to four total deliveries. Count those delivery attempts under one alert event rather than labeling each a new strategy signal.
| TradingView evidence | What it supports | What remains unknown |
|---|---|---|
| No alert event | The server-side alert did not emit in the inspected period | Why Pine, configuration, expiry, frequency, or snapshot prevented it |
| 2xx delivery | The receiver returned a successful HTTP response | Whether it means parsed, accepted, submitted, or completed |
| 4xx | The receiver rejected the request | Exact field or access cause until receiver evidence is read |
| Qualifying 5xx attempts | TradingView may resend the same event | Whether any attempt created a downstream side effect |
| Timeout | No response arrived inside three seconds | Whether receiver or broker work already occurred |
What should you extract from the HexTrade execution record?
Extract only fields and states the current HexTrade interface actually shows, then map them to four questions: did the request arrive, did documented validation pass, which exact account and symbol were selected, and what broker-facing result was recorded? Preserve the original wording and timestamp. Do not translate an unfamiliar status into “filled” or claim an undocumented log schema.
HexTrade's troubleshooting docs establish common validation checks: valid JSON, lowercase `platformType`, exact `accountId`, correct ticker or mapping, and broker constraints. Compare the sanitized rendered payload with the observed record. If no receiver record exists while TradingView reports success, verify the exact private endpoint and account context before assuming data loss. If a record rejects validation, fix that first and rerun in dry mode rather than jumping to broker analysis.
If validation passes, identify whether the available record shows a broker attempt or only a planned request. `dryRun: true` intentionally sends no order, so a successful dry result must stop there. For live requests, retain any broker-facing message and reference available in the interface. Product screens evolve; this guide avoids promising particular column names. The invariant is the question sequence, not a guessed UI layout.
- 1
Match the event
Use labels, account, symbol, action, quantity, and time without exposing the endpoint.
- 2
Copy observed wording
Preserve exact validation or broker messages before interpreting their cause.
- 3
Separate dry from live
A planned dry-run result cannot have a corresponding live broker order.
- 4
Mark missing fields unknown
Do not fill an absent broker reference or final state with an assumption.
How do broker orders complete the log timeline?
Open the exact destination account and compare symbol, side, requested quantity, accepted quantity, order type, broker timestamp, identifier, and current status where available. Distinguish accepted, working, partially filled, filled, cancelled, rejected, and unknown. If copy trading is involved, reconcile the master first and every follower separately. The broker record is the authority on actual external orders.
A successful receiver response can precede broker rejection. A broker acceptance can precede a fill by seconds, hours, or never, depending on order type and market. Partial fills change open exposure without matching either the requested size or a binary success label. Capture state transitions rather than taking one screenshot. If the product route also requested protective orders, verify those records independently; do not infer their existence from the entry payload.
For a missing broker identifier, compare a narrow time window, account, symbol, side, and quantity, but do not treat a nearby order as a match without corroboration. Manual trades can overlap automation. If the state remains unknown, pause new attempts and escalate with sanitized evidence. Replaying the webhook to see what happens destroys the clean timeline and may double the position.
- Requested is not accepted.
- Accepted or working is not filled.
- Partially filled is real exposure and not a simple failure.
- Unknown requires reconciliation, not an automatic retry.
How do you turn logs into an incident runbook?
Use one chronological worksheet with separate columns for TradingView event, each HTTP delivery, receiver validation, broker attempt, broker state, and operator action. Freeze retries while any side effect is unknown. Identify the first failed boundary, correct one cause, and retest in dry mode or smallest approved size. Close only when every potentially affected account is reconciled.
Include UTC timestamps alongside local display time and timezone so daylight-saving and cross-region logs can be ordered. Preserve the alert snapshot version, source and destination symbols, group topology, and documented risk controls. Record what is absent as carefully as what is present. An incident with a sender timeout and no receiver evidence is different from one with a submitted broker order and lost final response, even if both look like “no fill” to the user.
After resolution, create a regression case. A malformed JSON incident needs a rendered-payload parser test; stale alert code needs a recreate checklist; duplicate 5xx delivery needs idempotency evidence; symbol rejection needs an allowlisted mapping test; partial follower execution needs a group pause drill. Logs add value when they change the system or runbook, not when they merely provide a story after the fact.
| Time | Layer | Observed fact | Identifier | Next safe question |
|---|---|---|---|---|
| T0 | TradingView | Alert event and Webhook status | Alert name plus event time | Did the body arrive, and how many deliveries occurred? |
| T1 | HexTrade | Observed validation or route result | Labels, account, symbol, action, quantity | Was a live broker attempt made? |
| T2 | Broker | Order reference and actual state | Broker identifier where available | Is exposure final, working, partial, rejected, or unknown? |
| T3 | Operator | Pause, escalation, or controlled correction | Incident owner | Are all accounts reconciled before resuming? |
Sources and methodology
HexTrade Research uses official product, exchange, regulator, and vendor documentation. Policies and platform behavior can change; follow the linked source and verify current terms before trading.
- 1.How to configure webhook alerts — TradingView, accessed Aug 30, 2026
- 2.What webhook errors mean — TradingView, accessed Aug 30, 2026
- 3.Webhook resubmission — TradingView, accessed Aug 30, 2026
- 4.Using credentials for webhooks — TradingView, accessed Aug 30, 2026
- 5.TradingView webhook automation — HexTrade Docs, accessed Aug 30, 2026
- 6.Webhook troubleshooting — HexTrade Docs, accessed Aug 30, 2026
- 7.Copy trading setup — HexTrade Docs, accessed Aug 30, 2026
Frequently asked questions
Does a TradingView 2xx Webhook status mean the order filled?
No. It means the remote endpoint returned a successful HTTP response. Depending on the receiver, that may mean accepted for processing rather than broker-completed. Read the receiver record and destination broker order or fill before concluding execution.
Where can I see whether TradingView delivered a webhook?
TradingView documents a Webhook status column in the alert log. Start there to distinguish no alert event from a delivery problem. Then use receiving-system and broker evidence because the sender cannot see the complete downstream trade.
Can I identify a retry by its arrival timestamp?
Arrival time helps order attempts but is not a stable identity because each resend arrives later. Correlate the same sender event using versioned labels, account, symbol, side, quantity, and sender time. Qualifying retries can occur at five-second intervals.
What if HexTrade shows success but no order appears?
Determine what the observed success actually means, verify that `dryRun` was not enabled, and inspect the exact destination account for rejection, working order, mapping, or authorization evidence. Preserve the wording rather than assuming a fill or product defect.
What should be redacted from execution-log screenshots?
Redact the complete webhook URL or token, credentials, personal information, and any secret account-access data. Keep useful non-secret evidence such as timestamps, strategy version, platform, sanitized account reference, symbol, side, quantity, and exact status wording.
Next step
Put the research into a controlled workflow
Start small, verify the broker and account rules, and keep risk controls between every signal and live order.
Explore webhook automationContinue reading
Educational content only. Futures are leveraged products and can produce losses greater than the amount you expected to risk. This article is not financial, legal, or prop-firm compliance advice.