Skip to main content

Troubleshooting: LINE inbound events never arrive

A LINE user messages your Official Account and nothing happens on your side: no conversation in the Inbox, no message.received webhook delivery. Unlike WhatsApp or RCS, LINE inbound has a single hard gate you control entirely on LINE’s side — the Webhook URL in the LINE Developers Console. Until that URL is set and Use webhook is enabled, LINE holds every event at its side and Orbit receives nothing, no matter how healthy your credentials are. This page is the LINE-scoped sibling of Troubleshooting: inbound WhatsApp or RCS message never arrives; the wider APAC inbound routing matrix is on Troubleshooting: LINE, Kakao, WeChat, and Zalo inbound never arrives.

How LINE inbound is wired

Inbound LINE traffic gates on the LINE Developers Console configuration first, then on Orbit’s per-tenant resolution:
  1. In the LINE Developers Console, open your Messaging API channel and set the Webhook URL to https://api.orbit.devotel.io/api/v1/webhooks/inbound/line, then flip Use webhook on.
  2. LINE posts each event to that URL with the channel’s channel id as destination and an x-line-signature HMAC header.
  3. Orbit resolves the owning organization from that channel id, verifies the signature against the channel secret you connected under Settings → Channels → LINE, and normalizes message-type events onto the standard inbound envelope (channel: "line").
A miss at any one of those stages looks identical from your webhook receiver, so name which gate you lost.

Cause table — where inbound dies

Work rows from the top; each row narrows the cause class.

The full check sequence

  1. Inspect the endpoint’s deliveries. List endpoints with GET /api/v1/webhooks, then read recent deliveries with GET /api/v1/webhooks/{endpoint_id}/deliveries — you want message.received with channel: "line". An empty list means the event never left LINE (steps 2–4); a failed row means your receiver rejected it (subscription or receiver-side issue). Tooling: Inspecting deliveries.
  2. Verify the LINE Developers Console webhook wiring. Open the Messaging API channel → Messaging API tab and confirm the Webhook URL is exactly https://api.orbit.devotel.io/api/v1/webhooks/inbound/line and Use webhook is on. Any other URL (or the toggle off) means LINE delivers nowhere Orbit can see.
  3. Confirm the channel id is connected on the right organization. Compare the channel’s Basic settings → Channel ID value against the connected LINE credentials under Settings → Channels → LINE on the organization that expects the traffic.
  4. Refresh the channel secret if you rotated it. The channel access token and channel secret are separate credentials — a token rotation does not touch the secret, but a secret rotation breaks inbound signature verification until you re-paste it.

Worked example — a first inbound that never fires

You connected LINE yesterday and asked a teammate to message the Official Account. Nothing in the Inbox, nothing in GET /api/v1/webhooks/{id}/deliveries. The fix sequence:
  • Delivery list empty → open the LINE Developers Console and set the Webhook URL + Use webhook. Inbound starts flowing immediately — no reconnect needed.
  • Delivery row failed → your receiver rejected or timed out; fix the handler and replay the delivery.

What not to try

  • Do not reconnect Orbit credentials when the console URL is unset. Pasting a fresh channel access token does nothing for inbound — the events never leave LINE.
  • Do not re-ask the sender to message you. If the console URL was wrong, the event is already lost; have them send again after the wiring is right.
  • Do not register your own webhook endpoint in the LINE Developers Console. The single shared URL …/webhooks/inbound/line is how Orbit resolves tenant routing — a direct URL bypasses the inbound pipeline.
  • Do not expect postbacks (button taps) on message.received. Only message-type events forward through; route button logic through Orbit flows instead.

When to escalate

Open a support ticket when the console URL is set correctly from the start and deliveries still never attempt, or when inbound drops for a channel secret you have confirmed unchanged. Include:
  • The LINE channel id (Numerals under Basic settings → Channel ID).
  • The sender + recipient pair and timestamp of the missed event (with timezone).
  • A screenshot of the Messaging API → Webhook URL configuration panel.
  • The webhook endpoint id if you were expecting message.received deliveries.

See also