Production starts when real people, phone numbers, and systems touch the workflow. Before that point, separate three checks: the draft is structurally valid, a Web Call behaves correctly, and the chosen delivery path is configured. Passing one does not prove the others.
1. Freeze and publish the reviewed draft#
Menace Voice keeps draft and published workflow versions separate. Editor tests and test trigger URLs can exercise the latest draft, while production trigger URLs continue to use the published version. Review the exact draft you tested, publish it deliberately, and make further changes in a new draft.
2. Choose one traffic path first#
- Website: embed the generated widget for browser voice or chat. This avoids telephony but still creates runs for review.
- Inbound phone: create a telephony configuration, add an active phone number, assign its inbound agent, and complete the provider's webhook setup.
- One-off outbound: set a ready telephony configuration as the organization default, configure an active caller ID, and start from the dashboard, SDK, Agent UUID, or API Trigger URL.
- Campaign: upload a CSV with phone_number plus optional initial-context columns, then set conservative concurrency, calling windows, retry behavior, and a circuit breaker.
Use E.164 phone numbers
Store destinations and PSTN caller IDs with a leading plus sign and country code, for example +14155550100. Provider trial accounts may also require the destination number to be verified before an outbound test can connect.
3. Trigger outbound calls safely#
Use the test route while iterating and the production route only after publishing. The UUID in /public/agent/{uuid} belongs to an API Trigger node. A stable Agent UUID uses the separate /public/agent/workflow/{workflow_uuid} route. Do not swap those identifiers. A successful initiation returns a workflow run ID; it does not prove the person answered or the conversation completed.
4. Close the data loop#
- Add precise extraction fields for the business outcome you need, and configure call dispositions when downstream reporting depends on a controlled set of results.
- Use a Webhook node to POST selected initial context, gathered context, disposition, recording URL, and transcript URL to your backend.
- Authenticate the receiving endpoint through a saved Menace Voice credential and validate the request body in your backend.
- Add a QA node for post-call analysis when you need consistent scoring or tags. QA runs after the call and cannot change the live conversation.
5. Review the first real runs#
- Connection: did the call or widget session start, and did audio work in both directions?
- Conversation: did the transcript show the expected questions, edge transitions, and closing path?
- Actions: were the correct tools called with supported arguments, and were failures explained accurately?
- Outcome: were gathered context and disposition supported by the transcript and delivered to the receiving system?
- Operations: were latency, duration, provider usage, cost, trace data, and errors within the limits you set?
Ship a feedback loop
Review a small first batch before increasing traffic or campaign concurrency. Turn each recurring miss into the smallest prompt, edge, tool, context, or provider change, then prove that change on a new draft before publishing again.
If a coding assistant will maintain the workflow, continue in Build agents that can be trusted for the supported Menace Voice MCP authoring flow.