You are calling customers who asked to be called, from a number you legitimately own, and half of them see “Spam Likely” before they decline. Nothing you did was wrong, and the fix is not obvious, because the thing labeling you is not your carrier.
Who actually applies the label
Three different systems are involved, and people conflate them.
STIR/SHAKEN is the signing framework. Your originating carrier attaches a cryptographic attestation saying how confident it is that you are entitled to use the number you are presenting. It does not label anything.
Analytics engines decide the label. Companies like First Orion, Hiya and TNS score calls and feed those scores to the terminating carriers. They use the attestation as one input among many.
The terminating carrier shows the result on the handset. AT&T, Verizon and T-Mobile each choose what to display and when.
So “my carrier is marking me as spam” is almost never what is happening. Your carrier signs; someone else scores; a third party displays.
What attestation levels mean
- A, full attestation. The carrier knows who you are and confirms you are authorized to use the number. This is what you want.
- B, partial attestation. The carrier knows who you are, but cannot vouch for your right to that specific number.
- C, gateway attestation. The carrier is passing the call on and can vouch for very little.
A-level does not guarantee a clean display, and B-level does not guarantee a bad one. But over a large volume the difference is real, and if you are getting C on your own numbers, something in the setup is wrong.
Why legitimate numbers still get flagged
Attestation is only one signal. The scoring engines also look at behavior:
- Short average call duration. A high proportion of calls under a few seconds reads as a dialler, whether or not it is one.
- Low answer rate, which becomes self-reinforcing once the label appears.
- High volume from a brand-new number. A number with no history that suddenly makes thousands of calls looks exactly like what a spammer does.
- Number rotation. Cycling through many numbers to stay ahead of labeling is the single strongest spam signal there is.
- Consumer complaints, which weigh heavily and take time to age out.
- Calls to disconnected or reassigned numbers, which suggest a stale list.
Notice that most of these are about how you dial, not who you are.
The fixes, in the order worth doing them
1. Confirm you are getting A-level attestation. Ask your provider directly. If you are not, find out why. Usually it is because the numbers were not issued by them and no verification is in place for numbers you bring.
2. Register your numbers for branded calling or with the analytics engines. Each major engine has a free registration and dispute process. This is tedious, manual, and the highest-return thing on this list.
3. Stop rotating numbers. Use a small, stable set and let them build history. Rotation feels like a workaround and is actually the fastest route to being labeled.
4. Make your numbers answerable. If someone calls back, it should ring somewhere real. Unanswered callbacks hurt your score and, depending on how you are dialling, may breach FCC rules.
5. Fix the dialling behavior. Cut abandoned calls, scrub against reassigned numbers, and stop calling lists that generate complaints. The scoring engines are measuring outcomes, so the durable fix is to change the outcomes.
6. Check your consent position under the TCPA. If people are complaining, the labeling is a symptom rather than the disease.
What to expect afterwards
Labels do not clear overnight. Reputation is historical, so a number with a bad few weeks needs a good few weeks. Teams that do the list above typically see movement over one to two months, not days. Anyone promising an instant fix is selling number rotation with extra steps.
Where we come in
We sign outbound traffic with STIR/SHAKEN attestation, and for numbers we issue you that means A-level. We will also tell you plainly when the problem is not the attestation but the dialling pattern, because replacing your carrier will not fix that.