https://retellai.com/?utm_source=discord&utm_medium=seo logo
Hey how can I send a message like "Tell the caller...
# ❓・ai-evy-support
n
@AI Evy Hey how can I send a message like "Tell the caller to calls us back after 5pm" from transfer agent to the main agent?
a
Thanks for tagging me @neerajjoshi_. I'll look through relevant sources and get back to you shortly.
### Answer For a transfer agent, the only two tools it has are Bridge Transfer and Cancel Transfer—it doesn't have a mechanism to pass a custom message directly to the main agent when it decides not to connect the caller [(1) ]() . When it cancels, the caller is sent back to your main agent, which picks the conversation back up . What it doesn't get is anything said after the transfer starts, and your main agent never sees the screening conversation . Since there's no documented "pass a message" parameter between the transfer agent and the main agent, sending something like "Tell the caller to call back after 5pm" isn't a supported capability based on the available sources. A workaround using what is documented: you could have the transfer agent extract that information as a dynamic variable during its conversation, since dynamic variables carry over across agents on the same call, including anything extracted earlier in the call . However, this extraction mechanism is documented in the context of information extracted before a transfer starts, not something generated by the transfer agent itself during its screening call—so I can't confirm this specific flow (transfer agent generating new info and passing it back to the main agent) is supported. I don't have documentation confirming a direct way to inject a custom message like this from the transfer agent back to the main agent. Check out these potentially useful sources: [Transfer call tool (single & multi-prompt agents) ]() , [Agent Transfer tool: hand a call to another AI agent]() , [Call transfer node in conversation flow]() Want me to give a g
eneral suggestion based on common patterns instead?
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
​ To learn more, see the sources I considered: [[1] Transfer call tool (single & multi-prompt agents)](https://docs.retellai.com/build/single-multi-prompt/transfer-call) ​
n
Want me to give a g eneral suggestion based on common patterns instead? @AI Evy yes please
a
Thanks for the follow-up, @neerajjoshi_. I'll get back to you soon.
### Answer Since this isn't documented behavior, here's a general pattern that fits how the tools are built. Use the Extract Dynamic Variable tool on the transfer agent to capture the note during its screening conversation with the destination — for example, an instruction like:
Copy code
When the destination provides a callback preference or scheduling note, call
extract_callback_note to save the information.
[(1) ]() That value gets stored as a dynamic variable for the call, and dynamic variables carry the
{{variable_name}}
syntax so they can be referenced in prompts once set [(2) ]() . If the transfer agent then triggers Cancel Transfer, the caller is sent back to your main agent, which picks the conversation back up [(3) ]() . Since dynamic variables set during a call are available to be referenced later in that same call, your main agent's prompt could check for that variable (e.g.,
{{callback_note}}
) and, if present, relay it to the caller — for example: "If
{{callback_note}}
appears with a value, tell the caller: 'please call back after 5pm.'" Caveat: the sources document Extract Dynamic Variable in the context of information captured during the main call, not specifically as something a transfer agent extracts and hands back after a Cancel Transfer decision — so treat this as a suggested pattern to test, not a confirmed guaranteed flow [(1) ]() .
​ To learn more, see the sources I considered: [[1] Extract Dynamic Variables](https://docs.retellai.com/build/single-multi-prompt/extract-dv) [[2] Dynamic variables: personalize Retell agent calls](https://docs.retellai.com/build/dynamic-variables) [[3] Transfer call tool (single & multi-prompt agents)](https://docs.retellai.com/build/single-multi-prompt/transfer-call) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
Thanks for the follow-up, @neerajjoshi_. I'll get back to you soon.
n
@AI Evy Main agent and the transfer agent are two different calls. Variables only flow one way: parent → child. Extract on the transfer leg writes to the staff call, then that call ends. Jenny’s call never sees {{transfer_relay_note}}. We proved that: the clone stored "call me back later"; Jenny’s fail node had no such variable. Is this true
a
### Answer The scenario described doesn't match what the sources document. Agent Transfer (also called agent swap) keeps everything on the same call — same
call_id
, one entry in call history — it is not two separate calls [(1) ]() . There is no "parent call" and "child call" with a one-way variable flow in the Agent Transfer mechanism as documented. Specifically, the destination agent automatically receives the full conversation history, call-level
metadata
, and dynamic variables — both the
retell_llm_dynamic_variables
passed at call start and any variables extracted earlier in the call . This is bidirectional in the sense that all agents on the call share the same underlying call context; it isn't described as a one-directional parent-to-child handoff that then terminates. So if a variable like
{{transfer_relay_note}}
is extracted by an agent during an Agent Transfer swap, it should be available to any agent sharing that same call afterward, since dynamic variables extracted earlier in the call stay available to the destination agent's prompt [(1) ]() [(2) ]() . If a swap-back to the original agent occurred and it didn't see the variable, that isn't the documented behavior for Agent Transfer. One caveat: this documentation is written for Agent Transfer (agent swap) , where agents share one call. If what's actually happening in your setup is a Call Transfer (phone-based transfer to another number, e.g., "Jenny's" line as a separate destination) rather than an Agent Transfer, that is a different mechanism — a new call leg to a phone number — and the sources don't document dynamic variables carrying over from that separate destination call back into the
original call [(3) ]() . In that case, your described one-way behavior could be consistent with what's happening, since Call Transfer is not the same as Agent Transfer. I don't have documentation confirming or denying the specific "parent → child only" behavior you tested unless you can clarify whether your setup uses Agent Transfer or Call Transfer.
​ To learn more, see the sources I considered: [[1] Agent Transfer tool: hand a call to another AI agent](https://docs.retellai.com/build/single-multi-prompt/transfer-agent) [[2] Extract Dynamic Variables](https://docs.retellai.com/build/single-multi-prompt/extract-dv) [[3] Transfer call tool (single & multi-prompt agents)](https://docs.retellai.com/build/single-multi-prompt/transfer-call) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
n
@AI Evy can you tell me where did you got the workaround thing?
a
Thanks for the follow-up, @neerajjoshi_. I'll get back to you soon.
### Answer The workaround I suggested was constructed from two documented mechanisms, not stated as a single pre-built solution in the sources. Specifically, I combined: - The Transfer Call tool documentation, which describes Cancel Transfer sending the caller back to the main agent [(1) ]() - Dynamic variables documentation, which describes the
{{variable_name}}
syntax and how variables can be referenced in prompts once set [(2) ]() I don't have a source that documents an "Extract Dynamic Variable" tool being used specifically by a transfer agent to pass a note back to the main agent after a Cancel Transfer. That part was a suggested pattern based on piecing together the Cancel Transfer behavior [(1) ]() and general dynamic variable behavior [(2) ]() , not a confirmed documented workflow. I flagged that caveat in my earlier answer. If you want the precise mechanics of what data does/doesn't carry over in each transfer type, the two most relevant sources remain the Transfer Call tool doc [(1) ]() and the Dynamic Variables doc [(2) ]() .
​ To learn more, see the sources I considered: [[1] Transfer call tool (single & multi-prompt agents)](https://docs.retellai.com/build/single-multi-prompt/transfer-call) [[2] Dynamic variables: personalize Retell agent calls](https://docs.retellai.com/build/dynamic-variables) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
n
@AI Evy how do people solve this issues than isn't this very common case?
a
Thanks for the follow-up, @neerajjoshi_. I'll get back to you soon.
### Answer I don't have documentation that describes a common, widely-used solution to this specific problem (relaying a message from a Call Transfer destination back to the main agent after the call ends) . What is documented for the two transfer mechanisms: - Agent Transfer keeps everything on the same call — same
call_id
, one entry in call history — and the destination agent automatically inherits the full conversation history, call-level
metadata
, and dynamic variables (both those passed at call start and any extracted earlier in the call) [(1) ]() . If your use case can work within a single call shared between agents, this is the documented path for context to flow between agents. - Call Transfer (Transfer Call tool) places a real, separate phone call to another number. For Agentic Warm Transfer, a transfer agent screens the destination and then decides to bridge or cancel — but "what it doesn't get is anything said after the transfer starts, and your main agent never sees the screening conversation," and the two calls are recorded and transcribed separately [(2) ]() . There's no documented parameter for passing a custom message from the transfer agent back to the main agent after screening. For dynamic variables generally, they can be extracted during a call and referenced later in that same call's prompts using
{{variable_name}}
syntax [(3) ]() , but this is documented in the context of a single call's context, not as a bridge between two separate transferred call legs. I don't have sources documenting a standard/common workaround pattern used by other users for this exact scenario. If you'd like, I can give a general (unconfirmed) suggestion based on how the
documented tools work, but that would not be a verified common solution — just a possible pattern to test.
​ To learn more, see the sources I considered: [[1] Agent Transfer tool: hand a call to another AI agent](https://docs.retellai.com/build/single-multi-prompt/transfer-agent) [[2] Transfer call tool (single & multi-prompt agents)](https://docs.retellai.com/build/single-multi-prompt/transfer-call) [[3] Dynamic variables: personalize Retell agent calls](https://docs.retellai.com/build/dynamic-variables) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
n
@AI Evy we are using agentic warm transfer
a
Thanks for the follow-up, @neerajjoshi_. I'll get back to you soon.
### Answer With agentic warm transfer, the transfer agent is a separate AI that talks only to the destination number — it's a different call leg from the caller's call with the main agent [(1) ]() . The transfer agent gets the original conversation automatically and dynamic variables carry over to it, including anything extracted earlier in the call, plus
original_call_id
to tie the two calls together . However, this handoff is one-directional going in. What it doesn't get is anything said after the transfer starts, and your main agent never sees the screening conversation . The two calls are recorded and transcribed separately . There's no documented mechanism for the transfer agent to write a new variable during its screening call and have that flow back into the main agent's call after a Cancel Transfer. The transfer agent's only two tools are Bridge Transfer (connect the caller) and Cancel Transfer (send the caller back to your main agent, which picks the conversation back up) . Neither tool is documented as carrying a custom payload or message back to the main agent. So based on the sources, what you observed — the main agent's call not receiving a variable set during the transfer agent's screening call — is consistent with the documented behavior for agentic warm transfer, since that screening conversation and anything captured in it isn't described as flowing back to the original caller's call . I don't have documentation of a supported way to relay a message like "call back after 5pm" from the transfer agent back to the main agent in this transfer type.
​ To learn more, see the sources I considered: [[1] Transfer call tool (single & multi-prompt agents)](https://docs.retellai.com/build/single-multi-prompt/transfer-call) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
n
@AI Evy can you check chats how do people use it than ?
a
Thanks for the follow-up, @neerajjoshi_. I'll get back to you soon.
### Answer Looking at community discussions on this topic, the closest relevant thread involves a similar warm transfer flow, but it's about a different problem — an AI ending the call instead of bridging when the human agent accepts [(1) ]() . In that case, the issue was that the AI hit a terminal state before the bridge fired, not about relaying a message back to the main agent . I don't see any Discord or forum discussion that documents someone relaying a note or message from the transfer agent's screening call back to the main agent's call after a Cancel Transfer in agentic warm transfer. The community threads I have access to cover other transfer-related issues: a warm transfer whisper message being audible to the caller instead of just the transfer target [(2) ]() , a request for the AI to stay on the line during hold instead of the caller being on hold [(3) ]() , and caller ID display during transfers [(4) ]() . None of these directly document a workaround for passing a custom message from the transfer agent back to the main agent post-Cancel Transfer. Based on the sources, I can't confirm this is a commonly solved pattern in the community threads available to me. Check out these potentially useful sources: [Discord message from @saladg111 on 2025-12-28]() , [Call transferred to agent but warm transfer also heard by the customer]() , [Transfer call tool (single & multi
-prompt agents) ]() Want me to check if there's a different structural approach (e.g., handling this via webhook or post-call data) instead?
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
​ To learn more, see the sources I considered: [[1] Discord message from @saladg111 on 2025-12-28](https://discord.com/channels/1186424376300679209/1186462578310910112/1454947845856563355) [[2] Call transferred to agent but warm transfer also heard by the customer](https://discord.com/channels/1186424376300679209/1333244414147035328) [[3] Keep AI Agent on the Line During Warm Transfer](https://community.retellai.com/t/keep-ai-agent-on-the-line-during-warm-transfer/173) [[4] 🪪 Caller ID in call transfers is live! No more "Who called? confusion"](https://community.retellai.com/t/caller-id-in-call-transfers-is-live-no-more-who-called-confusion/149) ​
n
Want me to check if there's a different structural approach (e.g., handling this via webhook or post-call data) instead? @AI Evy yes please
a
Thanks for the follow-up, @neerajjoshi_. I'll get back to you soon.
### Answer Based on the sources available, here's a structural approach using post-call data instead of trying to relay a message mid-call. Since agentic warm transfer creates two separate call legs (the main call and the transfer agent's screening call) , each is recorded and analyzed independently. You can retrieve the transfer agent's call analysis after it ends and act on it externally, rather than trying to inject the note back into the main agent's live call. **Post-call analysis via webhook**: Subscribe to the
call_analyzed
event for the transfer agent. The payload includes the
call_analysis
object with fields like
call_summary
,
user_sentiment
,
call_successful
, and any custom extracted fields [(1) ]() . Note that
call_ended
webhook payloads exclude
call_analysis
— you must listen for
call_analyzed
specifically, since reading those fields from
call_ended
returns
null
or
undefined
.
Copy code
json
{
 "event": "call_analyzed",
 "call": {
 // Call object with call_analysis field populated
 }
}
**Post-call analysis via API**: Alternatively, poll the Get Call API for the transfer agent's
call_id
after it ends to retrieve
call_analysis
, which includes
call_summary
,
user_sentiment
,
call_successful
, and
custom_analysis_data
[(2) ]() .
Copy code
json
"call_analysis": {
 "call_summary": "The agent called the user to ask question about his purchase inquiry. The agent asked several questions regarding his preference and asked if user would like to book an appointment. The user happily agreed and scheduled an appointment next Monday 10am.",
 "in_voicemail": false,
 "user_sentiment": "Positive",
 "call_successful": true,
 "custom_analysis_data": {}
}
You can define a custom post-call analysis field on the transfer agent (e.g.,
callback_note
) to capture something like "call back after 5pm," then have your external system (webhook receiver or API poller) act on it — for example, triggering an outbound call or SMS to the original caller once the transfer agent's call is analyzed. This doesn't relay the message back into the live main-agent call, but it does let you programmatically capture and act on what happened in the transfer leg after the fact. I don't have documentation confirming a way to feed this post-call data back into an in-progress main agent call — this approach works for post-call follow-up actions (e.g., a second automated call/SMS) , not live relay during the same conversation.
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
​ To learn more, see the sources I considered: [[1] Consume the analysis data](https://docs.retellai.com/features/post-call-analysis-consumption) [[2] Get Call](https://docs.retellai.com/api-references/get-call) ​