Structured Outputs Troubleshooting Question
# support
a
I have two inbound assistants with identical configuration: • Structured Outputs enabled • End-of-call-report server message enabled • Calls complete normally In both cases, the Analysis tab shows structured outputs were generated. However: In Make webhooks: • One assistant includes message.artifact.structuredOutputs • The other assistant’s webhook never includes that object, even on completed calls Both assistants show the same structured output IDs in the artifact plan. My goal: I need to understand why Make never receives the structuredOutputs object for one assistant even though Vapi generated it. So the core question: What conditions cause an end-of-call webhook to be sent WITHOUT including artifact.structuredOutputs? For example: • Does the assistant need to end the call itself vs the customer hanging up? • Is there a timing issue between analysis completion and call termination? • Is there a configuration setting that controls whether structured outputs are attached to the webhook payload? (Attached screenshots for reference) https://cdn.discordapp.com/attachments/1471927295068344352/1471927295315939614/image.png?ex=6990b69e&is=698f651e&hm=58eeef416a48f30a57eeaf7d2e370470baae73a6925516dcd9d83fbcd8c9fc20& https://cdn.discordapp.com/attachments/1471927295068344352/1471927295710335100/image.png?ex=6990b69e&is=698f651e&hm=d5b433a5ab34453068b82a44ada4a55a940c6c7009ef33498bd8c72a83cc1116& https://cdn.discordapp.com/attachments/1471927295068344352/1471927301754196120/image.png?ex=6990b69f&is=698f651f&hm=596a46d100288b167c5be2e68a3b2bdd2c8bfd58d59d6d5103b7f98f96786992& https://cdn.discordapp.com/attachments/1471927295068344352/1471927302349918413/image.png?ex=6990b69f&is=698f651f&hm=6200a33de45150f0ed97a7bcc184acd2b686c4aad42b64911e6780c3394f8aaf&
s
There is a huge issue in structured output
j
This usually happens when the call ends before Vapi finishes generating and attaching the structured outputs to the final artifact. If the caller hangs up quickly, times out, or the call is force-ended, the webhook can fire without artifact.structuredOutputs. It’s not about having the feature enabled—it’s about whether analysis fully completes before termination. In practice, this creates inconsistent automation in Make even though the dashboard shows outputs later. Are these “missing” cases mostly customer-ended calls or very short calls compared to the working assistant? @Alex Rodas
a
@James Christopher Thanks for the feddback I appreciate it! Let me explain what I’m seeing so you have the full picture: I have two inbound setter assistants (Spokane and CDA) that are configured basically the same. For Spokane, everything works consistently, the Make webhook always receives the structured outputs inside the end-of-call-report. For CDA, it’s inconsistent: • The webhook fires normally • But artifact.structuredOutputs is often missing in that payload • Then a few seconds later the structured outputs show up in the Vapi dashboard after analysis finishes So it looks like the webhook is being sent before the structured output analysis completes for CDA, but not for Spokane. What’s confusing is both assistants have: – the same structured outputs configured – same server message settings (end-of-call-report) – similar call lengths The main difference I’ve noticed is: Spokane still has an active analysisPlan.structuredDataPlan, while CDA is only using artifactPlan.structuredOutputs. From what I can tell, it seems like: Spokane structured data runs synchronously, so the webhook includes it CDA structured outputs run asynchronously, so the webhook sometimes fires before they’re attached Does that sound accurate based on how the pipeline works internally? And if that’s the case, is there any way to make the webhook wait until outputs are ready, or is polling the call API after a delay the only reliable solution? Thanks again James!!
j
Great breakdown, your read on the pipeline is basically spot on. What you’re seeing is the difference between synchronous (analysisPlan) vs async (artifactPlan) processing, and CDA is sometimes firing the end-of-call webhook before structured outputs finish attaching. In production, the safest way to handle this isn’t trying to “force” Vapi to wait, it’s designing around the async behavior. The reliable pattern is a two-step flow: treat the end-of-call webhook as a trigger, store the callId, then add a short delay and re-fetch the call data to pull artifact.structuredOutputs once analysis is complete. That removes timing issues entirely. We can also review whether re-aligning CDA with Spokane’s pipeline is still viable, but long-term, the delayed re-check + fallback logic is what gives you consistent automation at scale. If you’d like, message me privately and I can walk you through the exact Make/Vapi setup I use for this so it runs cleanly without missing data. @Alex Rodas