Overview
An inbound voice agent answers incoming phone calls. To test one, Coval calls your agent, plays the role of the user, and runs the conversation against your test set and persona.
Choose how to connect
Most inbound voice agents just use a phone number. Use a SIP address or SIP trunk if your agent needs to receive extra context with each call — see Passing context to your agent.
Start with a phone number unless you specifically need to pass per-call context to your agent — that’s the main reason to choose a SIP address or trunk.
Configure
1
Select Inbound Voice
Choose “Inbound Voice” as the connection type.
2
Enter your phone number or SIP address
Set the
phone_number field to either an E.164 number (+12345678901) or a SIP URI (sip:agent@example.com). It must be a valid phone number or SIP URI.3
Save and test
Save the configuration and run a test call.
Passing context to your agent (SIP)
The main reason to use a SIP connection is that Coval can include custom SIP headers on each call, carrying values your agent needs to set up the right context — for example a pre-configureduser_id, account ID, routing target, or agent and test-case attributes. Your agent reads these headers when the call arrives and resolves the correct account, customer, or configuration for that simulated call. This isn’t possible over a plain PSTN phone number, where carriers strip custom headers.
Configure custom headers on the agent. Header values can be static or use these customer-facing template variables:
Run metadata is useful when every launch needs fresh connection context, such as a temporary routing destination or a job ID. Configure the header template once on the agent:
metadata.customer when you launch the run:
null, the simulation fails before dialing instead of sending an unresolved header. Coval also rejects any resolved header value that contains a carriage return or line feed.
SIP connections also expose a Wideband Audio (16kHz) toggle. When enabled, Coval asks its telephony provider to prefer wideband codecs such as G.722 and AMR-WB on the SIP leg, while retaining G.711 and G.729 as fallbacks. Your SIP endpoint must support at least one of the offered wideband codecs to negotiate wideband audio.L16 PCM is used for the internal 16kHz media stream between Coval and its telephony provider; it is not the codec offered to your SIP endpoint. An intermediary SBC or carrier may still transcode the call, so confirm the codec selected in the SIP answer if audio remains narrowband.
How simulations work
When you launch an evaluation with an inbound voice agent (with your agent’s phone number or SIP address set in a Coval template):- Coval’s simulated user calls your agent’s phone number or SIP address.
- The conversation follows the test set scenarios you’ve defined.
- The simulated user behaves according to the persona you’ve configured.
- Metrics are automatically evaluated after the call completes.
Identifying simulation calls
Coval includes a custom SIP header in every outgoing call so you can correlate incoming calls with their simulation runs:SIP connection — read the header
If your agent receives calls at a SIP endpoint (for example, a Twilio Programmable Voice SIP Domain, a Telnyx SIP connection, or your own SBC), the SIP path can preserve the header end to end. Read it from the incoming SIP request or a provider webhook, depending on the provider:- Twilio Programmable Voice SIP Domains — expose
X-custom SIP headers as parameters prefixed withSipHeader_on incoming call webhooks, so the value arrives asSipHeader_X-Coval-Simulation-Id. See Twilio’s SIP custom-header documentation. - Telnyx — carries
custom_headerson the outbound SIP INVITE; readX-Coval-Simulation-Idfrom the request at your SIP endpoint. See Telnyx’s Dial API documentation.
Phone number (PSTN) — the header is stripped
If your agent receives calls on a standard phone number, the call routes through the public telephone network, which strips non-standard SIP headers —X-Coval-Simulation-Id will not reach your application. Identify simulation calls instead by the calling phone number or by matching timestamps in the Coval dashboard.
Using Twilio Programmable Voice over a regular phone number (PSTN)? Use the
pre_call_webhook_url approach instead: Coval notifies your agent of the simulation ID before each call. See the Twilio ConversationRelay guide for setup instructions.Firewall & IP allowlist (SIP infrastructure only)
This applies only if you receive calls on your own SIP infrastructure (SBC, IP-PBX, or SIP trunk endpoint) and restrict inbound traffic by IP. If your agent receives calls on a regular phone number through a cloud provider like Twilio or Telnyx, calls arrive through your provider’s normal flow and no allowlisting is needed.