https://retellai.com/?utm_source=discord&utm_medium=seo logo
how to make sure that ai agent dont repeat the nod...
# ❓・ai-evy-support
s
@AI Evy how to make sure that ai agent dont repeat the nodes
a
Thanks for tagging me @sahal shamas. I'll look through relevant sources and get back to you shortly.
​ To learn more, see the sources I considered: [[1] How to set up the flow to avoid repeating what was mentioned already](https://discord.com/channels/1186424376300679209/1390655241170456617) ​
### Answer --- To prevent your AI agent from repeating information across nodes in a Conversation Flow, you can use dynamic variables combined with **transition logic**: 1. Use a Set Variable node to mark when specific information has already been mentioned (e.g., set
price_mentioned = "true"
immediately after the agent provides pricing) . [(1) ]() 2. Add a Logic Split or transition condition in subsequent nodes that checks the variable. For example, use an equation condition like
{{price_mentioned}} == "true"
to skip repeating that content. 3. Ensure the variable is treated as a dynamic variable so it persists and is accessible across different branches of your flow. The key is to track state with variables and use Equation Conditions in Transition Logic to control which nodes execute based on what's already been said.
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
### Answer I don't have visibility into your specific AI agent configuration—I can only see the text of our conversation thread, not any attached images, files, or your Retell AI dashboard. To analyze your agent, I'd need you to share details such as: - Your prompt/system instructions - Your Conversation Flow structure (node names, transitions, conditions) - Any dynamic variables you're using - Specific call IDs if you're experiencing issues If you're encountering problems like the agent deviating from your script or repeating nodes, here are general troubleshooting tips based on common issues: 1. Prompt engineering is key—especially the transitions part when using multiple states [(1) ]() 2. Use Retell AI's testing tools to simulate conversations and identify gaps [(2) ]() 3. Track performance metrics like call successful rate and user sentiment to identify areas for improvement [(3) ]() 4. Ensure dynamic variables are passed properly if you're using them via API calls [(1) ]() Feel free to share your agent's configuration details and I can provide more specific guidance.
​ To learn more, see the sources I considered: [[1] Agent follows prompt 100% on Test Audio but deviates a lot when used via API from my live platform](https://discord.com/channels/1186424376300679209/1273558161361469483) [[2] Building AI Agents: The Ultimate Guide for Non-Programmers | Retell AI](https://www.retellai.com/blog/how-to-build-ai-agents-for-beginners) [[3] How to Measure and Track an AI Phone Agent's Performance | Retell AI](https://www.retellai.com/blog/how-to-measure-and-track-an-ai-phone-agents-performance) ​
s
@AI Evy can you set transition condition for the nodes i will give
a
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
### Answer I can help you write transition conditions for your nodes. Please share the following details for each node: 1. Node name/purpose — what the node is meant to accomplish 2. Expected user responses — what the user might say that should trigger a transition 3. *Destination node(s) * — where you want the conversation to go based on different conditions 4. Any dynamic variables you're using Types of transition conditions available: [(1) ]() - Prompt conditions — evaluated by the LLM based on what the user said, e.g.: -
User said something about booking a meeting
-
User declines the invitation
-
User responds to question of their age
- Equation conditions — hardcoded mathematical/logical checks using dynamic variables:
Copy code
{{user_age}} > 18
{{user_location}} == "New York"
{{name}} exists
Once you share your node details, I can suggest appropriate transition conditions for each.
​ To learn more, see the sources I considered: [[1] Step 3: Add transition conditions](https://docs.retellai.com/build/conversation-flow/transition-condition) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
s
@AI Evy objection handling node - Would you consider a service without marketing on google facebook and Instagram? It's only $30 per week Or would you pay just $60 per week and get everything included If you can not afford it , why don't you get started with $30 per week with our thearketing and you can upgrade it later...
a
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
### Answer Based on your objection handling node content, here are suggested prompt-based transition conditions you can use: [(1) ]() Transition 1: User chooses $30/week option
Copy code
User agrees to or shows interest in the $30 per week option without marketing
Transition 2: User chooses $60/week full package
Copy code
User agrees to or shows interest in the $60 per week option with everything included
Transition 3: User still declines/has more objections
Copy code
User declines both options or raises another objection
Transition 4: User asks for more information
Copy code
User asks questions about what's included or wants clarification about the services
Tips for writing effective transition conditions: - Write conditions to be clear and cover all possible cases to ensure smooth transitions - If what the user says doesn't match any condition and can't be handled by a global node, the agent will stay in the current node - Consider using a global node for general objection handling that can be triggered from multiple points in your flow You may also want to add a fallback condition like:
Copy code
User responds to the pricing options in any way
This ensures the agent doesn't get stuck if the user gives an unexpected response.
​ To learn more, see the sources I considered: [[1] Step 3: Add transition conditions](https://docs.retellai.com/build/conversation-flow/transition-condition) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
s
@AI Evy i need connect some nodes and make some nodes global . when i share everything here it doesnt send . how do i send every nodes here
a
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
### Answer ### Sharing Your Flow Configuration Discord has character/message limits that can prevent long messages from sending. Here are some alternatives: 1. Share screenshots — Take screenshots of your Conversation Flow canvas showing the nodes and their connections 2. Share node details one at a time — Instead of everything at once, share each node's: - Node name/purpose - Instruction text - Transition conditions 3. Export via API — If you're comfortable with the API, you can retrieve your conversation flow configuration programmatically [(1) ]() ### Making Nodes Global To set a node as a global node, check the
Global Node
checkbox in the node settings. Any node type can be a global node. [(2) ]() You'll need to set a condition for when the global node should be transitioned to. For example, you can set a condition like
When user indicates this is not a good time to talk
— any time in the call when the user says something matching that condition and the agent is performing a transition, the global node will be triggered. Important limitation: Once a conversation transitions into a Global Node, there is currently no way to return to the original node it was called from — this is an architectural limitation. [(3) ]() ### Connecting Nodes Nodes are connected via edges that define transition conditions between them. Each edge specifies a
destination_node_id
to determine where conversations progress based on user interactions. [(1) ]() Feel free to share your node details in smaller chunks and I can help you configure the transitions and global node settings.
​ To learn more, see the sources I considered: [[1] Create Conversation Flow](https://docs.retellai.com/api-references/create-conversation-flow) [[2] Global Node](https://docs.retellai.com/build/conversation-flow/global-node) [[3] Is it possible to return from the Global Node](https://discord.com/channels/1186424376300679209/1399484507530334368) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
s
@AI Evy what is component . how do i benefit from this. how do i manage multiple nodes with component
a
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
### Answer ### What is a Component? A Component is a mini flow (a group of nodes) that you can build once and reuse across agents and flows. [(1) ]() It's essentially a reusable sub-flow that packages parts of your conversation into a single, manageable unit. [(2) ](

▾

) ### Benefits of Using Components - **Reuse**: Build once, drop into many agents and flows [(1) ]() - **Consistency**: Keep behavior uniform across use cases (e.g., identity verification) - **Clean canvas**: Hide detailed logic inside a focused sub-flow - **Faster iteration**: Update a shared Component to improve every agent that uses it - **Update once, sync everywhere**: Changes propagate to all draft agents instantly [(2) ](

▾

) ### Two Types of Components 1. **Library Components**: Account-level, shared across multiple agents. Edits sync to every agent that uses it. [(1) ]() 2. **Agent Components**: Local to the current agent only. Edits affect this agent only. ### How to Manage Multiple Nodes with Components 1. **Create a Component**: In the Components tab, click + Create. You'll start with a "Begin" node, a basic conversation node, and an "Exit Component" end node. 2. **Build your sub-flow**: Add nodes and connect edges inside the Component. The editing works the same as your main flow. [(2) ](

▾

) 3. **Add to your flow**: Click a Component from the Components tab—a single Component node appears on your canvas. Connect it like any other node. [(1) ]() 4. **Connect in/out**: Link any node to the Component node (entry) ,
and connect the Component's outgoing edge to where the conversation should continue (exit) . ### Best Practices - Keep Components focused: One clear job (e.g., "Collect Shipping Address") - Name clearly: Use action + outcome (e.g., "Verify Identity") - Always set a start node and include an end node to exit cleanly - Use dynamic variables to pass captured data back to the main flow Components are perfect for your scenario—you can group related nodes (like objection handling sequences) into a Component and reuse it across multiple agents without duplicating work.
​ To learn more, see the sources I considered: [[1] Components](https://docs.retellai.com/build/conversation-flow/components) [[2] Build Reusable AI Agent Flows and Functions with Components - Retell Tutorial & Demo](

https://www.youtube.com/watch?v=1_UcCXdIqic▾

) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
s
@AI Evy i have a closing node . do i want to set it as component
a
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
### Answer Whether to make your closing node a Component depends on your use case: When to make it a Component: - If you have multiple agents that need the same closing logic - If your closing sequence involves multiple nodes (e.g., summary → confirmation → goodbye) - If you want to update the closing behavior across all agents at once When NOT to make it a Component: - If it's a simple End Node that just ends the call with a goodbye message - If the closing logic is unique to this specific agent - If it's just a single node Based on your earlier conversation, if your closing node is just ending the call (like saying goodbye) , you can simply use an End Node with the "Speak During Execution" setting enabled to have the agent say something like "Goodbye, have a nice day" before ending the call. [(1) ]() Components are most valuable when you have reusable multi-node sequences that you want to share across agents. A single End Node doesn't typically benefit from being a Component. Recommendation: If your closing is just one node that ends the call, keep it as a regular End Node. If it involves multiple steps (recap, confirmation, goodbye) , consider making it a Component for reusability.
​ To learn more, see the sources I considered: [[1] End Node](https://docs.retellai.com/build/conversation-flow/end-node) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
s
@AI Evy i am only using one agent
a
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
### Answer If you're only using one agent, Components are less beneficial for your use case. The main advantages of Components are: [(1) ]() - **Reuse**: Build once, drop into many agents and flows - **Faster iteration**: Update a shared Component to improve every agent that uses it Since you have a single agent, you won't benefit from the cross-agent reusability that Components provide. For your closing node specifically: If it's a simple closing sequence, keep it as a regular node or End Node within your main flow. There's no need to add the complexity of a Component. **When Components would still help with one agent:** - If you want to reuse the same sub-flow in multiple places within that single agent's flow - If you want a cleaner canvas by hiding detailed logic inside a focused sub-flow For your scenario (single agent, closing node) , I'd recommend keeping your closing as a standard End Node rather than creating a Component.
​ To learn more, see the sources I considered: [[1] Components](https://docs.retellai.com/build/conversation-flow/components) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
s
@AI Evy I understand. Would your partner or family be open to discussing this idea? What if we think of this as a team effort so more customers can scan and place orders easily, turning more tables and increasing your revenue?” . what condition do i use for this
a
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
### Answer --- For this node where you're asking about involving a partner/family and framing it as a team effort, here are suggested **prompt-based transition conditions**: [(1) ]() Transition 1: User agrees to involve partner/family
Copy code
User agrees to discuss with their partner or family, or shows openness to the team effort idea
Transition 2: User declines or says they make decisions alone
Copy code
User declines to involve others or states they are the sole decision maker
Transition 3: User shows interest in the value proposition
Copy code
User responds positively to the revenue/table turnover benefits mentioned
Transition 4: User raises another objection or concern
Copy code
User raises a new objection or expresses hesitation about the proposal
Transition 5: User asks for more information
Copy code
User asks questions about how the system works or wants clarification
Tip: To ensure smooth transitions, cover all possible cases in your conditions. If what the user says doesn't match any condition and can't be handled by a global node, the agent will stay in the current node.
​ To learn more, see the sources I considered: [[1] Step 3: Add transition conditions](https://docs.retellai.com/build/conversation-flow/transition-condition) ​
s
@AI Evy can i just put "when the user is interested " transition condition
a
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
### Answer --- Yes, you can use a simple prompt condition like
When user indicates they are interested
. [(1) ]() However, more specific conditions are recommended to ensure reliable transitions. The documentation suggests writing conditions that are clear and cover specific cases. Examples of clearer prompt conditions: -
User said something about booking a meeting
-
User declines the invitation
-
User responds to question of their age
Why more specific is better: - A vague condition like "when the user is interested" may be harder for the LLM to evaluate consistently - The agent may struggle to distinguish between mild curiosity vs. genuine buying interest - If no transition condition is met, the agent will stay in the current node Recommendation: Try something more specific like: -
User agrees to proceed or shows clear buying interest
-
User asks about next steps or how to sign up
-
User responds positively to the proposal
If you've observed incorrect transitions, you can prompt engineer the conditions or add transition finetune examples to improve accuracy.
​ To learn more, see the sources I considered: [[1] Step 3: Add transition conditions](https://docs.retellai.com/build/conversation-flow/transition-condition) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
s
@AI Evy how to connect phone number to new agent for outbound calls
a
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
### Answer --- To connect a phone number to a new agent for outbound calls, you need to bind the agent to your phone number using the
outbound_agent_id
parameter. [(1) ]() Option 1: When creating a new phone number
Copy code
javascript
import Retell from 'retell-sdk';
const client = new Retell({
  apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const phoneNumberResponse = await client.phoneNumber.create({
  area_code: 415,
  outbound_agent_id: 'oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD',
}) ;
[(2) ]() Option 2: Update an existing phone number
Copy code
javascript
import Retell from 'retell-sdk';
const client = new Retell({
  apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const phoneNumberResponse = await client.phoneNumber.update('+14157774444', {
  outbound_agent_id: 'oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD',
}) ;
[(3) ]() Replace
oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD
with your new agent's ID. Key parameters: [(1) ]() - `outbound_agent_id`: The agent that will be used when making calls from this number - `inbound_agent_id`: The agent for incoming calls (set separately if needed) You can use different agents for inbound vs outbound, or configure outbound only by leaving
inbound_agent_id
unset.
​ To learn more, see the sources I considered: [[1] Outbound Calls (Make Calls)](https://docs.retellai.com/deploy/outbound-call) [[2] Create Phone Number](https://docs.retellai.com/api-references/create-phone-number) [[3] Update Phone Number](https://docs.retellai.com/api-references/update-phone-number) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
### Answer Hi! It looks like you just tagged me without a specific question. Based on our previous conversation about connecting a phone number to a new agent for outbound calls, is there something else you'd like help with? Feel free to ask about: - Transition conditions for your nodes - Component setup - Phone number configuration - Outbound call setup - Any other Retell AI questions
message has been deleted
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
s
c
@AI Evy i have uploaded a screenshot
a
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
### Answer ### Answer I can see you mentioned uploading a screenshot, but I'm not able to view images or screenshots in this chat. To help you with your Conversation Flow or agent setup, please share the details in text form: - Node names and their purposes - Instruction text for each node - Transition conditions you're using - Which nodes you want to connect or make global Alternatively, you can export your Conversation Flow as JSON and share relevant portions. You can import/export agent configurations using the import agent feature in the dashboard. [(1) ]() Let me know what specific help you need with your nodes or flow configuration!
​ To learn more, see the sources I considered: [[1] Conversation Flow: Import / Upload JSON](https://discord.com/channels/1186424376300679209/1394595851942367252) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
s
@AI Evy Calls ended with error: Invalid Destination: 11 Dial No Answer: 18 Dial Busy: 1. i have upoade a file of 639 and it ended with error
a
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
### Answer --- Based on your batch call results, here's what each error means: [(1) ]() | Disconnection Reason | Description | |---------------------|-------------| |
invalid_destination
| Destination phone number is invalid or malformed | |
dial_no_answer
| Number dialed did not answer | |
dial_busy
| Number dialed is busy | For your 639 contacts: - 11 Invalid Destination — These phone numbers are likely malformed, unreachable, or not in valid E.164 format - 18 Dial No Answer — Recipients didn't answer (this is normal behavior) - 1 Dial Busy — The line was busy Troubleshooting steps: 1. Check your contact list format — Ensure all phone numbers are in E.164 format (e.g.,
+14157774444
) [(2) ]() 2. Review invalid numbers — The 11 invalid destination errors suggest those numbers need to be corrected or removed from your list 3. Check call history logs — Go to your Retell Dashboard → Call History → click on failed calls to view the detailed log and SIP error codes [(1) ]() 4. Dial no answer is expected — 18 out of 639 not answering is normal for outbound campaigns The majority of your calls (609 out of 639) appear to have connected or had expected outcomes. The 11 invalid destinations are the main issue to address by validating those phone numbers in your contact list.
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 @trxgames9630 on 2025-12-17](https://discord.com/channels/1186424376300679209/1294891368505937952/1450680465643016278) [[2] 404 Error on Create a Phone Call](https://retell.discourse.group/t/404-error-on-create-a-phone-call/22) ​
s
@AI Evy why its not dialing rest of the numbers
a
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
### Answer ### Answer Based on your batch of 639 contacts, you mentioned only 30 calls ended with errors (11 Invalid Destination + 18 Dial No Answer + 1 Dial Busy) . To understand why the remaining calls aren't dialing, I need more information: Possible reasons: 1. Concurrency limit reached — If you hit your concurrency limit, calls will fail with
concurrency_limit_reached
error [(1) ]() 2. No valid payment — Calls fail with
no_valid_payment
if there's a billing issue 3. Batch dialer still processing — Large batches may take time to complete all calls 4. Numbers marked as spam — If your outbound number experiences high volume without warmup or has low pickup rates, it may get blocked by carriers [(2) ]() To diagnose: 1. Check your Call History in the Retell Dashboard for the remaining calls' status and disconnection reasons 2. Look for any
concurrency_limit_reached
or
no_valid_payment
errors [(1) ]() 3. Verify your batch dialer status to see if calls are queued or completed Can you share: - What does the batch dialer status show for the remaining numbers? - Are there any other error types showing in your call history? - What's your current concurrency limit? This will help identify why the rest of the numbers aren't being dialed.
​ To learn more, see the sources I considered: [[1] Debug call disconnection](https://docs.retellai.com/reliability/debug-call-disconnect) [[2] Debug outbound connection issues](https://docs.retellai.com/reliability/debug-outbound-call) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
s
@AI Evy how to set knowledge base for conversational flow agent
a
​ To learn more, see the sources I considered: [[1] Step 1: Configure global settings](https://docs.retellai.com/build/conversation-flow/global-setting) [[2] Create Conversation Flow](https://docs.retellai.com/api-references/create-conversation-flow) [[3] Knowledge Base](https://docs.retellai.com/build/knowledge-base) ​
### Answer --- ### Answer To set up a knowledge base for a Conversation Flow agent, you have two options: *Option 1: Via the Dashboard (Global Settings) * 1. Click on empty canvas and click setting to access global setting [(1) ]() 2. Navigate to the Knowledge Base section 3. Supply contexts to your agent via documents, URLs, or texts Option 2: Via API When creating or updating a Conversation Flow, use the
knowledge_base_ids
parameter:
Copy code
javascript
import Retell from 'retell-sdk';
const client = new Retell({
  apiKey: 'YOUR_RETELL_API_KEY',
}) ;
const conversationFlowResponse = await client.conversationFlow.create({
  model_choice: { model: 'gpt-4.1', type: 'cascading' },
  nodes: [
    {
      id: 'start',
      instruction: { text: 'Greet the customer and ask how you can help them.', type: 'prompt' },
      type: 'conversation',
    },
  ],
  start_speaker: 'agent',
  knowledge_base_ids: ['kb_001', 'kb_002'],
}) ;
[(2) ]() Node-Level Knowledge Base: For Conversation Flow agents, you can also configure knowledge base at the Conversation Node level: [(3) ]() 1. Open the agent editor 2. Click the Conversation Node you want to configure 3. Select and add the knowledge base items for that specific node Node-level knowledge base will be combined with agent global knowledge base to provide more accurate context for a specific topic. KB Configuration Options: You can also set
kb_config
to control retrieval: [(2) ]() - `top_k`: Max number of chunks to retrieve (1-10, default: 3) - `filter_score`: Similarity threshold (default: 0.6)
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
s
@AI Evy if user asks any other questions other than in the nodes will the agent check knowledge base and answer
a
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
### Answer --- Yes, the agent will automatically check the knowledge base regardless of which node the conversation is in. [(1) ]() When a knowledge base is linked to an agent, the agent will always try to retrieve information from the knowledge base before responding. There's no need to change your prompt for it to trigger, as it will be done automatically, for every response generation. The retrieval process uses the transcript so far (prompt is not included) to find the most relevant chunks from the knowledge base, and feeds them to the LLM as context. Key points: - Knowledge base retrieval happens automatically on every response generation - Retrieved content is appended to the LLM prompt under the header
## Related Knowledge Base Contexts
- This works for both global (agent-level) and node-level knowledge bases To control behavior for questions outside your nodes: If you want the agent to only answer from the knowledge base and not make up answers, you can add this to your prompt:
Copy code
Only answer using the information in ## Related Knowledge Base Contexts.
If ## Related Knowledge Base Contexts is missing or does not contain relevant information, respond:
"There is no related information in knowledge base."
​ To learn more, see the sources I considered: [[1] Knowledge Base](https://docs.retellai.com/build/knowledge-base) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
s
@
@AI Evy why my all calls say user declined in batch calls
a
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
### Answer When all your batch calls show
user_declined
, it means the recipients explicitly declined/rejected the incoming call. [(1) ]() [(2) ]() What
user_declined
means:
- The callee manually declined the call (e.g., pressed the decline button on their phone) [(1) ]() - SIP status code 603 (GLOBAL_DECLINE) indicates the user rejected the call [(3) ]() Possible causes: 1. Caller ID appears suspicious — Recipients may be declining because they don't recognize the number or it appears as spam [(1) ]() 2. Number marked as spam — If your outbound number has high call volume without warmup or low pickup rates, carriers may flag it, causing recipients to see spam warnings and decline 3. Calling the same numbers repeatedly — One Discord user experiencing similar issues was asked if they were dialing the same number for all calls [(3) ]() Troubleshooting steps: 1. Check call history logs — Review the detailed log for SIP error codes and messages [(1) ]() 2. Verify your caller ID — Ensure your outbound number has a legitimate caller ID display 3. Consider number verification — Register your number with Retell's spam remediation feature (verified phone number) to prevent spam flagging 4. Warm up new numbers — Slowly add outbound traffic to new numbers before high-volume campaigns 5. Increase pickup rate — Review best practices at [Increase Pickup Rate](http
s://docs.retellai.com/build/telephony/call_efficiency_overview) Are you calling the same number for all these calls, or different numbers? That detail would help narrow down the issue.
​ To learn more, see the sources I considered: [[1] Debug outbound connection issues](https://docs.retellai.com/reliability/debug-outbound-call) [[2] Debug call disconnection](https://docs.retellai.com/reliability/debug-call-disconnect) [[3] Discord message from @safa_cases_88416 on 2025-08-14](https://discord.com/channels/1186424376300679209/1294891368505937952/1405557902432800880) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
a
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
### Answer Hi! It looks like you tagged me without a specific question. Based on our previous conversation about batch calls showing
user_declined
, is there something else you'd like help with? Feel free to ask about: - Batch call troubleshooting - Knowledge base setup for Conversation Flow agents - Node transitions and configuration - Phone number setup for outbound calls - Any other Retell AI questions
message has been deleted
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
s
is there something with the csv file i upload
@sahal shamas is there something with the csv file i upload. ID phone number ignore e164 restaurant_name 1 +61291882266 false Mase and Co
@AI Evy is there something with the csv file i upload. ID phone number ignore e164 restaurant_name 1 +61291882266 false Mase and Co
a
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
### Answer --- Looking at your CSV structure, there's a potential issue with your column header. The documentation specifies the column should be named
phone number
(with a space) , and for the e164 validation override, it should be
ignore e164 validation
. [(1) ]() Your current headers: -
phone number
✓ (appears correct) -
ignore e164
❌ (should be
ignore e164 validation
) Required CSV format per documentation: - Header row must include a
phone number
column - If you want to ignore e164 validation, add a column named
ignore e164 validation
with value
true
- The
ignore e164 validation
option only applies when using custom telephony, not Retell Telephony For dynamic variables: - Add additional columns in the CSV with custom data for each recipient - A column header like
restaurant_name
can be referenced as
{{restaurant_name}}
in your agent prompt Suggested fix: Change your column header from
ignore e164
to
ignore e164 validation
and ensure the value is
true
(not
false
, since
false
is the default behavior anyway) . Also verify you're using custom telephony if you need to bypass e164 validation—this feature does not apply when using Retell Telephony.
​ To learn more, see the sources I considered: [[1] Create Batch calls](https://docs.retellai.com/deploy/make-batch-call) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
s
@AI Evy is this issue of user declining
a
### Answer The
user_declined
disconnection reason is not related to your CSV file format. It specifically means the recipients explicitly declined/rejected the incoming call. [(1) ]()
user_declined
represents cases where the user explicitly declined the call—for example, pressing the decline button on their phone. Your CSV format issue is separate. The column header problem (
ignore e164
vs
ignore e164 validation
) could cause validation errors or
invalid_destination
errors, but it would not cause
user_declined
results. Why you're seeing `user_declined`: The recipients are actively rejecting your calls. This typically happens when: , [(2) ]() - Your caller ID appears suspicious or unfamiliar to recipients - Your number has been flagged as "Spam Likely" by carriers - High call frequency without number warmup triggers spam filters - Low engagement rates signal spam behavior to carriers To address the
user_declined
issue:
1. Register your number as verified to prevent spam flagging [(3) ]() 2. Warm up new numbers before high-volume campaigns—slowly add outbound traffic [(1) ]() 3. Consider branded caller ID so recipients recognize your business name [(4) ]() 4. Limit call frequency and spread calls over time [(2) ]() The CSV column header fix is still recommended for proper validation, but it won't resolve the
user_declined
issue—that requires addressing your caller ID reputation.
​ To learn more, see the sources I considered: [[1] Debug outbound connection issues](https://docs.retellai.com/reliability/debug-outbound-call) [[2] How to Avoid Getting Tagged as Spam Likely for AI Calls | Retell AI](https://www.retellai.com/blog/how-to-avoid-getting-tagged-as-spam-likely-for-your-ai-calls) [[3] Apply for verified phone number](https://docs.retellai.com/build/telephony/verified-phone) [[4] Branded Caller ID for Trusted Business Calls | Retell AI](https://www.retellai.com/blog/branded-caller-ids-and-verified-phone-numbers) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
s
@AI Evy can you tell me how to do this all
a
### Answer Here's a step-by-step guide to address your
user_declined
issues and improve your batch call success rate: ## 1. Fix Your Number's Spam Reputation When a number experiences high outbound call volume spike without any warmup, and/or has a low pickup rate, it might be marked as spam by carriers. [(1) ]() To remedy this: - Purchase a new number and warm it up before pouring all traffic to it (slowly add outbound traffic to it) - Register the number with spam remediation — read more at [verified phone number]() - Increase the pickup rate — read more at [Increase Pickup Rate]() ## 2. Consider Branded Caller ID Platforms that support branded caller IDs and verified phone numbers help ensure calls are delivered, trusted, and picked up. [(2) ]() This displays your business name instead of just a phone number, increasing trust and reducing declines. ## 3. Fix Your CSV Format For your batch calls, ensure your CSV follows the correct format: [(3) ]() - Header row must include a
phone number
column - For dynamic variables, add additional columns with custom data for each recipient (e.g., a column header
first_name
can be referenced as
{{first_name}}
) - If bypassing e164 validation, name the column
ignore e164 validation
(not
ignore e164
) with value
true
— this only applies when using custom telephony ## 4. Warm Up Your Numbers Gradually Don't pour all traffic to a new number immediately. Slowly increase outbound volume over time to build carrier trust. [(1) ]() ## 5. Verify Yo
ur Account (If Not Done) One user experienced batch calls stuck because their account verification wasn't completed. Ensure your phone number tab shows verified status. [(4) ]() Summary: The
user_declined
issue is primarily a caller ID reputation problem. Focus on number verification, branded caller ID, and gradual warmup to improve pickup rates.
​ To learn more, see the sources I considered: [[1] Debug outbound connection issues](https://docs.retellai.com/reliability/debug-outbound-call) [[2] 2025 B2B Guide to AI Phone Calls & Voice Agents | Retell AI | Retell AI](https://www.retellai.com/blog/b2b-guide-to-ai-phone-calls) [[3] Create Batch calls](https://docs.retellai.com/deploy/make-batch-call) [[4] Batch Call Stuck "Ongoing"](https://discord.com/channels/1186424376300679209/1427421729260834866) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
s
@AI Evy which settings to do it
a
Thanks for the follow-up, @sahal shamas. I'll get back to you soon.
​ To learn more, see the sources I considered: [[1] Branded Caller ID for Trusted Business Calls | Retell AI](https://www.retellai.com/blog/branded-caller-ids-and-verified-phone-numbers) ​
### Answer Here's how to set up Verified Phone Number and Branded Caller ID in Retell AI: [(1) ]() ## Setting Up Verified Phone Number 1. In your Retell AI workspace, navigate to the Phone Numbers section on the left-hand menu 2. Click on the plus (+) icon next to the "Phone Numbers" list to add a new number or connect an existing one 3. After selecting or adding a phone number, locate Advanced Add-Ons and find the Verified Phone Number option 4. Click Set Up next to "Verified Phone Number" 5. You will be prompted to fill in your Business Profile information 6. Click the dropdown menu and select Add Business Profile if this is your first time 7. Complete the fields accurately, as this information will be used to verify your business's legitimacy 8. Click Next to proceed—Retell AI will review the information for verification ## Setting Up Branded Caller ID 1. Go to the Phone Numbers section in the left sidebar 2. Select the phone number you wish to configure for branded calls 3. Under Advanced Add-Ons, click Set Up next to Branded Call 4. Under Business Profile, select or add your business information 5. Fill in your Business Name for T-Mobile and AT&T (up to 32 characters) and for Verizon (up to 15 characters) 6. Click Next to complete the setup Once verified, your business name will display as the caller ID on outbound calls, helping recipients recognize your brand and reducing
user_declined
results.
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.