New Relic — Internal Guide for Root Cause Analysis
New Relic is BusinessOnBot's system monitoring and API log tool. When a client reports something broken — a campaign not sending, orders not updating, notifications not firing, or analytics stuck — New Relic is where you go to find the exact error, the exact API call that failed, and the exact timestamp it happened.
Think of it as the black box recorder of the entire platform. Every API call BoB makes to Meta, Shopify, and internal services gets logged here with the response it received.
New Relic is an internal tool. If you don't have access, contact your Team Lead to get credentials.
The BoB Ecosystem — Who Talks to Who
Understanding what connects to what helps you know where to look in New Relic.
Client (Brand)
|
↓
BusinessOnBot Platform (Dashboard)
|
├──→ Meta / WhatsApp Business API → Templates, Campaigns, Notifications, Messages
|
├──→ Shopify → Orders, Products, Abandoned Carts, Catalog
|
├──→ RML (BSP / Gateway) → WhatsApp message delivery routing
|
└──→ Internal Services → Analytics, Bot logic, Flow Builder, Notifications
When a client says "campaign failed" or "notification not sent," the failure happened at one of these connection points. New Relic tells you exactly which one and what the error was.
Why Use New Relic (Not Just the Dashboard)?
The BoB dashboard shows you the outcome — whether a message was sent or failed. New Relic shows you the reason — the raw API response, HTTP status code, and error message that caused the failure.
| Scenario | What Dashboard Shows | What New Relic Shows |
|---|---|---|
| Campaign shows "Failed" | ❌ Failed status | The exact Meta API error (e.g., 130429 — rate limit) |
| Order notification not sent | Delivery failed | Which Shopify webhook failed and why |
| Bot not responding | No reply logged | Internal service error or timeout causing silence |
| Analytics not updating | Stale numbers | API call to internal analytics service that returned 500 |
Core Use Cases
1. Tracing a Failed Campaign
When a client reports a campaign that shows "Failed" or partial delivery:
- Get the campaign name, date/time, and the client's Org ID
- Open New Relic → go to Logs or APM → Errors
- Filter by Org ID or campaign ID and the relevant timestamp
- Look for the API call to Meta's
messagesendpoint - Check the response status and error code — map it to the rejection table in WhatsApp Template Reference
Common error codes you'll see:
131049— Per-user marketing limit hit (not a bug — Meta blocked delivery)131026— Message undeliverable (number not on WhatsApp or blocked)130429— Business account rate limit exceeded130472— Meta integration experiment (~1% of users)
2. Tracing a Missing Order Notification
When a client says "Order placed but confirmation not sent":
- Get the Order ID and exact timestamp from Shopify
- In New Relic → search logs for that Order ID
- Trace the webhook from Shopify → BoB → Meta
- Find where the chain broke:
- Did Shopify send the webhook? (check Shopify logs too)
- Did BoB receive it and try to send a notification?
- Did Meta accept or reject the template send?
3. Tracing a Bot Silence (Bot Not Responding)
When a user messages the bot and gets no reply:
- Get the customer number and timestamp of the message
- Search New Relic logs for that number and timestamp
- Look for the inbound message receipt log — confirms BoB received it
- Then trace the flow trigger — did the bot logic execute?
- If flow executed but no reply sent → check the outbound API call to Meta for errors
4. Tracing Shopify Catalog or Abandoned Cart Issues
- Get the product ID or cart session ID
- Filter logs by that ID and the Org ID
- Look for the Shopify sync call — check if the webhook was received and processed
- For abandoned cart: verify the trigger time aligns with the configured delay in Smart Automation
How to Read a New Relic Log Entry
A typical log entry contains:
| Field | What It Means |
|---|---|
timestamp | Exact time the API call was made |
org_id | The client account that triggered it |
service | Which internal BoB service made the call (e.g., notification-service, campaign-worker) |
endpoint | The external API URL called (e.g., Meta messages endpoint, Shopify orders API) |
status_code | HTTP response: 200 = success, 4xx = client error, 5xx = server error |
response_body | The raw response from Meta / Shopify / internal service — the actual error message lives here |
duration_ms | How long the call took — high values indicate timeouts |
Quick Filters for Common Investigations
| What You're Looking For | Filter to Apply |
|---|---|
| All errors for a client | org_id = "CLIENT_ORG_ID" AND level = "error" |
| Meta API failures | service = "whatsapp-sender" AND status_code != 200 |
| Shopify webhook failures | service = "shopify-webhook" AND level = "error" |
| Slow API calls (timeouts) | duration_ms > 5000 |
| Specific campaign | campaign_id = "CAMPAIGN_ID" |
| Specific customer number | phone = "91XXXXXXXXXX" |
When to Use New Relic vs. When to Raise a CRB
| Situation | Action |
|---|---|
| You found a clear Meta error code (e.g., 131049, 131026) | Explain to client — no CRB needed, expected behaviour |
| API call to Meta timed out (no response, duration > 10s) | Raise CRB — potential BSP or Meta infrastructure issue |
| Shopify webhook not received at all | Raise CRB with Shopify webhook log attached |
| Internal BoB service returned 500 | Raise CRB — platform bug |
| Error is clear and documented in SOPs | Resolve at L1 — do not escalate |
| Cannot identify root cause after 15 minutes | Escalate to L2 with New Relic log URL attached |
When raising a CRB or escalating to L2, always copy the New Relic log permalink (not a screenshot). This lets the tech team filter and drill deeper without starting from scratch.
Escalation Checklist
Before escalating any issue, confirm you have checked New Relic for:
- The exact timestamp the failure occurred
- The Org ID and the specific service that failed
- The HTTP status code and full response body
- Whether it's a known Meta error code (see Template Reference)
- Whether the issue is isolated (one client) or widespread (multiple Org IDs)
- The New Relic log permalink to attach to the CRB
Never raise a CRB saying "campaign failed" without first checking New Relic. The tech team will ask for the log anyway — checking it first saves a full escalation cycle.