Follow-up to the 2026-05-14 fix. Partner integrations reported that dialer calls still produced two POSTs per terminal state in production. Two remaining paths slipped past the original gate, both fixed in this release:
- Twilio parent-call statusCallback echo. For outbound dialer calls, Twilio fires the
<Dial action>URL with the authoritative outcome (DialCallStatus), then a second callback from the parent SDK call carryingCallStatus="completed". The second was overwriting the real outcome (e.g.no-answer→completed) and emitting a duplicatecallsUpdated. The second callback is now recognised as an echo for outbound terminal calls and ignored. Inbound calls are unaffected — their parent statusCallback is still the only signal we receive. - Post-call recording duration rewrite. When the audio recording finished processing, Twilio’s reported recording duration (often 1–3 seconds shorter than
DialCallDurationdue to silence trim) was rewriting the call’sdurationfield and re-firingcallsUpdated. That write is now silent — the call’s duration is still corrected internally, but the partner webhook is not re-emitted.
What you’ll see: exactly one callsUpdated per terminal state, with stable outcome and duration. If you implemented the deduplicate-on-(callId, eventCreated) workaround we suggested earlier, you can keep it as defense-in-depth or remove it.
Not changed in this release: the isFinal: true payload flag (so partners can distinguish in-flight enrichment from authoritative finals) is tracked as a separate follow-up.