Troubleshooting
Overview
Section titled “Overview”Use this page when send results aren’t what you expected. Start with what to check for each symptom, then see the behavior behind it further down. For causes on the API side, go through the API integration guide with your development team.
Check by symptom
Section titled “Check by symptom”The message can’t be saved
Section titled “The message can’t be saved”Go through the When saving is rejected table in order.
A value was sent blank
Section titled “A value was sent blank”- The field name in the message exactly matches the response (including case)
- If the API takes JSON via POST, you included
:content_type application/json - The value in the URL wasn’t broken by special characters (
url_encode) - No invisible spaces slipped in when you copied and pasted the URL
- Whether the circuit breaker was active
- The API meets the JSON header, 2xx response, 2 second, and 1MB conditions (check with your development team)
A send to a recipient was recorded as failed
Section titled “A send to a recipient was recorded as failed”- The credential’s name, type, and allowed domain match the request URL
- Whether
{% abort_message %}ran (failure reason: “Personalization syntax aborted”) - Whether a Liquid render error occurred at send time
No requests reached your server at all
Section titled “No requests reached your server at all”- Whether the circuit breaker was active
- The URL is reachable from outside and uses a standard port (80 or 443)
:headersis a JSON object- The message was actually sent (not rejected on save or failed)
Blocked by a firewall (403 and similar)
Section titled “Blocked by a firewall (403 and similar)”- FlareLane’s outbound IPs are on your allowlist
- Requests with
User-Agent: FlareLane-ConnectedContent/1.0aren’t being blocked
More or fewer API calls than expected
Section titled “More or fewer API calls than expected”- One call is made per instruction. Each field counts separately.
- If processing is retried after an error, the same recipient may be called again.
- Response reuse (cache) can reduce calls. For how reuse works, see Set up response reuse.
When a call fails
Section titled “When a call fails”In most cases the message is sent with the value blank, but in some cases the recipient isn’t sent the message at all.
| Situation | Result |
|---|---|
| API call failed (over 2 seconds, non-2xx response, over 1MB, invalid JSON, unreachable URL, circuit breaker active) | Sent with the value blank |
| No credential, or the type or allowed domain doesn’t match | Send fails for that recipient SMS and Kakao failure reason: “Connected Content credential error” |
{% abort_message %} ran | Not sent to that recipient · counted as a failed send, not billed SMS and Kakao failure reason: “Personalization syntax aborted” |
| Liquid render error at send time | Send fails for that recipient |
Circuit breaker
Section titled “Circuit breaker”If an API keeps failing, FlareLane stops calling that API server for a while and sends the value blank. This helps the failing server recover and keeps each send from being delayed by 2 seconds per call. Writing fallback text with default: keeps you covered.
| Item | Details |
|---|---|
| Scope | Decided separately for each project and API server (domain) |
| Trigger | More than 100 failures within 1 minute, with a failure rate above 90% |
| What counts as a failure | Over 2 seconds or connection failure, and 408, 429, 502, 503, 504, or 529 responses Other errors such as 404 or 500 mean the server is up, so they don’t count |
| Block duration | 1 minute |
| Resume | After 1 minute, if 3 test calls all succeed, calls resume. If not, it’s blocked for another minute |