diff --git a/fern/customization/voice-pipeline-configuration.mdx b/fern/customization/voice-pipeline-configuration.mdx
index 125a9f7d7..609470f76 100644
--- a/fern/customization/voice-pipeline-configuration.mdx
+++ b/fern/customization/voice-pipeline-configuration.mdx
@@ -118,10 +118,10 @@ User Audio → VAD → Transcription → Start Speaking Decision → LLM → TTS
Voice Activity Detection (VAD) detects utterance-stop
- System evaluates completion using this priority order:
- 1. **Transcriber EOT detection** (if transcriber has built-in EOT and no smart endpointing plan)
- 2. **Custom Rules** (highest priority when configured)
- 3. **Smart Endpointing Plan** (LiveKit for English, Vapi for non-English)
+ System evaluates completion in this order and stops at the first step that applies:
+ 1. **Transcriber EOT detection** (if the transcriber has built-in EOT and no `smartEndpointingPlan` is set, or the plan's provider is the transcriber itself). The turn ends on the transcriber's final transcript, and custom rules are not evaluated.
+ 2. **Custom Rules** (if a rule matches, its timeout is used)
+ 3. **Smart Endpointing Plan** (LiveKit for English, Vapi for non-English), or the heuristic `transcriptionEndpointingPlan` when no smart endpointing applies
LLM request sent immediately → TTS processes → waitSeconds applied →
@@ -508,7 +508,7 @@ Understanding exact timing helps optimize your voice pipeline configuration. Thi
### Custom endpointing rules
-Highest priority rules that override all other endpointing decisions when patterns match.
+Rules that override the smart endpointing plan and `transcriptionEndpointingPlan` when a pattern matches. They are not evaluated when the transcriber's own end-of-turn detection is in use (see [Start speaking process](#start-speaking-process)).
```json
{