Skip to main content
With DNC Detection on, your agent recognizes when a caller asks not to be called again, confirms the request once, and ends the call. Retell then marks the caller’s contact as do-not-call, so outbound calls and campaigns that honor DNC skip that number.

When to use it

Turn it on for any agent that places outbound calls to people who can ask you to stop calling, such as sales outreach, collections, and appointment reminders. Without it, a “please stop calling me” is only as reliable as your prompt, and nothing records the request for the next call. For example, a lead in a reminder campaign says “take me off your list.” The agent confirms, says goodbye, and ends the call. The campaign stops calling that lead, and every other campaign with internal DNC on skips the number too. DNC Detection works on voice agents that use a Retell LLM or a Conversation Flow (including flex mode). It doesn’t apply to custom LLM agents or chat agents. For SMS, see SMS opt-out keywords.

Turn on DNC detection

1

Open the agent's settings

Open your agent, then expand Security & fallback settings.
2

Enable DNC Detection

Turn on DNC Detection. It’s off by default.
To set it through the API, pass enable_dnc_detection: true when you create or update the agent.

How does the agent handle a do-not-call request?

When the caller asks not to be called or contacted again, in any language, the agent doesn’t hang up right away. It asks once:
Understood. Would you like us to stop making calls to this number?
  • If the caller confirms, the agent says “I’ll add your number to our do-not-call list. Thank you. Goodbye.” and ends the call. The call’s disconnection_reason is user_requested_dnc.
  • If the caller declines or it was a misunderstanding, the conversation continues where it left off.
The agent says both lines in the caller’s language. Being busy, asking for a callback, saying they’re not interested, or saying goodbye doesn’t count as a do-not-call request. In a Conversation Flow, Retell adds the request handling as a global node, so it works from any node in the flow.

What happens after the call

For a phone call that ends with user_requested_dnc:
  • The contact is marked. Retell sets do_not_call to true on the contact for the caller’s number (the to_number of an outbound call, the from_number of an inbound call), and creates the contact if it doesn’t exist. Web calls have no phone number, so no contact is marked.
  • Your CRM is updated. With a CRM connected, the change syncs out like any other contact edit.
  • The campaign stops. If the call came from a campaign, the lead gets the do-not-call outcome and no further attempts are scheduled.

Skip do-not-call contacts

Marking a contact doesn’t block calls by itself. These places check the flag: Batch calls and inbound calls don’t check do_not_call.

SMS opt-out keywords

When someone replies to an SMS with a single opt-out keyword, Retell marks their contact as do-not-call and ends the chat. The keywords are STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, REVOKE, OPTOUT, and QUIT, matched without case and with trailing . or ! allowed. A keyword inside a longer message doesn’t count. This applies to your own SMS-enabled numbers, not the shared SMS-approved Retell numbers used for in-call SMS. If a message fails because the recipient has already opted out with the carrier, Retell marks the contact the same way.

FAQ

No. The confirmation question and the goodbye are fixed, and the agent translates them into the caller’s language.
Open the contact on the Contacts page and set Do Not Call to false, or update the contact through the API. Calls, chats, CRM syncs, and imports only ever set the flag to true, so a manual change sticks.
No. The flag only affects outbound calls, SMS, and campaigns that honor DNC.
Retell uses end_call_dnc for this feature. If your agent already has a tool with that name, DNC Detection is skipped for that agent’s calls so your tool keeps working. Rename your tool to use DNC Detection.
Related: Contacts, call disconnection reasons, and handle voicemail and IVR.