outSms.instance.<name>.<key> — see Property tiers. Every worker also has
the base settings.
Connecting
Bind counts
Counts apply across normal,
extra.hosts and backup.hosts.
A session may carry traffic out if it is a transceiver, or a transmitter on a client session.
A receiver-only vendor binds successfully and sends nothing — which is why the panel reports
bound_transmittable separately from bound. If they differ, that is the reason.Keep-alive and timeouts
Retry classification
ESME_RSUBMITFAIL (0x45, decimal 69) is treated as permanent: a lane refused with it fails on
the first answer rather than after roughly twenty. Carriers that mean transient overload by it are
opted back in per vendor with status.retry.worker = 20,88,69.
Receipts
Turning it off means this vendor stops reporting outcomes, so every message through it settles as
EXPIRED at the deadline rather than DELIVERED or FAILED — and your delivery rate for that vendor
becomes meaningless rather than zero.TLVs
Delivery receipt error codes
Both are vendor properties, not listener ones:
630 from one carrier and 630 from another are
unrelated numbers in unrelated spaces, so a gateway-wide table would be wrong for every carrier but
the one it was written for.
They answer different questions. dlr.errcodes says what 630 means. dlr.errcodes.passthrough
says whether a code you have never named may reach the customer at all.
What happens to a code you have not listed
By default it becomes018, unknown. FireFlo’s own vocabulary is a 38-value list and anything
outside it is collapsed — so a telco that reported err:630 had that replaced with the one value a
customer cannot act on, and the original was gone before anything recorded it.
Set dlr.errcodes.passthrough = true and an unlisted code reaches the customer unchanged. A
listed code is unaffected either way: mapping still applies with passthrough off, and passthrough
does not change what a mapped code resolves to.
What the carrier said is always kept, whatever both settings say.
cdr_final.vendor_err_code
holds the raw code verbatim, beside err_code which holds FireFlo’s reading of it. So a mapping set
wrongly is corrected by editing the line rather than by having lost the evidence. Rows written before
0.8.10 have vendor_err_code NULL — it was not backfilled, because those rows genuinely do not know.err: and over the REST webhook’s err
field, so the two populations are told the same thing about one failure.
Inbound messages
See Webhooks for the egress settings that govern the forward.