Skip to main content
Validation has three separate observations: TradingView emitted the intended message, Liftx admitted or rejected it, and the position owner produced the expected trading outcome. No single alert notification or HTTP success proves all three.

Check in this order

  1. TradingView alert configuration: correct running alert, condition, expiration, event family, fixed message and webhook URL.
  2. TradingView alert log: whether it triggered and the webhook delivery status.
  3. Liftx Settings → Integrations → Activity: select Refresh latest and find the command by its identity and time.
  4. Group details: select View targets, then Refresh targets if needed. Review each child and its error evidence.
  5. Actual Liftx position/orders: verify fills, pending orders, active protections and remaining exposure.
Activity refreshes on demand. Older commands loads the next page; it is not a continuously polling execution feed. An API controller can use scoped reads and streams for ongoing observation.

What Activity labels mean

A displayed Close request saved or Cancel request saved with a sequence is durable terminal-request evidence. It is not proof that venue cancellation completed or exposure reached zero. Resolved receipts remain available for 30 days. Unresolved work is retained until resolution. Keep your own non-secret event/audit records if a longer history is required.

HTTP outcomes

Provider-side errors may occur before a Liftx receipt exists. The public hooks endpoint accepts reviewed TradingView delivery sources; a direct request from an arbitrary laptop is not equivalent to a provider-delivery test. Do not work around an ingress rejection by weakening authentication.

Common error codes

The full API error and limit reference is errors and limits. Do not infer a completed trade from an absence of transport errors.

Webhook delivery contract

Use only https://hooks.liftx.io/v1/tradingview/events, without query parameters. Production delivery uses public IPv4 and HTTPS on port 443, with no redirect. Liftx accepts valid JSON including charset parameters, rejects compressed bodies/plain text, and bounds request admission separately from exchange execution. TradingView documents a three-second receiver timeout. Liftx’s application admission budget is two seconds: it saves intent and acknowledges before asynchronous position work completes. Slow exchange execution is not held open as the webhook response. TradingView webhook setup. TradingView may resend eligible 5xx failures up to three times at five-second intervals; 504 is excluded. Liftx uses temporary-unavailability responses and immutable identities to handle an ambiguous retry without requesting another trade. Delivery is still not guaranteed. See provider resubmission policy and webhook error meanings.

Authentication and exposed keys

The restricted body key authenticates Liftx command authority over normal server-authenticated HTTPS. Reviewed source-IP restrictions add defense in depth; they are not cryptographic proof of provider identity. No customer client-certificate configuration is required. A private alert message or Pine script contains a secret. If exposed in a screenshot, public script, repository or support attachment, revoke the credential and prepare an authorized replacement. Remove the exposure where possible. Never send passwords, ordinary API keys or exchange credentials to the webhook. Revoking a key does not close positions. Inspect current orders/exposure and manage them in Liftx. Already-owned protections and termination continue under their existing owners.

Pine-specific symptoms

The supplied confirmed-bar helper emits at most one event per bar on a chart of at least one minute. Custom intrabar code must account for provider limits and design its own event identity and restart behavior.

A controlled validation sequence

After activation, use a demo market with a valid small setup. First verify a harmless, deliberately zero-target termination receipt. Then validate an OPEN, inspect actual order/protection state, and terminate it. Follow both exact and group results where authorized. Validate duplicates using unchanged intent, stale messages, wrong scope, revocation, expiry and interrupted-browser operation without treating those failures as permission to issue compensating trades. Do not move to a larger or live strategy merely because the Pine compiler accepted the script. Compilation, HTTPS delivery, durable admission and actual lifecycle execution are separate checks.