Do not call
Outbound calls are checked against this list before the carrier is asked to dial: a campaign and a single call placed over the API both go through it. A transfer to another number during a call is not checked. The list belongs to your organization, not to one agent or one campaign.
Numbers are stored in international (E.164) form, so a number added the way it appears on one contact list still matches when it arrives spelled another way.
Add numbers to this list in international form, with the country code
(+905321234567, not 0532 123 45 67). A number written without one is completed
against a platform default country, not against any campaign's caller ID, so a
national-format entry can be stored as a number in a different country and never
match the person you meant.
How a number gets on the list
Three ways:
- You add one. From the do-not-call page, or over the API.
- You import a list. A bulk add, usually an export from your own CRM.
- An agent records one during a phone call. The agent has a built-in tool for exactly this, alongside ending a call and transferring one. It is offered on phone calls only, since those are the calls that have a number to suppress.
The agent's tool is deliberately passive. It fires when the person says plainly that they do not want to be called again, and it never asks, because prompting for an opt-out puts the idea in front of people who were not thinking about it. You do not have to add anything to the prompt for this to work, and adding a question about it is the one thing that makes it worse.
Every entry keeps how it got there as its source: agent, manual (added one at a
time, from the page or over the API) or import. Adding, importing, changing the
reach of and removing entries are all recorded in the
audit log.
How far an entry reaches
Someone who refused marketing has not refused a call about their own order. Blocking every call on either kind of request would mean deciding something they never said, so each entry carries its own reach:
- Every call. The default for a request an agent recorded, because those are the person's own words.
- Marketing only. The default for an entry you add or import, because those are usually an operational record rather than something the person stated.
You can change either one, and the change is recorded against whoever made it - narrowing a request an agent recorded is the organization deciding what someone meant.
Which of these a given campaign honours is a campaign setting. Calls placed over the API always honour the whole list: they cannot say what kind of call they are.
Managing the list
await glytos.dnc.add('+15551230000', 'asked on a call');
await glytos.dnc.import(['+15551230001', '+15551230002'], 'CRM export');
// Allow a transactional call about this person's own order.
await glytos.dnc.setScope('+15551230000', 'marketing');
const { items, total } = await glytos.dnc.list({ search: '+1555123' });
await glytos.dnc.remove('+15551230000');glytos.dnc.add("+15551230000", reason="asked on a call")
glytos.dnc.import_(["+15551230001", "+15551230002"], reason="CRM export")
# Allow a transactional call about this person's own order.
glytos.dnc.set_scope("+15551230000", "marketing")
page = glytos.dnc.list(search="+1555123")
glytos.dnc.remove("+15551230000")$glytos->dnc->add('+15551230000', 'asked on a call');
$glytos->dnc->import(['+15551230001', '+15551230002'], 'CRM export');
// Allow a transactional call about this person's own order.
$glytos->dnc->setScope('+15551230000', 'marketing');
$page = $glytos->dnc->list(search: '+1555123');
$glytos->dnc->remove('+15551230000');await glytos.Dnc.AddAsync("+15551230000", "asked on a call");
await glytos.Dnc.ImportAsync(new[] { "+15551230001", "+15551230002" }, "CRM export");
// Allow a transactional call about this person's own order.
await glytos.Dnc.SetScopeAsync("+15551230000", "marketing");
var page = await glytos.Dnc.ListAsync(search: "+1555123");
await glytos.Dnc.RemoveAsync("+15551230000");client.Dnc.Add(ctx, "+15551230000", "asked on a call")
client.Dnc.Import(ctx, []string{"+15551230001", "+15551230002"}, "CRM export")
// Allow a transactional call about this person's own order.
client.Dnc.SetScope(ctx, "+15551230000", "marketing")
page, _ := client.Dnc.List(ctx, glytos.DncListParams{Search: "+1555123"})
client.Dnc.Remove(ctx, "+15551230000")glytos dnc add +15551230000 --reason "asked on a call"
glytos dnc import --file suppressed.txt # one number per line
# Allow a transactional call about this person's own order.
glytos dnc scope +15551230000 marketing
glytos dnc list --search +1555123
glytos dnc remove +15551230000Adding a number that is already on the list returns the existing entry rather than failing, and leaves it as it was: the first entry keeps its original source, reason and reach. That holds for a request an agent records too, so if you had already listed a number as marketing-only, the person asking on a call does not widen it to every call. Check the entry and change its reach if that is what they asked for.
Search matches part of a stored number. Search with the international form, or a
leading part of it such as +1555123, to find entries.
What a suppressed contact looks like
In a campaign, a suppressed contact is marked as such rather than as a failure, so it neither reads as a problem nor counts toward the failure limit that halts a campaign. Before you start, you can see how many contacts each policy would reach - including how many of those people asked on a call not to be contacted.
A do-not-call list is one part of what outbound calling is regulated on, and the rules differ by country. Glytos gives you the controls and the record; the obligation is yours.