Twilio: "undelivered" SMS stays on two grey ticks in 3CX (30045 parse error)

Doug_BHA

Customer
Joined
Oct 29, 2026
Messages
2
Reaction score
0

OUR SETUP:​

  • 3CX: V20 Update 9 (20.0.9.995), Enterprise PLUS, hosted by 3CX
  • Twilio trunk: created with the 3CX auto-configure wizard. SMS has worked both ways for months.
  • Twilio webhook: the 3CX trunk webhook is set only on "A message comes in" (HTTP POST).
  • Number format: E.164 everywhere, in both 3CX and Twilio

3CX CHAT CHECKS/TICKS​

We couldn't find this documented anywhere, so this is our reading from using the web client. Please confirm or correct it:

TicksOur understanding
One greyNot delivered
Two greyDelivered to the provider (Twilio accepted it)
Two blueDelivered to the handset (Twilio delivered receipt received)
Red / FailedProvider rejected the send (e.g. invalid number)


OBSERVED​

  • A SMS Twilio later reports as undelivered (handset off or unreachable, errors 30003 and 30008) stays on two grey ticks permanently.
  • When Twilio reports a message as undelivered, we expected it to drop to one grey tick or show Failed, so the sender knows to follow up.
  • Staff read two grey as "sent fine", so nobody knows the customer never got it.
  • In the same threads, later texts to the same numbers turn two blue, so delivered receipts are clearly processed.
  • When the undelivered receipt arrives, 3CX can't parse it and logs event 30045 instead of updating the message:

Code:
Unable to parse message from provider twilio. Error: Unknown message received: {
  "ApiVersion": "2010-04-01",
  "MessageStatus": "undelivered",
  "RawDlrDoneDate": "2610300902",
  "SmsSid": "SMxxxxxxxx",
  "SmsStatus": "undelivered",
  "ErrorCode": "30003",
  "To": "+614xxxxxxxx",
  "From": "+614xxxxxxxx",
  "MessageSid": "SMxxxxxxxx",
  "AccountSid": "ACxxxxxxxx"
}

QUESTIONS​

  1. Is our reading of the ticks correct, and is it documented anywhere?
  2. Is Twilio's undelivered callback meant to update the message status in the chat?
  3. Is there anything we need to set up so 3CX handles these callbacks, instead of logging them as 30045 in the Event Log?
 
Last edited:
Ticks:
One grey --> Message sent from PBX
Two grey --> Delivered to provider
Two blue --> Delivered to recipient
Red X --> Failed

In your scenario the PBX sends the SMS to Twilio which receives it. Twilio then tries to send it to the recipient but cannot so we do not get delivery confirmation so the status stays at 2 gray ticks. 2 gray ticks essentially means undelivered.
If the ticks do not turn blue then you cannot assume that the message was delivered.
 
  • Like
Reactions: Alejandro_3CX
Thanks so much for the quick response, really appreciate it. That clears up the ticks, and we’ll train staff that only blue = delivered.

One follow-up: we do get a status from Twilio in this case. The log above shows Twilio’s callback reaching 3CX with MessageStatus: undelivered / ErrorCode: 30003, but 3CX logs it as 30045 (unable to parse) instead of using it. If 3CX handled that status and showed the red X, staff could tell a failed message from one still in transit, which two grey can’t do.

Do you know if this is already on the roadmap? If not, would it be worth posting as a feature request somewhere? Apologies if this isn’t the right place to raise it.
 

Forum statistics

Threads
112,404
Messages
592,357
Members
165,585
Latest member
ITSRCP