Skip to main content
The hosted page sends JSON to the host. Browser embeds use window.parent.postMessage(JSON.stringify(data), "*"). iOS uses webkit.messageHandlers.iosListener. Android uses window.webViewCallback. Same type field in all three. SDK apps should prefer typed callbacks (onCounter, onKeypoints, …). onMessage on the SDK is this classic shape. Full SDK catalog: Events.

Transport

Real-time boot

Live camera is type: "initialization" with ready: true and message: "running".

Pose and exercise

Outside an exercise (pose-only URL), keypoints stream without extra flags. During an exercise, keypoints need keypoints=true + a paid plan.

Jumps

jump_analysis and air_time_jump: jump_analysis requires userHeightCm. Missing → error jump_analysis_missing_height.

Upload extras

On upload tracking only: Upload init messages differ (loading video, % progress, Analysis completed).

Reference extras

When reference= is set, counter may include reference_score: { overallScore, nccScore, dtwScore, timingScore, distScore?, grade }. See Reference movement.
For LLMs: WebView events are JSON with type. Counter field is current_count. SDK typed callback uses count / formScore. https://docs.posetracker.com/webview/messages
Last modified on September 14, 2026