Skip to content

reported_undelivered

Your own latest report for the number was a failed delivery

The Spaw phone risk signal reported_undelivered adds 50 points to risk_score when the latest report your own account sent for the number within the last 90 days was a failed delivery about the number itself, with no delivery or verification reported after it (dataset delivery-feedback).

risk weight
+50
dataset
delivery-feedback
reads from
no field of its own
default SMS policy
does not block it on its own: +50 is within the default ceiling of 60, which blocks only a score above it.

What it means

An undelivered report sent to POST /api/v1/phone/feedback may name the failure class your SMS provider's error code gives. permanent, transient and failures sent without a class count here. not_sms_capable (a landline) and sender_side (a carrier filter, an unregistered sender, a rate limit: your side of the send) are kept and counted in the feedback summary, never scored. The dataset is delivery-feedback.

A delivered or verified report dated after the failure cancels it, so a number that failed once while the handset was off stops scoring as soon as a later message gets through. Failures also feed your suppression list: one permanent failure suppresses the number at once, other failures need two with no delivery after them.

What it cannot tell you

  • It cannot tell you why a message failed beyond the class you reported.
  • It reads only your own reports: another account's failures never reach your answer.

What to do

If the failure was transient, retry later rather than dropping the number; if failures repeat, stop sending. On its own it scores 50 and passes the default SMS policy, which blocks a score above 60; beside other signals the score can pass that.

The SMS policy is set per account with PUT /api/v1/phone/policy or the dashboard’s SMS policy tab, and its block_signals may list any signal, this one included; the phone guide lists every rule and its default.

Example response

An excerpt of an answer carrying this signal alone, with the number and the other fields left out, because no test number answers it. The score and the decision are worked out as the lookup and the default SMS policy work them out.

{
    "valid": true,
    "country": "GB",
    "line_type": "mobile",
    "line_type_source": "numbering_plan",
    "risk_score": 50,
    "risk_level": "medium",
    "risk_signals": [
        {
            "signal": "reported_undelivered",
            "weight": 50,
            "dataset": "delivery-feedback"
        }
    ],
    "ok_to_send": true,
    "blocked_by": null
}

A real answer carries every field, listed in the validate-phone reference; the weights of every entry in risk_signals sum to risk_score, capped at 100.

Related

markdown version: /docs/signals/phone/reported_undelivered.md